1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

Update max time in vehicle use vehicle index

This commit is contained in:
Iris 2018-03-06 13:40:35 +02:00
parent 614b8b5e01
commit afead68243

View file

@ -93,7 +93,7 @@ public class UpdateMaxTimeInVehicle implements StateUpdater, ActivityVisitor{
vehicles = vehiclesToUpdate.get(route); vehicles = vehiclesToUpdate.get(route);
this.route = route; this.route = route;
for(Vehicle v : vehicles){ for(Vehicle v : vehicles){
int vehicleIndex = v.getVehicleTypeIdentifier().getIndex(); int vehicleIndex = v.getIndex();
openPickupEndTimesPerVehicle.put(vehicleIndex, new HashMap<Job, Double>()); openPickupEndTimesPerVehicle.put(vehicleIndex, new HashMap<Job, Double>());
slackTimesPerVehicle.put(vehicleIndex, new HashMap<TourActivity, Double>()); slackTimesPerVehicle.put(vehicleIndex, new HashMap<TourActivity, Double>());
actStartTimesPerVehicle.put(vehicleIndex, new HashMap<TourActivity, Double>()); actStartTimesPerVehicle.put(vehicleIndex, new HashMap<TourActivity, Double>());
@ -108,10 +108,10 @@ public class UpdateMaxTimeInVehicle implements StateUpdater, ActivityVisitor{
double maxTime = getMaxTimeInVehicle(activity); double maxTime = getMaxTimeInVehicle(activity);
for(Vehicle v : vehicles) { for(Vehicle v : vehicles) {
int vehicleIndex = v.getVehicleTypeIdentifier().getIndex(); int vehicleIndex = v.getIndex();
Location prevActLocation = prevActLocations[vehicleIndex]; Location prevActLocation = prevActLocations[vehicleIndex];
double prevActEndTime = prevActEndTimes[v.getVehicleTypeIdentifier().getIndex()]; double prevActEndTime = prevActEndTimes[v.getIndex()];
double activityArrival = prevActEndTimes[v.getVehicleTypeIdentifier().getIndex()] + transportTime.getTransportTime(prevActLocation,activity.getLocation(),prevActEndTime,route.getDriver(),v); double activityArrival = prevActEndTimes[v.getIndex()] + transportTime.getTransportTime(prevActLocation,activity.getLocation(),prevActEndTime,route.getDriver(),v);
double activityStart = Math.max(activityArrival,activity.getTheoreticalEarliestOperationStartTime()); double activityStart = Math.max(activityArrival,activity.getTheoreticalEarliestOperationStartTime());
memorizeActStart(activity,v,activityStart); memorizeActStart(activity,v,activityStart);
double activityEnd = activityStart + activityCosts.getActivityDuration(prevTourActivity, activity, activityArrival, route.getDriver(), v); double activityEnd = activityStart + activityCosts.getActivityDuration(prevTourActivity, activity, activityArrival, route.getDriver(), v);
@ -145,13 +145,13 @@ public class UpdateMaxTimeInVehicle implements StateUpdater, ActivityVisitor{
} }
private void memorizeActStart(TourActivity activity, Vehicle v, double activityStart) { private void memorizeActStart(TourActivity activity, Vehicle v, double activityStart) {
actStartTimesPerVehicle.get(v.getVehicleTypeIdentifier().getIndex()).put(activity, activityStart); actStartTimesPerVehicle.get(v.getIndex()).put(activity, activityStart);
} }
@Override @Override
public void finish() { public void finish() {
for(Vehicle v : vehicles) { for(Vehicle v : vehicles) {
int vehicleIndex = v.getVehicleTypeIdentifier().getIndex(); int vehicleIndex = v.getIndex();
//!!! open routes !!! //!!! open routes !!!
double routeEnd; double routeEnd;
@ -194,7 +194,7 @@ public class UpdateMaxTimeInVehicle implements StateUpdater, ActivityVisitor{
public void finish(List<TourActivity> activities, Job ignore) { public void finish(List<TourActivity> activities, Job ignore) {
for (Vehicle v : vehicles) { for (Vehicle v : vehicles) {
int vehicleIndex = v.getVehicleTypeIdentifier().getIndex(); int vehicleIndex = v.getIndex();
//!!! open routes !!! //!!! open routes !!!
double routeEnd; double routeEnd;
@ -236,7 +236,7 @@ public class UpdateMaxTimeInVehicle implements StateUpdater, ActivityVisitor{
} }
private double actStart(TourActivity act, Vehicle v) { private double actStart(TourActivity act, Vehicle v) {
return actStartTimesPerVehicle.get(v.getVehicleTypeIdentifier().getIndex()).get(act); return actStartTimesPerVehicle.get(v.getIndex()).get(act);
} }
private double minSlackTime(Map<Job, Double> openDeliveries) { private double minSlackTime(Map<Job, Double> openDeliveries) {