From 8010e0f2c22d10097a91e9f6b0c747a2eccd27bd Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Thu, 14 Nov 2013 10:00:43 +0100 Subject: [PATCH] add priorities to constraints --- .../main/java/algorithms/ConstraintManager.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/jsprit-core/src/main/java/algorithms/ConstraintManager.java b/jsprit-core/src/main/java/algorithms/ConstraintManager.java index 030e2b8b..1bc7c3b9 100644 --- a/jsprit-core/src/main/java/algorithms/ConstraintManager.java +++ b/jsprit-core/src/main/java/algorithms/ConstraintManager.java @@ -1,10 +1,15 @@ package algorithms; import basics.VehicleRoutingProblem; +import basics.VehicleRoutingProblem.Constraint; import basics.route.TourActivity; public class ConstraintManager implements HardActivityStateLevelConstraint, HardRouteStateLevelConstraint{ + public static enum Priority { + CRITICAL, HIGH, LOW + } + private HardActivityLevelConstraintManager actLevelConstraintManager = new HardActivityLevelConstraintManager(); private HardRouteLevelConstraintManager routeLevelConstraintManager = new HardRouteLevelConstraintManager(); @@ -24,7 +29,7 @@ public class ConstraintManager implements HardActivityStateLevelConstraint, Hard public void addTimeWindowConstraint(){ if(!timeWindowConstraintsSet){ - addConstraint(new TimeWindowConstraint(stateManager, vrp.getTransportCosts())); + addConstraint(new TimeWindowConstraint(stateManager, vrp.getTransportCosts()),Priority.HIGH); stateManager.addActivityVisitor(new TimeWindowUpdater(stateManager, vrp.getTransportCosts())); timeWindowConstraintsSet = true; } @@ -32,8 +37,12 @@ public class ConstraintManager implements HardActivityStateLevelConstraint, Hard public void addLoadConstraint(){ if(!loadConstraintsSet){ + if(vrp.getProblemConstraints().contains(Constraint.DELIVERIES_FIRST)){ + addConstraint(new ServiceBackhaulConstraint(),Priority.HIGH); + } + addConstraint(new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager),Priority.CRITICAL); addConstraint(new ServiceLoadRouteLevelConstraint(stateManager)); - addConstraint(new ServiceLoadActivityLevelConstraint(stateManager)); + addConstraint(new ServiceLoadActivityLevelConstraint(stateManager),Priority.LOW); UpdateLoads updateLoads = new UpdateLoads(stateManager); stateManager.addActivityVisitor(updateLoads); stateManager.addListener(updateLoads); @@ -43,8 +52,8 @@ public class ConstraintManager implements HardActivityStateLevelConstraint, Hard } } - public void addConstraint(HardActivityStateLevelConstraint actLevelConstraint){ - actLevelConstraintManager.addConstraint(actLevelConstraint); + public void addConstraint(HardActivityStateLevelConstraint actLevelConstraint, Priority priority){ + actLevelConstraintManager.addConstraint(actLevelConstraint,priority); } public void addConstraint(HardRouteStateLevelConstraint routeLevelConstraint){