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

add priorities to constraints

This commit is contained in:
oblonski 2013-11-14 10:00:43 +01:00
parent 6099a315ee
commit 8010e0f2c2

View file

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