RLPark 1.0.0
Reinforcement Learning Framework in Java

IncMeanVarNormalizer.java

Go to the documentation of this file.
00001 package rlpark.plugin.rltoys.math.normalization;
00002 
00003 import rlpark.plugin.rltoys.math.averages.IncrementalAverage;
00004 import rlpark.plugin.rltoys.math.averages.MeanVar;
00005 
00006 public class IncMeanVarNormalizer implements Normalizer, MeanVar {
00007   private static final long serialVersionUID = -7117059874975759612L;
00008   private final int minNbUpdate;
00009   private final IncrementalAverage average = new IncrementalAverage();
00010 
00011   public IncMeanVarNormalizer() {
00012     this(5);
00013   }
00014 
00015   public IncMeanVarNormalizer(int minNbUpdate) {
00016     this.minNbUpdate = minNbUpdate;
00017   }
00018 
00019   @Override
00020   final public double normalize(double x) {
00021     if (average.nbSample() < minNbUpdate)
00022       return 0.0;
00023     if (average.var() == 0.0)
00024       return 0.0;
00025     return (x - average.mean()) / Math.sqrt(average.var());
00026   }
00027 
00028   @Override
00029   public void update(double x) {
00030     average.update(x);
00031   }
00032 
00033   @Override
00034   public IncMeanVarNormalizer newInstance() {
00035     return new IncMeanVarNormalizer(minNbUpdate);
00036   }
00037 
00038   @Override
00039   public double mean() {
00040     return average.mean();
00041   }
00042 
00043   @Override
00044   public double var() {
00045     return average.var();
00046   }
00047 
00048   public IncrementalAverage average() {
00049     return average;
00050   }
00051 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark