From 40b75eae9208d6d6846fceaa850ac470c1c065ca Mon Sep 17 00:00:00 2001 From: Stefan Schroeder <4sschroeder@gmail.com> Date: Tue, 10 Jun 2014 20:13:26 +0200 Subject: [PATCH] bugfix #104 --- .../constraint/ServiceLoadRouteLevelConstraint.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java b/jsprit-core/src/main/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java index f8a45535..314698ab 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java @@ -28,15 +28,20 @@ class ServiceLoadRouteLevelConstraint implements HardRouteStateLevelConstraint { @Override public boolean fulfilled(JobInsertionContext insertionContext) { + Capacity maxLoadAtRoute = stateManager.getRouteState(insertionContext.getRoute(), StateFactory.MAXLOAD, Capacity.class); + Capacity capacityDimensions = insertionContext.getNewVehicle().getType().getCapacityDimensions(); + if(!maxLoadAtRoute.isLessOrEqual(capacityDimensions)){ + return false; + } if(insertionContext.getJob() instanceof Delivery){ Capacity loadAtDepot = stateManager.getRouteState(insertionContext.getRoute(), StateFactory.LOAD_AT_BEGINNING, Capacity.class); - if(!Capacity.addup(loadAtDepot, insertionContext.getJob().getSize()).isLessOrEqual(insertionContext.getNewVehicle().getType().getCapacityDimensions())){ + if(!Capacity.addup(loadAtDepot, insertionContext.getJob().getSize()).isLessOrEqual(capacityDimensions)){ return false; } } else if(insertionContext.getJob() instanceof Pickup || insertionContext.getJob() instanceof Service){ Capacity loadAtEnd = stateManager.getRouteState(insertionContext.getRoute(), StateFactory.LOAD_AT_END, Capacity.class); - if(!Capacity.addup(loadAtEnd, insertionContext.getJob().getSize()).isLessOrEqual(insertionContext.getNewVehicle().getType().getCapacityDimensions())){ + if(!Capacity.addup(loadAtEnd, insertionContext.getJob().getSize()).isLessOrEqual(capacityDimensions)){ return false; } }