From a1f448c11331815f0fe08445688ebc4eaceeff45 Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Wed, 23 Jul 2014 23:08:14 +0200 Subject: [PATCH] moved tw-update from core.algorithm.state.StateManager to core.algorithm.io.VehicleRoutingAlgorithms --- .../algorithm/io/VehicleRoutingAlgorithms.java | 18 +++++++++++++++++- .../core/algorithm/state/StateManager.java | 9 +++++---- .../java/jsprit/examples/SolomonExample.java | 5 +++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java b/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java index 4e2aa014..3d65d6f9 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/io/VehicleRoutingAlgorithms.java @@ -532,7 +532,23 @@ public class VehicleRoutingAlgorithms { //create fleetmanager final VehicleFleetManager vehicleFleetManager = createFleetManager(vrp); - + + if(stateManager.timeWindowUpdateIsActivated()){ + UpdateVehicleDependentPracticalTimeWindows timeWindowUpdater = new UpdateVehicleDependentPracticalTimeWindows(stateManager,vrp.getTransportCosts()); + timeWindowUpdater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { + + @Override + public Collection get(VehicleRoute route) { + Collection vehicles = new ArrayList(); + vehicles.add(route.getVehicle()); + vehicles.addAll(vehicleFleetManager.getAvailableVehicles(route.getVehicle())); + return vehicles; + } + + }); + stateManager.addStateUpdater(timeWindowUpdater); + } + SolutionCostCalculator costCalculator; if(solutionCostCalculator==null) costCalculator = getDefaultCostCalculator(stateManager); else costCalculator = solutionCostCalculator; diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java index 2e2beb90..be987e23 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/StateManager.java @@ -690,11 +690,12 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart * Updates time-window states. */ public void updateTimeWindowStates() { - if(!updateTWs){ - updateTWs=true; - addActivityVisitor(new UpdatePracticalTimeWindows(this, routingCosts)); - } + updateTWs=true; } + public boolean timeWindowUpdateIsActivated(){ + return updateTWs; + } + } diff --git a/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java b/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java index 5eef9a74..f699e375 100644 --- a/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java +++ b/jsprit-examples/src/main/java/jsprit/examples/SolomonExample.java @@ -53,12 +53,13 @@ public class SolomonExample { * A solomonReader reads solomon-instance files, and stores the required information in the builder. */ new SolomonReader(vrpBuilder).read("input/C101_solomon.txt"); - + + /* * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). */ VehicleRoutingProblem vrp = vrpBuilder.build(); - + new Plotter(vrp).plot("output/solomon_C101.png", "C101"); /*