RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.rltoys.agents.functions; 00002 00003 00004 import rlpark.plugin.rltoys.algorithms.functions.stateactions.StateToStateAction; 00005 import rlpark.plugin.rltoys.algorithms.functions.states.Projector; 00006 import rlpark.plugin.rltoys.envio.actions.Action; 00007 import rlpark.plugin.rltoys.math.ranges.Range; 00008 import rlpark.plugin.rltoys.math.vector.RealVector; 00009 00010 public class VectorProjection2D extends FunctionProjected2D { 00011 private final StateToStateAction toStateAction; 00012 private final Action[] actions; 00013 00014 public VectorProjection2D(Range xRange, Range yRange, Projector projector) { 00015 this(xRange, yRange, projector, null, null); 00016 } 00017 00018 public VectorProjection2D(Range xRange, Range yRange, Projector projector, StateToStateAction toStateAction, 00019 Action[] actions) { 00020 super(projector, xRange, yRange); 00021 this.toStateAction = toStateAction; 00022 this.actions = actions; 00023 } 00024 00025 public double value(RealVector vector, double x, double y) { 00026 RealVector projected = projector.project(new double[] { x, y }); 00027 if (projected.getDimension() == vector.getDimension()) 00028 return vector.dotProduct(projected); 00029 double sum = 0.0; 00030 if (toStateAction == null) 00031 return sum; 00032 for (Action a : actions) 00033 sum += vector.dotProduct(toStateAction.stateAction(projected, a)); 00034 return sum; 00035 } 00036 }