diff --git a/src/main/java/jobshop/Main.java b/src/main/java/jobshop/Main.java index 9714da8..81f1b3a 100644 --- a/src/main/java/jobshop/Main.java +++ b/src/main/java/jobshop/Main.java @@ -108,8 +108,12 @@ public class Main { } output.println(); + ArrayList makespans = new ArrayList<>(); + // for all instances, load it from f for(String instanceName : instances) { + + // get the best known result for this instance int bestKnown = BestKnownResults.of(instanceName); @@ -118,16 +122,16 @@ public class Main { Instance instance = Instance.fromFile(path); // print some general statistics on the instance - output.println(); - output.println(); - output.println("\u001b[36m" + "------------------------------------------------------------------------" + "\u001b[0m"); + output.println("\u001b[36m" + "------------------------------------------------------------------------------------------------------------------" + "\u001b[0m"); output.printf("%-8s %-5s %4d ",instanceName, instance.numJobs +"x"+instance.numTasks, bestKnown); - output.println(); + + // used to get a csv file of all compared makespans + ArrayList instanceMakespans = new ArrayList<>(); // run all selected solvers on the instance and print the results for(int solverId = 0 ; solverId < solvers.size() ; solverId++) { // Select the next solver to run. Given the solver name passed on the command line, - // we lookup the `Main.solvers` hash map to get the solver object with the given name. + // we look up the `Main.solvers` hash map to get the solver object with the given name. Solver solver = solvers.get(solverId); // start chronometer and compute deadline for the solver to provide a result. @@ -153,11 +157,22 @@ public class Main { avg_distances[solverId] += dist / (float) instances.size(); output.printf("%7d %8s %5.1f ", runtime, makespan, dist); + instanceMakespans.add(makespan); output.flush(); } + + makespans.add(instanceMakespans.toArray(Integer[]::new)); output.println(); } + // used to get a csv file of all compared makespans + for(Integer[] i : makespans){ + for (Integer j : i){ + System.out.printf("%8s,", j); + } + System.out.println(); + } + // we have finished all benchmarks, compute the average solve time and distance of each solver. output.printf("%-8s %-5s %4s ", "AVG", "-", "-");