/**
*
*/
package vroom.trsp.sandbox;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import vroom.common.utilities.logging.LoggerHelper;
import vroom.common.utilities.math.SimpleStats;
import vroom.trsp.bench.TRSPBench;
import vroom.trsp.bench.TRSPRunBase;
import vroom.trsp.datamodel.TRSPInstance;
import vroom.trsp.datamodel.TRSPRequest;
import vroom.trsp.util.TRSPGlobalParameters;
/**
* <code>ReleaseDateAnalyzer</code>
* <p>
* Creation date: Jun 20, 2012 - 10:23:30 AM
*
* @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los Andes</a>-<a
* href="http://copa.uniandes.edu.co">Copa</a> <a href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a
* href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a>
* @version 1.0
*/
public class ReleaseDateAnalyzer {
/**
* JAVADOC
*
* @param args
*/
public static void main(String[] args) {
LoggerHelper.setupRootLogger(LoggerHelper.LEVEL_WARN, LoggerHelper.LEVEL_LOW_DEBUG, true);
TRSPGlobalParameters params = new TRSPGlobalParameters();
try {
params.loadParameters(new File("./config/bench/bench_dtrsp_mpa_25crew.cfg"));
// params.set(TRSPGlobalParameters.RUN_INSTANCE_FOLDER, "../Instances/trsp/pillac/crew25");
// params.set(TRSPGlobalParameters.RUN_REL_DATE_FOLDER,
// "../Instances/trsp/pillac/crew25/dyn");
// params.set(TRSPGlobalParameters.RUN_DODS, new int[] { 10, 30, 50, 70, 90 });
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
TRSPBench.setup(params, true, "");
TRSPBench.getInstance().createRuns();
HashMap<String, SimpleStats> avgLatest = new HashMap<>();
HashMap<String, SimpleStats> rdGroupStats = new HashMap<>();
SimpleStats rdStats = new SimpleStats();
System.out.println("name;group;dod;mean_rd;min_rd;max_rd;90p;95p");
for (TRSPRunBase run : TRSPBench.getInstance().getRuns()) {
TRSPInstance i = run.getInstance();
if (!avgLatest.containsKey(i.getGroup())) {
avgLatest.put(i.getGroup(), new SimpleStats());
rdGroupStats.put(i.getGroup(), new SimpleStats());
}
double dod = i.getDod();
SimpleStats stats = new SimpleStats();
for (TRSPRequest r : i.getRequests()) {
double rd = r.getReleaseDate();
if (rd > 0) {
stats.addValue(rd);
rdStats.addValue(rd / i.getMainDepot().getTimeWindow().endAsDouble());
rdGroupStats.get(i.getGroup()).addValue(
rd / i.getMainDepot().getTimeWindow().endAsDouble());
}
}
avgLatest.get(i.getGroup()).addValue(stats.max());
System.out.printf("%s;%s;%.0f;%.1f;%.1f;%.1f;%.4f;%.4f \n", i.getName(), i.getGroup(),
dod * i.getRequestCount(), stats.mean(), stats.min(), stats.max(),
stats.percentile(90) / i.getMainDepot().getTimeWindow().endAsDouble(),
stats.percentile(95) / i.getMainDepot().getTimeWindow().endAsDouble());
}
System.out.println("================================");
System.out.println("Group Median Latest 90-p");
ArrayList<String> keys = new ArrayList<>(avgLatest.keySet());
Collections.sort(keys);
for (String g : keys) {
System.out.printf(" %3s : %7.1f %7.1f %7.1f \n", g, avgLatest.get(g).mean(), avgLatest
.get(g).median(), rdGroupStats.get(g).percentile(90) * 100);
}
System.out.println("================================");
System.out.printf("mean:%7.1f median:%7.1f 90-percentile:%7.1f stdDev:%7.3f",
rdStats.mean() * 100, rdStats.median() * 100, rdStats.percentile(90) * 100,
rdStats.stdDev());
}
}