RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.rltoys.math.averages; 00002 00003 import java.io.Serializable; 00004 00005 import rlpark.plugin.rltoys.utils.Utils; 00006 import zephyr.plugin.core.api.monitoring.annotations.Monitor; 00007 00008 public class MovingAverage implements Serializable { 00009 private static final long serialVersionUID = -303484486232439250L; 00010 private final double alpha; 00011 private double average = 0.0; 00012 @Monitor 00013 private double d = 0.0; 00014 @Monitor 00015 protected double movingAverage = 0.0; 00016 00017 public MovingAverage(int timeSteps) { 00018 alpha = 1.0 - Utils.timeStepsToDiscount(timeSteps); 00019 } 00020 00021 public MovingAverage(double tau) { 00022 this.alpha = tau; 00023 } 00024 00025 public double update(double value) { 00026 average = (1 - alpha) * average + alpha * value; 00027 d = (1 - alpha) * d + alpha; 00028 movingAverage = average / d; 00029 return value; 00030 } 00031 00032 public double average() { 00033 return movingAverage; 00034 } 00035 00036 public void reset() { 00037 average = 0.0; 00038 d = 0.0; 00039 movingAverage = 0.0; 00040 } 00041 00042 public double d() { 00043 return d; 00044 } 00045 00046 public double alpha() { 00047 return alpha; 00048 } 00049 }