RLPark 1.0.0
Reinforcement Learning Framework in Java

MovingAverage.java

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