diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java index fc82d6ad..6f3d54a4 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java @@ -21,7 +21,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; -import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.HardRouteConstraint; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; @@ -46,17 +45,17 @@ abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculato return null; } - ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection failedActivityConstraints, ConstraintManager constraintManager) { + ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection failedActivityConstraints, ConstraintManager constraintManager) { ConstraintsStatus notFulfilled = null; - List failed = new ArrayList<>(); + List failed = new ArrayList<>(); for (HardActivityConstraint c : constraintManager.getCriticalHardActivityConstraints()) { ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) { - failedActivityConstraints.add(c); + failedActivityConstraints.add(c.getClass().getSimpleName()); return status; } else { if (status.equals(ConstraintsStatus.NOT_FULFILLED)) { - failed.add(c); + failed.add(c.getClass().getSimpleName()); notFulfilled = status; } } @@ -69,11 +68,11 @@ abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculato for (HardActivityConstraint c : constraintManager.getHighPrioHardActivityConstraints()) { ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) { - failedActivityConstraints.add(c); + failedActivityConstraints.add(c.getClass().getSimpleName()); return status; } else { if (status.equals(ConstraintsStatus.NOT_FULFILLED)) { - failed.add(c); + failed.add(c.getClass().getSimpleName()); notFulfilled = status; } } @@ -86,7 +85,7 @@ abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculato for (HardActivityConstraint constraint : constraintManager.getLowPrioHardActivityConstraints()) { ConstraintsStatus status = constraint.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK) || status.equals(ConstraintsStatus.NOT_FULFILLED)) { - failedActivityConstraints.add(constraint); + failedActivityConstraints.add(constraint.getClass().getSimpleName()); return status; } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java index 1ed5a68b..6007decb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java @@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; -import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; @@ -109,7 +108,7 @@ final class ServiceInsertionCalculator extends AbstractInsertionCalculator { InsertionData noInsertion = checkRouteContraints(insertionContext, constraintManager); if (noInsertion != null) return noInsertion; - Collection failedActivityConstraints = new ArrayList<>(); + Collection failedActivityConstraints = new ArrayList<>(); /* check soft constraints at route level @@ -168,9 +167,7 @@ final class ServiceInsertionCalculator extends AbstractInsertionCalculator { } if(insertionIndex == InsertionData.NO_INDEX) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); - for (HardConstraint c : failedActivityConstraints) { - emptyInsertionData.addFailedConstrainName(c.getClass().getSimpleName()); - } + emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, InsertionData.NO_INDEX, insertionIndex, newVehicle, newDriver); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index d7b3eecd..9eb5967c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; -import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; @@ -129,7 +128,7 @@ final class ShipmentInsertionCalculator extends AbstractInsertionCalculator { //pickupShipmentLoop List activities = currentRoute.getTourActivities().getActivities(); - List failedActivityConstraints = new ArrayList<>(); + List failedActivityConstraints = new ArrayList<>(); while (!tourEnd) { TourActivity nextAct; if (i < activities.size()) { @@ -229,9 +228,7 @@ final class ShipmentInsertionCalculator extends AbstractInsertionCalculator { } if (pickupInsertionIndex == InsertionData.NO_INDEX) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); - for (HardConstraint failed : failedActivityConstraints) { - emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); - } + emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java index 8862481a..b490b246 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java @@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; -import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; @@ -147,7 +146,7 @@ public final class ShipmentInsertionCalculatorFlex extends AbstractInsertionCalc //pickupShipmentLoop List activities = currentRoute.getTourActivities().getActivities(); - List failedActivityConstraints = new ArrayList<>(); + List failedActivityConstraints = new ArrayList<>(); while (!tourEnd) { TourActivity nextAct; if (i < activities.size()) { @@ -253,9 +252,7 @@ public final class ShipmentInsertionCalculatorFlex extends AbstractInsertionCalc if (pickupInsertionIndex == InsertionData.NO_INDEX) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); - for (HardConstraint failed : failedActivityConstraints) { - emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); - } + emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver);