RLPark 1.0.0
Reinforcement Learning Framework in Java

Parameters.java

Go to the documentation of this file.
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 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark