RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.rltoys.algorithms.representations.discretizer.avebins; 00002 00003 import java.io.Serializable; 00004 00005 import rlpark.plugin.rltoys.math.averages.MeanVar; 00006 import rlpark.plugin.rltoys.math.vector.BinaryVector; 00007 import rlpark.plugin.rltoys.math.vector.implementations.BVector; 00008 00009 public class AveBinsTree implements Serializable { 00010 private static final long serialVersionUID = -7079039075980716444L; 00011 public final int size; 00012 private final AveBins[] allAveBins; 00013 00014 public AveBinsTree(MeanVar prototype, int nbBins) { 00015 this(prototype, nbBins, 2); 00016 } 00017 00018 public AveBinsTree(MeanVar prototype, int nbBins, int divisor) { 00019 allAveBins = new AveBins[(int) (Math.log(nbBins) / Math.log(divisor))]; 00020 int currentNbBins = nbBins; 00021 int index = 0; 00022 while (currentNbBins > 1) { 00023 allAveBins[index] = new AveBins(prototype, currentNbBins); 00024 currentNbBins /= divisor; 00025 index++; 00026 } 00027 size = computeSize(); 00028 } 00029 00030 private int computeSize() { 00031 int result = 0; 00032 for (AveBins aveBins : allAveBins) 00033 result += aveBins.resolution(); 00034 return result; 00035 } 00036 00037 public BinaryVector toBinary(double x) { 00038 BVector result = new BVector(size); 00039 int offset = 0; 00040 for (AveBins aveBins : allAveBins) { 00041 result.setOn(aveBins.discretize(x) + offset); 00042 offset += aveBins.resolution(); 00043 } 00044 return result; 00045 } 00046 }