RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.critterbot.environment; 00002 00003 import java.util.List; 00004 00005 import rlpark.plugin.critterbot.CritterbotProblem; 00006 import rlpark.plugin.critterbot.actions.CritterbotAction; 00007 import rlpark.plugin.critterbot.data.CritterbotLabels; 00008 import rlpark.plugin.rltoys.envio.observations.ObsFilter; 00009 import zephyr.plugin.core.api.monitoring.abstracts.DataMonitor; 00010 import zephyr.plugin.core.api.monitoring.abstracts.Monitored; 00011 00012 public class CritterbotEnvironments { 00013 public static void addObservationsLogged(final CritterbotProblem problem, DataMonitor loggedManager) { 00014 ObsFilter filter = CritterbotLabels.newDefaultFilter(problem.legend()); 00015 List<String> labelsToLog = filter.legend().getLabels(); 00016 for (String label : labelsToLog) { 00017 final int obsIndex = problem.legend().indexOf(label); 00018 loggedManager.add(label, new Monitored() { 00019 @Override 00020 public double monitoredValue() { 00021 double[] o_t = problem.lastReceivedObs(); 00022 if (o_t == null) 00023 return -1; 00024 return o_t[obsIndex]; 00025 } 00026 }); 00027 } 00028 } 00029 00030 public static void addActionsLogged(final CritterbotEnvironment environment, DataMonitor loggedManager) { 00031 for (int i = 0; i < 3; i++) { 00032 String label = String.format("a[%d]", i); 00033 final int actionIndex = i; 00034 loggedManager.add(label, new Monitored() { 00035 @Override 00036 public double monitoredValue() { 00037 CritterbotAction a_t = environment.lastAction(); 00038 if (a_t == null || a_t.actions == null) 00039 return -1; 00040 return a_t.actions[actionIndex]; 00041 } 00042 }); 00043 } 00044 loggedManager.add("ActionMode", new Monitored() { 00045 @Override 00046 public double monitoredValue() { 00047 CritterbotAction a_t = environment.lastAction(); 00048 if (a_t == null) 00049 return -1; 00050 return a_t.motorMode.ordinal(); 00051 } 00052 }); 00053 } 00054 }