RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.rltoys.algorithms.representations.discretizer.avebins; 00002 00003 import rlpark.plugin.rltoys.algorithms.representations.discretizer.Discretizer; 00004 import rlpark.plugin.rltoys.math.averages.MeanVar; 00005 00006 public class AveBins implements Discretizer { 00007 private static final long serialVersionUID = -782566775380769598L; 00008 private final MeanVar[] averages; 00009 00010 public AveBins(MeanVar prototype, int nbBins) { 00011 averages = new MeanVar[nbBins]; 00012 for (int i = 0; i < averages.length; i++) 00013 averages[i] = prototype.newInstance(); 00014 } 00015 00016 @Override 00017 public int discretize(double input) { 00018 int begin = 0; 00019 int end = averages.length - 1; 00020 while (begin != end) { 00021 int position = (begin + end) / 2; 00022 MeanVar meanVar = averages[position]; 00023 meanVar.update(input); 00024 if (input <= meanVar.mean()) 00025 end = position; 00026 else 00027 begin = position + 1; 00028 } 00029 return begin; 00030 } 00031 00032 @Override 00033 public int resolution() { 00034 return averages.length; 00035 } 00036 }