RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.rltoys.problems.mazes; 00002 00003 import rlpark.plugin.rltoys.algorithms.functions.stateactions.StateToStateAction; 00004 import rlpark.plugin.rltoys.algorithms.functions.stateactions.TabularAction; 00005 import rlpark.plugin.rltoys.algorithms.functions.states.Projector; 00006 import rlpark.plugin.rltoys.envio.actions.Action; 00007 import rlpark.plugin.rltoys.math.vector.RealVector; 00008 00009 public class MazeProjector { 00010 private final Maze maze; 00011 private final StateToStateAction toStateAction; 00012 private final Projector projector; 00013 00014 public MazeProjector(Maze maze) { 00015 this(maze, maze.getMarkovProjector()); 00016 } 00017 00018 public MazeProjector(Maze maze, Projector projector) { 00019 this(maze, projector, new TabularAction(maze.actions(), projector.vectorNorm(), projector.vectorSize())); 00020 } 00021 00022 public MazeProjector(Maze maze, Projector projector, StateToStateAction toStateAction) { 00023 this.maze = maze; 00024 this.toStateAction = toStateAction; 00025 this.projector = projector; 00026 } 00027 00028 public RealVector toState(int x, int y) { 00029 return projector.project(new double[] { x, y }); 00030 } 00031 00032 public RealVector stateAction(RealVector x, Action a) { 00033 return toStateAction.stateAction(x, a); 00034 } 00035 00036 public Maze maze() { 00037 return maze; 00038 } 00039 00040 public StateToStateAction toStateAction() { 00041 return toStateAction; 00042 } 00043 00044 public Projector projector() { 00045 return projector; 00046 } 00047 }