RLPark 1.0.0
Reinforcement Learning Framework in Java

RBF.java

Go to the documentation of this file.
00001 package rlpark.plugin.rltoys.algorithms.representations.rbf;
00002 
00003 import rlpark.plugin.rltoys.algorithms.functions.ContinuousFunction;
00004 
00005 
00006 public class RBF implements ContinuousFunction {
00007   private final int[] patternIndexes;
00008   private final double[] patternValues;
00009   private final double variance;
00010 
00011   public RBF(int[] patternIndexes, double[] patternValues, double stddev) {
00012     this.patternIndexes = patternIndexes;
00013     this.patternValues = patternValues;
00014     this.variance = stddev * stddev;
00015   }
00016 
00017   @Override
00018   public double value(double[] input) {
00019     double distance = 0.0;
00020     for (int i = 0; i < patternIndexes.length; i++) {
00021       double diff = patternValues[i] - input[patternIndexes[i]];
00022       distance += diff * diff;
00023     }
00024     return Math.exp(-distance / (2 * variance));
00025   }
00026 
00027   public int[] patternIndexes() {
00028     return patternIndexes;
00029   }
00030 
00031   public double[] patternValues() {
00032     return patternValues;
00033   }
00034 
00035   @Override
00036   public String toString() {
00037     StringBuilder builder = new StringBuilder("[");
00038     for (int i = 0; i < patternIndexes.length; i++) {
00039       builder.append(patternIndexes[i]);
00040       builder.append(":");
00041       builder.append(patternValues[i]);
00042       if (i < patternIndexes.length - 1)
00043         builder.append(",");
00044     }
00045     builder.append("]");
00046     return builder.toString();
00047   }
00048 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark