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

add insertion index to JobInsertionContext

This commit is contained in:
oblonski 2016-01-18 21:41:29 +01:00
parent 278f1149ab
commit 0e80c0ab50
3 changed files with 25 additions and 6 deletions

View file

@ -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);

View file

@ -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);

View file

@ -42,7 +42,9 @@ public class JobInsertionContext {
private List<TourActivity> associatedActivities = new ArrayList<TourActivity>();
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;
}
}