From 34c7a57da832c223deeb438cad7cfa7f8f5c958d Mon Sep 17 00:00:00 2001 From: braktar Date: Tue, 16 Aug 2016 11:27:58 +0200 Subject: [PATCH] Update SetupTime --- .../core/algorithm/state/UpdateActivityTimes.java | 1 + .../solution/route/activity/BreakActivity.java | 13 +++++++++++++ .../solution/route/activity/DeliverService.java | 13 +++++++++++++ .../solution/route/activity/DeliverShipment.java | 13 +++++++++++++ .../core/problem/solution/route/activity/End.java | 12 ++++++++++++ .../solution/route/activity/PickupService.java | 13 +++++++++++++ .../solution/route/activity/PickupShipment.java | 13 +++++++++++++ .../solution/route/activity/ServiceActivity.java | 13 +++++++++++++ .../core/problem/solution/route/activity/Start.java | 12 ++++++++++++ .../solution/route/activity/TourActivity.java | 4 ++++ .../jsprit/core/util/ActivityTimeTracker.java | 9 +++++++++ 11 files changed, 116 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityTimes.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityTimes.java index edf4c8dec..e85da2346 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityTimes.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityTimes.java @@ -66,6 +66,7 @@ public void begin(VehicleRoute route) { @Override public void visit(TourActivity activity) { timeTracker.visit(activity); + activity.setSetupTime(timeTracker.getActSetupTime()); activity.setArrTime(timeTracker.getActArrTime()); activity.setEndTime(timeTracker.getActEndTime()); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java index aea22744c..247c4e511 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java @@ -27,6 +27,8 @@ public class BreakActivity extends AbstractActivity implements TourActivity.JobA public static int counter = 0; + public double setupTime; + public double arrTime; public double endTime; @@ -35,6 +37,11 @@ public class BreakActivity extends AbstractActivity implements TourActivity.JobA private double duration; + @Override + public double getSetupTime() { + return setupTime; + } + /** * @return the arrTime */ @@ -42,6 +49,11 @@ public double getArrTime() { return arrTime; } + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + /** * @param arrTime the arrTime to set */ @@ -86,6 +98,7 @@ protected BreakActivity(Break aBreak) { protected BreakActivity(BreakActivity breakActivity) { counter++; this.aBreak = (Break) breakActivity.getJob(); + this.setupTime = breakActivity.getSetupTime(); this.arrTime = breakActivity.getArrTime(); this.endTime = breakActivity.getEndTime(); this.location = breakActivity.getLocation(); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java index 8884b0bb0..fb676ffbb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java @@ -28,6 +28,8 @@ public final class DeliverService extends AbstractActivity implements DeliveryAc private Capacity capacity; + public double setupTime; + private double arrTime; private double endTime; @@ -44,6 +46,7 @@ public DeliverService(Delivery delivery) { private DeliverService(DeliverService deliveryActivity) { this.delivery = deliveryActivity.getJob(); + this.setupTime = deliveryActivity.getSetupTime(); this.arrTime = deliveryActivity.getArrTime(); this.endTime = deliveryActivity.getEndTime(); capacity = deliveryActivity.getSize(); @@ -88,6 +91,11 @@ public double getOperationTime() { return delivery.getServiceDuration(); } + @Override + public double getSetupTime() { + return setupTime; + } + @Override public double getArrTime() { return arrTime; @@ -98,6 +106,11 @@ public double getEndTime() { return endTime; } + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + @Override public void setArrTime(double arrTime) { this.arrTime = arrTime; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipment.java index 50e6f3e86..1607abe4f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipment.java @@ -27,6 +27,8 @@ public final class DeliverShipment extends AbstractActivity implements DeliveryA private Shipment shipment; + public double setupTime; + private double endTime; private double arrTime; @@ -45,6 +47,7 @@ public DeliverShipment(Shipment shipment) { private DeliverShipment(DeliverShipment deliveryShipmentActivity) { this.shipment = (Shipment) deliveryShipmentActivity.getJob(); + this.setupTime = deliveryShipmentActivity.getSetupTime(); this.arrTime = deliveryShipmentActivity.getArrTime(); this.endTime = deliveryShipmentActivity.getEndTime(); this.capacity = deliveryShipmentActivity.getSize(); @@ -98,6 +101,11 @@ public double getOperationTime() { return shipment.getDeliveryServiceTime(); } + @Override + public double getSetupTime() { + return setupTime; + } + @Override public double getArrTime() { return arrTime; @@ -108,6 +116,11 @@ public double getEndTime() { return endTime; } + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + @Override public void setArrTime(double arrTime) { this.arrTime = arrTime; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/End.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/End.java index 6e661136b..52c935b2c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/End.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/End.java @@ -40,6 +40,8 @@ public static End copyOf(End end) { private double theoretical_latestOperationStartTime; + public double setupTime; + private double arrTime; private Location location; @@ -123,6 +125,16 @@ public String getName() { return "end"; } + @Override + public double getSetupTime() { + return setupTime; + } + + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + @Override public double getArrTime() { return this.arrTime; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupService.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupService.java index c6ed664b9..ba72b6e47 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupService.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupService.java @@ -27,6 +27,8 @@ public final class PickupService extends AbstractActivity implements PickupActiv private Service pickup; + public double setupTime; + private double arrTime; private double depTime; @@ -46,6 +48,7 @@ public PickupService(Service service) { private PickupService(PickupService pickupActivity) { this.pickup = pickupActivity.getJob(); + this.setupTime = pickupActivity.getSetupTime(); this.arrTime = pickupActivity.getArrTime(); this.depTime = pickupActivity.getEndTime(); setIndex(pickupActivity.getIndex()); @@ -88,6 +91,11 @@ public double getOperationTime() { return pickup.getServiceDuration(); } + @Override + public double getSetupTime() { + return setupTime; + } + @Override public double getArrTime() { return arrTime; @@ -98,6 +106,11 @@ public double getEndTime() { return depTime; } + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + @Override public void setArrTime(double arrTime) { this.arrTime = arrTime; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipment.java index 241d5734f..76b1b7809 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipment.java @@ -27,6 +27,8 @@ public final class PickupShipment extends AbstractActivity implements PickupActi private Shipment shipment; + public double setupTime; + private double endTime; private double arrTime; @@ -42,6 +44,7 @@ public PickupShipment(Shipment shipment) { private PickupShipment(PickupShipment pickupShipmentActivity) { this.shipment = (Shipment) pickupShipmentActivity.getJob(); + this.setupTime = pickupShipmentActivity.getSetupTime(); this.arrTime = pickupShipmentActivity.getArrTime(); this.endTime = pickupShipmentActivity.getEndTime(); setIndex(pickupShipmentActivity.getIndex()); @@ -94,6 +97,11 @@ public double getOperationTime() { return shipment.getPickupServiceTime(); } + @Override + public double getSetupTime() { + return setupTime; + } + @Override public double getArrTime() { return arrTime; @@ -104,6 +112,11 @@ public double getEndTime() { return endTime; } + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + @Override public void setArrTime(double arrTime) { this.arrTime = arrTime; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java index 70dfcaa4c..84868882d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java @@ -24,6 +24,8 @@ public class ServiceActivity extends AbstractActivity implements TourActivity.JobActivity { + public double setupTime; + public double arrTime; public double endTime; @@ -32,6 +34,16 @@ public class ServiceActivity extends AbstractActivity implements TourActivity.Jo private double theoreticalLatest; + @Override + public double getSetupTime() { + return setupTime; + } + + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + /** * @return the arrTime */ @@ -77,6 +89,7 @@ protected ServiceActivity(Service service) { protected ServiceActivity(ServiceActivity serviceActivity) { this.service = serviceActivity.getJob(); + this.setupTime = serviceActivity.getSetupTime(); this.arrTime = serviceActivity.getArrTime(); this.endTime = serviceActivity.getEndTime(); setIndex(serviceActivity.getIndex()); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/Start.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/Start.java index a1a1c836b..9131a02dd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/Start.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/Start.java @@ -42,6 +42,8 @@ public static Start copyOf(Start start) { private double theoretical_latestOperationStartTime; + public double setupTime; + private double endTime; private double arrTime; @@ -119,6 +121,11 @@ public String getName() { return "start"; } + @Override + public double getSetupTime() { + return setupTime; + } + @Override public double getArrTime() { return arrTime; @@ -129,6 +136,11 @@ public double getEndTime() { return endTime; } + @Override + public void setSetupTime(double setupTime) { + this.setupTime = setupTime; + } + @Override public void setArrTime(double arrTime) { this.arrTime = arrTime; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java index a061d85aa..5e9135704 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java @@ -93,6 +93,8 @@ public interface JobActivity extends TourActivity { */ public abstract double getOperationTime(); + public abstract double getSetupTime(); + /** * Returns the arrival-time of this activity. * @@ -107,6 +109,8 @@ public interface JobActivity extends TourActivity { */ public abstract double getEndTime(); + public abstract void setSetupTime(double setupTime); + /** * Sets the arrival time of that activity. * diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ActivityTimeTracker.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ActivityTimeTracker.java index 9f4256364..1be3ab386 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ActivityTimeTracker.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ActivityTimeTracker.java @@ -43,6 +43,8 @@ public static enum ActivityPolicy { private boolean beginFirst = false; + private double actSetupTime; + private double actArrTime; private double actEndTime; @@ -62,6 +64,10 @@ public ActivityTimeTracker(ForwardTransportTime transportTime, ActivityPolicy ac this.activityCosts = activityCosts; } + public double getActSetupTime() { + return actSetupTime; + } + public double getActArrTime() { return actArrTime; } @@ -95,6 +101,9 @@ public void visit(TourActivity activity) { } else operationStartTime = actArrTime; double operationEndTime = operationStartTime + activityCosts.getActivityDuration(activity,actArrTime,route.getDriver(),route.getVehicle()); + actSetupTime = operationStartTime; + if(!prevAct.getLocation().equals(activity.getLocation())) + actSetupTime -= activity.getSetupDuration() * route.getVehicle().getCoefSetupTime(); actEndTime = operationEndTime;