From 78ce3201877d956d9f43212a18b0559b8177960d Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Thu, 17 Jul 2014 18:36:38 +0200 Subject: [PATCH] added vehicle dependent time-window updater --- ...eVehicleDependentPracticalTimeWindows.java | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java index 13fdbbab..32db3dbb 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java @@ -6,21 +6,31 @@ import jsprit.core.problem.solution.route.activity.ReverseActivityVisitor; import jsprit.core.problem.solution.route.activity.TourActivity; import jsprit.core.problem.solution.route.state.StateFactory; import jsprit.core.problem.vehicle.Vehicle; -import jsprit.core.problem.vehicle.VehicleFleetManager; -import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; public class UpdateVehicleDependentPracticalTimeWindows implements ReverseActivityVisitor, StateUpdater{ + public static interface VehiclesToUpdate { + + public Collection get(VehicleRoute route); + + } + + private final VehiclesToUpdate vehiclesToUpdate = new VehiclesToUpdate() { + + @Override + public Collection get(VehicleRoute route) { + return Arrays.asList(route.getVehicle()); + } + + }; + private final StateManager stateManager; private final VehicleRoutingTransportCosts transportCosts; - private final VehicleFleetManager fleetManager; - - private final boolean vehicleSwitchAllowed; - private VehicleRoute route; private double[] latest_arrTimes_at_prevAct; @@ -29,23 +39,21 @@ public class UpdateVehicleDependentPracticalTimeWindows implements ReverseActivi private Collection vehicles; - - public UpdateVehicleDependentPracticalTimeWindows(StateManager stateManager, VehicleRoutingTransportCosts tpCosts, VehicleFleetManager fleetManager, boolean isVehicleSwitchAllowed) { + public UpdateVehicleDependentPracticalTimeWindows(StateManager stateManager, VehicleRoutingTransportCosts tpCosts) { super(); this.stateManager = stateManager; this.transportCosts = tpCosts; - this.fleetManager = fleetManager; - this.vehicleSwitchAllowed=isVehicleSwitchAllowed; latest_arrTimes_at_prevAct = new double[stateManager.getMaxIndexOfVehicleTypeIdentifiers() + 1]; location_of_prevAct = new String[stateManager.getMaxIndexOfVehicleTypeIdentifiers() + 1]; } + public void setVehiclesToUpdate(VehiclesToUpdate vehiclesToUpdate){ + + } @Override public void begin(VehicleRoute route) { this.route = route; - vehicles = new ArrayList(); - if(vehicleSwitchAllowed) vehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle())); - vehicles.add(route.getVehicle()); + vehicles = vehiclesToUpdate.get(route); for(Vehicle vehicle : vehicles){ latest_arrTimes_at_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = vehicle.getLatestArrival(); location_of_prevAct[vehicle.getVehicleTypeIdentifier().getIndex()] = vehicle.getEndLocationId();