RLPark 1.0.0
Reinforcement Learning Framework in Java

SmoothPuddle.java

Go to the documentation of this file.
00001 package rlpark.plugin.rltoys.problems.puddleworld;
00002 
00003 import rlpark.plugin.rltoys.algorithms.functions.ContinuousFunction;
00004 import rlpark.plugin.rltoys.utils.Utils;
00005 
00006 
00007 public class SmoothPuddle implements ContinuousFunction {
00008   private final int[] patternIndexes;
00009   private final double[] meanValues;
00010   private final double[] varianceValues;
00011 
00012   public SmoothPuddle(int[] patternIndexes, double[] meanValues, double[] stddevValues) {
00013     this.patternIndexes = patternIndexes;
00014     this.meanValues = meanValues;
00015     varianceValues = new double[patternIndexes.length];
00016     for (int i = 0; i < stddevValues.length; i++) {
00017       varianceValues[i] = stddevValues[i] * stddevValues[i];
00018       assert varianceValues[i] > 0;
00019     }
00020   }
00021 
00022   @Override
00023   public double value(double[] input) {
00024     double result = 1.0;
00025     for (int i = 0; i < patternIndexes.length; i++)
00026       result *= normalDistribution(input[patternIndexes[i]], meanValues[i], varianceValues[i]);
00027     assert Utils.checkValue(result);
00028     return result;
00029   }
00030 
00031   private double normalDistribution(double x, double mu, double var) {
00032     double diff = x - mu;
00033     return (1.0 / Math.sqrt(2 * Math.PI * var)) * Math.exp(-(diff * diff) / (2 * var));
00034   }
00035 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark