From dfd9d47b18052c454c53edb5906ebb2508af34b7 Mon Sep 17 00:00:00 2001 From: hilaminster Date: Wed, 23 Oct 2019 19:16:04 +0300 Subject: [PATCH] enable serialize vehicles --- .../graphhopper/jsprit/core/algorithm/box/Jsprit.java | 8 ++++++-- .../jsprit/examples/BuildAlgorithmFromScratch.java | 11 +++++------ .../jsprit/io/algorithm/VehicleRoutingAlgorithms.java | 4 +++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index ffa27508..d57c0e87 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -42,6 +42,7 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.BreakActivity import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory; import com.graphhopper.jsprit.core.problem.vehicle.InfiniteFleetManagerFactory; +import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; import com.graphhopper.jsprit.core.util.NoiseMaker; import com.graphhopper.jsprit.core.util.RandomNumberGeneration; @@ -460,10 +461,13 @@ public class Jsprit { private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { ini(vrp); if (vehicleFleetManager == null) { + Set vehicles = new HashSet<>(); + vehicles.addAll(vrp.getVehicles()); if (vrp.getFleetSize().equals(VehicleRoutingProblem.FleetSize.INFINITE)) { - vehicleFleetManager = new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); + vehicleFleetManager = new InfiniteFleetManagerFactory(vehicles).createFleetManager(); } else { - FiniteFleetManagerFactory finiteFleetManagerFactory = new FiniteFleetManagerFactory(vrp.getVehicles()); + + FiniteFleetManagerFactory finiteFleetManagerFactory = new FiniteFleetManagerFactory(vehicles); finiteFleetManagerFactory.setRandom(random); vehicleFleetManager = finiteFleetManagerFactory.createFleetManager(); } diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java index 4660597a..36c1a141 100644 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java +++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java @@ -41,16 +41,14 @@ import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory; +import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; import com.graphhopper.jsprit.core.reporting.SolutionPrinter; import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.instance.reader.CordeauReader; import com.graphhopper.jsprit.util.Examples; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; +import java.util.*; public class BuildAlgorithmFromScratch { @@ -129,8 +127,9 @@ public class BuildAlgorithmFromScratch { public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp) { - - VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); + Set vehicles = new HashSet<>(); + vehicles.addAll(vrp.getVehicles()); + VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager(); StateManager stateManager = new StateManager(vrp); ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java index 6f6aae04..6df3db28 100644 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java +++ b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java @@ -667,7 +667,9 @@ public class VehicleRoutingAlgorithms { return new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); } else if (vrp.getFleetSize().equals(FleetSize.FINITE)) { - return new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); + Set vehicles = new HashSet<>(); + vehicles.addAll(vrp.getVehicles()); + return new FiniteFleetManagerFactory(vehicles).createFleetManager(); } throw new IllegalStateException("fleet size can only be infinite or finite. " + "makes sure your config file contains one of these options");