RLPark 1.0.0
Reinforcement Learning Framework in Java

LogFiles.java

Go to the documentation of this file.
00001 package rlpark.plugin.critterbot.crtrlog;
00002 
00003 import java.io.File;
00004 
00005 import rlpark.plugin.critterbot.data.CritterbotLabels;
00006 import rlpark.plugin.rltoys.envio.observations.Legend;
00007 import rlpark.plugin.rltoys.math.ranges.Range;
00008 import rlpark.plugin.rltoys.utils.Utils;
00009 
00010 public class LogFiles {
00011   static private int nbSamples;
00012   static private int nbSkipSamples;
00013 
00014   public static Range[] extractRanges(CrtrLogFile logFile, Range[] ranges, boolean filterSamples) {
00015     int errorFlagIndex = filterSamples ? logFile.legend().indexOf(CritterbotLabels.ErrorFlags) : -1;
00016     nbSamples = 0;
00017     nbSkipSamples = 0;
00018     while (logFile.hasNextStep()) {
00019       double[] o_tp1 = logFile.step();
00020       if (errorFlagIndex != -1 && o_tp1[errorFlagIndex] != 0 && o_tp1[errorFlagIndex] != 32768) {
00021         nbSkipSamples++;
00022         continue;
00023       }
00024       for (int i = 0; i < o_tp1.length; i++)
00025         ranges[i].update(o_tp1[i]);
00026       nbSamples++;
00027     }
00028     logFile.close();
00029     return ranges;
00030   }
00031 
00032   static public Range[] extractRanges(String filepath, boolean filterSamples) {
00033     CrtrLogFile logFile = CrtrLogFile.load(filepath);
00034     Legend legend = logFile.legend();
00035     Range[] ranges = new Range[legend.nbLabels()];
00036     for (int i = 0; i < ranges.length; i++)
00037       ranges[i] = new Range(Double.MAX_VALUE, -Double.MAX_VALUE);
00038     return extractRanges(logFile, ranges, filterSamples);
00039   }
00040 
00041   public static Range[] extractRanges(CrtrLogFile logFile, boolean filterSamples) {
00042     return extractRanges(logFile.filepath, filterSamples);
00043   }
00044 
00045   public static Range[] extractRanges(CrtrLogFile logFile) {
00046     return extractRanges(logFile.filepath, true);
00047   }
00048 
00049   public static Range[] extractRanges(String[] files, boolean filterSamples) {
00050     Range[] ranges = extractRanges(files[0], true);
00051     int totalNbSamples = nbSamples;
00052     int totalNbSkipSamples = nbSkipSamples;
00053     for (int i = 1; i < files.length; i++) {
00054       CrtrLogFile logFile = CrtrLogFile.load(files[i]);
00055       extractRanges(logFile, ranges, filterSamples);
00056       totalNbSamples += nbSamples;
00057       totalNbSkipSamples += nbSkipSamples;
00058     }
00059     nbSamples = totalNbSamples;
00060     nbSkipSamples = totalNbSkipSamples;
00061     return ranges;
00062   }
00063 
00064   public static Range[] loadRange(String rangeFilePath, boolean filterSamples, String... files) {
00065     File rangeFile = new File(rangeFilePath);
00066     if (rangeFile.canRead())
00067       return (Range[]) Utils.load(rangeFile);
00068     Range[] ranges = extractRanges(files, filterSamples);
00069     Utils.save(ranges, rangeFile);
00070     return ranges;
00071   }
00072 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark