From 3699fd5f990374d159e1b46d48a597fb067c81e0 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 14 Nov 2016 10:15:05 +0100 Subject: [PATCH] fix bug #297 --- .../jsprit/core/problem/constraint/MaxDistanceConstraint.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java index 2ad64a87..2bbf0fda 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java @@ -71,7 +71,8 @@ public class MaxDistanceConstraint implements HardActivityConstraint{ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { if(!hasMaxDistance(iFacts.getNewVehicle())) return ConstraintsStatus.FULFILLED; Double currentDistance = 0d; - if(!iFacts.getRoute().isEmpty()){ + boolean routeIsEmpty = iFacts.getRoute().isEmpty(); + if(!routeIsEmpty){ currentDistance = stateManager.getRouteState(iFacts.getRoute(),iFacts.getNewVehicle(), distanceId,Double.class); } double maxDistance = getMaxDistance(iFacts.getNewVehicle()); @@ -80,6 +81,7 @@ public class MaxDistanceConstraint implements HardActivityConstraint{ double distancePrevAct2NewAct = distanceCalculator.getDistance(prevAct.getLocation(), newAct.getLocation(), iFacts.getNewDepTime(), iFacts.getNewVehicle()); double distanceNewAct2nextAct = distanceCalculator.getDistance(newAct.getLocation(), nextAct.getLocation(), iFacts.getNewDepTime(), iFacts.getNewVehicle()); double distancePrevAct2NextAct = distanceCalculator.getDistance(prevAct.getLocation(), nextAct.getLocation(), prevActDepTime, iFacts.getNewVehicle()); + if(routeIsEmpty) distancePrevAct2NextAct = 0; if(nextAct instanceof End && !iFacts.getNewVehicle().isReturnToDepot()){ distanceNewAct2nextAct = 0; distancePrevAct2NextAct = 0;