diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java index cf6b04b5..4bbce211 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/io/VrpXMLWriter.java @@ -30,6 +30,8 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.util.Solutions; +import com.graphhopper.jsprit.core.util.VehicleIndexComparator; + import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.XMLConfiguration; import org.apache.xml.serialize.OutputFormat; @@ -44,6 +46,7 @@ import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @@ -188,7 +191,9 @@ public class VrpXMLWriter { for (VehicleRoutingProblemSolution solution : solutions) { xmlConfig.setProperty(solutionPath + "(" + counter + ").cost", solution.getCost()); int routeCounter = 0; - for (VehicleRoute route : solution.getRoutes()) { + List list = new ArrayList(solution.getRoutes()); + Collections.sort(list , new VehicleIndexComparator()); + for (VehicleRoute route : list) { // xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").cost", route.getCost()); xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").driverId", route.getDriver().getId()); xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").vehicleId", route.getVehicle().getId()); @@ -427,3 +432,4 @@ public class VrpXMLWriter { } + diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java index 7cb4905c..c9d299a1 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java @@ -26,6 +26,9 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** @@ -149,7 +152,10 @@ public class SolutionPrinter { out.format("+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+%n"); out.printf("| route | vehicle | activity | job | arrTime | endTime | costs |%n"); int routeNu = 1; - for (VehicleRoute route : solution.getRoutes()) { + + List list = new ArrayList(solution.getRoutes()); + Collections.sort(list , new com.graphhopper.jsprit.core.util.VehicleIndexComparator()); + for (VehicleRoute route : list) { out.format("+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+%n"); double costs = 0; out.format(leftAlgin, routeNu, getVehicleString(route), route.getStart().getName(), "-", "undef", Math.round(route.getStart().getEndTime()), diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleIndexComparator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleIndexComparator.java new file mode 100644 index 00000000..1dcc4261 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleIndexComparator.java @@ -0,0 +1,11 @@ +package com.graphhopper.jsprit.core.util; + +import java.util.Comparator; + +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; + +public class VehicleIndexComparator implements Comparator { + public int compare(VehicleRoute a, VehicleRoute b) { + return a.getVehicle().getIndex() - b.getVehicle().getIndex(); + } +}