From 0e80c0ab500b862373ea0c070323ae4301858958 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 18 Jan 2016 21:41:29 +0100 Subject: [PATCH] add insertion index to JobInsertionContext --- .../recreate/ServiceInsertionCalculator.java | 4 ++++ .../recreate/ShipmentInsertionCalculator.java | 7 ++++++- .../problem/misc/JobInsertionContext.java | 20 ++++++++++++++----- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java index 03024cb0..0591ec14 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java @@ -23,6 +23,7 @@ import jsprit.core.problem.cost.VehicleRoutingTransportCosts; import jsprit.core.problem.driver.Driver; import jsprit.core.problem.job.Job; import jsprit.core.problem.job.Service; +import jsprit.core.problem.misc.ActivityContext; import jsprit.core.problem.misc.JobInsertionContext; import jsprit.core.problem.solution.route.VehicleRoute; import jsprit.core.problem.solution.route.activity.End; @@ -134,6 +135,9 @@ final class ServiceInsertionCalculator implements JobInsertionCostsCalculator { for(TimeWindow timeWindow : service.getTimeWindows()) { deliveryAct2Insert.setTheoreticalEarliestOperationStartTime(timeWindow.getStart()); deliveryAct2Insert.setTheoreticalLatestOperationStartTime(timeWindow.getEnd()); + ActivityContext activityContext = new ActivityContext(); + activityContext.setInsertionIndex(actIndex); + insertionContext.setActivityContext(activityContext); ConstraintsStatus status = hardActivityLevelConstraint.fulfilled(insertionContext, prevAct, deliveryAct2Insert, nextAct, prevActStartTime); if (status.equals(ConstraintsStatus.FULFILLED)) { double additionalICostsAtActLevel = softActivityConstraint.getCosts(insertionContext, prevAct, deliveryAct2Insert, nextAct, prevActStartTime); diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index acfdb88d..cfdb63bb 100644 --- a/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -141,6 +141,9 @@ final class ShipmentInsertionCalculator implements JobInsertionCostsCalculator { for(TimeWindow pickupTimeWindow : shipment.getPickupTimeWindows()) { pickupShipment.setTheoreticalEarliestOperationStartTime(pickupTimeWindow.getStart()); pickupShipment.setTheoreticalLatestOperationStartTime(pickupTimeWindow.getEnd()); + ActivityContext activityContext = new ActivityContext(); + activityContext.setInsertionIndex(i); + insertionContext.setActivityContext(activityContext); ConstraintsStatus pickupShipmentConstraintStatus = hardActivityLevelConstraint.fulfilled(insertionContext, prevAct, pickupShipment, nextAct, prevActEndTime); if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.NOT_FULFILLED)) { pickupInsertionNotFulfilledBreak = false; @@ -184,7 +187,9 @@ final class ShipmentInsertionCalculator implements JobInsertionCostsCalculator { for (TimeWindow deliveryTimeWindow : shipment.getDeliveryTimeWindows()) { deliverShipment.setTheoreticalEarliestOperationStartTime(deliveryTimeWindow.getStart()); deliverShipment.setTheoreticalLatestOperationStartTime(deliveryTimeWindow.getEnd()); - + ActivityContext activityContext_ = new ActivityContext(); + activityContext.setInsertionIndex(j); + insertionContext.setActivityContext(activityContext_); ConstraintsStatus deliverShipmentConstraintStatus = hardActivityLevelConstraint.fulfilled(insertionContext, prevAct_deliveryLoop, deliverShipment, nextAct_deliveryLoop, prevActEndTime_deliveryLoop); if (deliverShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { double additionalDeliveryICosts = softActivityConstraint.getCosts(insertionContext, prevAct_deliveryLoop, deliverShipment, nextAct_deliveryLoop, prevActEndTime_deliveryLoop); diff --git a/jsprit-core/src/main/java/jsprit/core/problem/misc/JobInsertionContext.java b/jsprit-core/src/main/java/jsprit/core/problem/misc/JobInsertionContext.java index c88f45af..eb074366 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/misc/JobInsertionContext.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/misc/JobInsertionContext.java @@ -42,7 +42,9 @@ public class JobInsertionContext { private List associatedActivities = new ArrayList(); - private ActivityContext pickupContext; + private ActivityContext activityContext; + + private ActivityContext relatedActivityContext; /** * Returns the existing route where the .getJob() needs to be inserted in. @@ -116,10 +118,10 @@ public class JobInsertionContext { /** * Sets pickup context. * - * @param pickupContext pickup context + * @param relatedActivityContext pickup context */ - public void setRelatedActivityContext(ActivityContext pickupContext) { - this.pickupContext = pickupContext; + public void setRelatedActivityContext(ActivityContext relatedActivityContext) { + this.relatedActivityContext = relatedActivityContext; } /** @@ -128,6 +130,14 @@ public class JobInsertionContext { * @return pickup context */ public ActivityContext getRelatedActivityContext() { - return this.pickupContext; + return this.relatedActivityContext; + } + + public void setActivityContext(ActivityContext activityContext){ + this.activityContext = activityContext; + } + + public ActivityContext getActivityContext(){ + return this.activityContext; } }