diff --git a/jsprit-analysis/src/main/java/analysis/ConcurrentBenchmarker.java b/jsprit-analysis/src/main/java/analysis/ConcurrentBenchmarker.java index 8457f5ae..8642074c 100644 --- a/jsprit-analysis/src/main/java/analysis/ConcurrentBenchmarker.java +++ b/jsprit-analysis/src/main/java/analysis/ConcurrentBenchmarker.java @@ -37,6 +37,7 @@ import algorithms.VehicleRoutingAlgorithms; import basics.VehicleRoutingAlgorithm; import basics.VehicleRoutingProblem; import basics.VehicleRoutingProblemSolution; +import basics.algo.VehicleRoutingAlgorithmFactory; import basics.algo.VehicleRoutingAlgorithmListeners.Priority; public class ConcurrentBenchmarker { @@ -47,7 +48,7 @@ public class ConcurrentBenchmarker { - private String algorithmConfig; + private String algorithmConfig = null; private List benchmarkInstances = new ArrayList(); @@ -65,6 +66,8 @@ public class ConcurrentBenchmarker { } }; + + private VehicleRoutingAlgorithmFactory algorithmFactory; public void setCost(Cost cost){ this.cost = cost; } @@ -74,6 +77,10 @@ public class ConcurrentBenchmarker { Logger.getRootLogger().setLevel(Level.ERROR); } + public ConcurrentBenchmarker(VehicleRoutingAlgorithmFactory algorithmFactory){ + this.algorithmFactory = algorithmFactory; + } + public void addBenchmarkWriter(BenchmarkWriter writer){ writers.add(writer); } @@ -94,6 +101,12 @@ public class ConcurrentBenchmarker { benchmarkInstances.add(new BenchmarkInstance(name,problem,bestKnownResult,bestKnownVehicles)); } + /** + * Sets nuOfRuns with same algorithm on same instance. + *

Default is 1 + * + * @param runs + */ public void setNuOfRuns(int runs){ this.runs = runs; } @@ -142,11 +155,11 @@ public class ConcurrentBenchmarker { double[] times = new double[runs]; for(int run=0;run solutions = vra.searchSolutions(); - VehicleRoutingProblemSolution best = Solutions.getBest(solutions); + VehicleRoutingProblemSolution best = Solutions.bestOf(solutions); vehicles[run] = best.getRoutes().size(); results[run] = cost.getCost(best); times[run] = stopwatch.getCompTimeInSeconds(); @@ -155,6 +168,16 @@ public class ConcurrentBenchmarker { return new BenchmarkResult(p, runs, results, times, vehicles); } + private VehicleRoutingAlgorithm createAlgorithm(BenchmarkInstance p) { + if(algorithmConfig != null){ + return VehicleRoutingAlgorithms.readAndCreateAlgorithm(p.vrp, algorithmConfig); + } + else{ + return algorithmFactory.createAlgorithm(p.vrp); + } + + } + private void print(Collection results) { double sumTime=0.0; double sumResult=0.0;