RLPark 1.0.0
Reinforcement Learning Framework in Java

AveBinsTree.java

Go to the documentation of this file.
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 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark