RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package rlpark.plugin.rltoys.experiments.parametersweep.parameters; 00002 00003 import java.util.ArrayList; 00004 import java.util.LinkedHashMap; 00005 import java.util.List; 00006 import java.util.Map; 00007 00008 public class Parameters extends AbstractParameters { 00009 private static final long serialVersionUID = -3022547944186532000L; 00010 public static final String ComputationTime = "ComputationTime"; 00011 public static final String PerformanceCumulatedMeasured = "CumulatedMeasured"; 00012 public static final String PerformanceSliceMeasured = "SliceMeasured"; 00013 public static final String PerformanceStart = "Start"; 00014 public static final String PerformanceNbCheckPoint = "NbCheckPoint"; 00015 public static final int DefaultNbPerformanceCheckpoints = 20; 00016 00017 public Parameters(RunInfo infos) { 00018 super(infos); 00019 } 00020 00021 public Parameters(AbstractParameters parameters) { 00022 super(parameters.infos(), parameters.parameters, parameters.results); 00023 } 00024 00025 public boolean putSweepParam(String label, double value) { 00026 return parameters.put(label, value) != null; 00027 } 00028 00029 public static List<Parameters> combine(List<Parameters> existing, String label, double[] values) { 00030 assert existing.size() > 0; 00031 List<Parameters> combination = new ArrayList<Parameters>(); 00032 for (Parameters parameters : existing) { 00033 for (double value : values) { 00034 Parameters combinedParameters = new Parameters(parameters); 00035 if (combinedParameters.putSweepParam(label, value)) 00036 throw new RuntimeException(label + " already set"); 00037 combination.add(combinedParameters); 00038 } 00039 } 00040 return combination; 00041 } 00042 00043 public FrozenParameters froze() { 00044 return new FrozenParameters(infos(), parameters, results); 00045 } 00046 00047 public static List<Parameters> filter(List<Parameters> parameters, String... filters) { 00048 Map<String, Double> filterMap = new LinkedHashMap<String, Double>(); 00049 for (String filterString : filters) { 00050 int equalIndex = filterString.indexOf('='); 00051 filterMap.put(filterString.substring(0, equalIndex), Double.parseDouble(filterString.substring(equalIndex + 1))); 00052 } 00053 List<Parameters> result = new ArrayList<Parameters>(); 00054 for (Parameters parameter : parameters) { 00055 boolean satisfy = true; 00056 for (Map.Entry<String, Double> entry : filterMap.entrySet()) { 00057 if (!parameter.hasKey(entry.getKey())) 00058 continue; 00059 double parameterValue = parameter.get(entry.getKey()); 00060 if (parameterValue != entry.getValue()) { 00061 satisfy = false; 00062 break; 00063 } 00064 } 00065 if (satisfy) 00066 result.add(parameter); 00067 } 00068 return result; 00069 } 00070 00071 public void setComputationTimeMillis(long computationTime) { 00072 putResult(ComputationTime, computationTime); 00073 } 00074 00075 public long getComputationTimeMillis() { 00076 return (long) get(ComputationTime); 00077 } 00078 00079 public static void set(List<Parameters> parameters, String label, double value) { 00080 for (Parameters p : parameters) 00081 p.putSweepParam(label, value); 00082 } 00083 }