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

Compare commits

..

No commits in common. "e4b5bbf5fa6ee3787de411eb5652db635852a193" and "267775d25282c60d2ee3a80b36b0687e4be4d9f6" have entirely different histories.

4 changed files with 13 additions and 23 deletions

View file

@ -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.ConstraintManager;
import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint;
import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; 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.constraint.HardRouteConstraint;
import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext;
import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity;
@ -46,17 +45,17 @@ abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculato
return null; return null;
} }
ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection<HardConstraint> failedActivityConstraints, ConstraintManager constraintManager) { ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection<String> failedActivityConstraints, ConstraintManager constraintManager) {
ConstraintsStatus notFulfilled = null; ConstraintsStatus notFulfilled = null;
List<HardConstraint> failed = new ArrayList<>(); List<String> failed = new ArrayList<>();
for (HardActivityConstraint c : constraintManager.getCriticalHardActivityConstraints()) { for (HardActivityConstraint c : constraintManager.getCriticalHardActivityConstraints()) {
ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime);
if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) { if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) {
failedActivityConstraints.add(c); failedActivityConstraints.add(c.getClass().getSimpleName());
return status; return status;
} else { } else {
if (status.equals(ConstraintsStatus.NOT_FULFILLED)) { if (status.equals(ConstraintsStatus.NOT_FULFILLED)) {
failed.add(c); failed.add(c.getClass().getSimpleName());
notFulfilled = status; notFulfilled = status;
} }
} }
@ -69,11 +68,11 @@ abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculato
for (HardActivityConstraint c : constraintManager.getHighPrioHardActivityConstraints()) { for (HardActivityConstraint c : constraintManager.getHighPrioHardActivityConstraints()) {
ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime);
if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) { if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) {
failedActivityConstraints.add(c); failedActivityConstraints.add(c.getClass().getSimpleName());
return status; return status;
} else { } else {
if (status.equals(ConstraintsStatus.NOT_FULFILLED)) { if (status.equals(ConstraintsStatus.NOT_FULFILLED)) {
failed.add(c); failed.add(c.getClass().getSimpleName());
notFulfilled = status; notFulfilled = status;
} }
} }
@ -86,7 +85,7 @@ abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculato
for (HardActivityConstraint constraint : constraintManager.getLowPrioHardActivityConstraints()) { for (HardActivityConstraint constraint : constraintManager.getLowPrioHardActivityConstraints()) {
ConstraintsStatus status = constraint.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); ConstraintsStatus status = constraint.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime);
if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK) || status.equals(ConstraintsStatus.NOT_FULFILLED)) { if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK) || status.equals(ConstraintsStatus.NOT_FULFILLED)) {
failedActivityConstraints.add(constraint); failedActivityConstraints.add(constraint.getClass().getSimpleName());
return status; return status;
} }
} }

View file

@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate;
import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.JobActivityFactory;
import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager;
import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; 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.SoftActivityConstraint;
import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts;
@ -109,7 +108,7 @@ final class ServiceInsertionCalculator extends AbstractInsertionCalculator {
InsertionData noInsertion = checkRouteContraints(insertionContext, constraintManager); InsertionData noInsertion = checkRouteContraints(insertionContext, constraintManager);
if (noInsertion != null) return noInsertion; if (noInsertion != null) return noInsertion;
Collection<HardConstraint> failedActivityConstraints = new ArrayList<>(); Collection<String> failedActivityConstraints = new ArrayList<>();
/* /*
check soft constraints at route level check soft constraints at route level
@ -168,9 +167,7 @@ final class ServiceInsertionCalculator extends AbstractInsertionCalculator {
} }
if(insertionIndex == InsertionData.NO_INDEX) { if(insertionIndex == InsertionData.NO_INDEX) {
InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); InsertionData emptyInsertionData = new InsertionData.NoInsertionFound();
for (HardConstraint c : failedActivityConstraints) { emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints);
emptyInsertionData.addFailedConstrainName(c.getClass().getSimpleName());
}
return emptyInsertionData; return emptyInsertionData;
} }
InsertionData insertionData = new InsertionData(bestCost, InsertionData.NO_INDEX, insertionIndex, newVehicle, newDriver); InsertionData insertionData = new InsertionData(bestCost, InsertionData.NO_INDEX, insertionIndex, newVehicle, newDriver);

View file

@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate;
import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.JobActivityFactory;
import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager;
import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; 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.SoftActivityConstraint;
import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts;
@ -129,7 +128,7 @@ final class ShipmentInsertionCalculator extends AbstractInsertionCalculator {
//pickupShipmentLoop //pickupShipmentLoop
List<TourActivity> activities = currentRoute.getTourActivities().getActivities(); List<TourActivity> activities = currentRoute.getTourActivities().getActivities();
List<HardConstraint> failedActivityConstraints = new ArrayList<>(); List<String> failedActivityConstraints = new ArrayList<>();
while (!tourEnd) { while (!tourEnd) {
TourActivity nextAct; TourActivity nextAct;
if (i < activities.size()) { if (i < activities.size()) {
@ -229,9 +228,7 @@ final class ShipmentInsertionCalculator extends AbstractInsertionCalculator {
} }
if (pickupInsertionIndex == InsertionData.NO_INDEX) { if (pickupInsertionIndex == InsertionData.NO_INDEX) {
InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); InsertionData emptyInsertionData = new InsertionData.NoInsertionFound();
for (HardConstraint failed : failedActivityConstraints) { emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints);
emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName());
}
return emptyInsertionData; return emptyInsertionData;
} }
InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver);

View file

@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate;
import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.JobActivityFactory;
import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager;
import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; 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.SoftActivityConstraint;
import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts;
@ -147,7 +146,7 @@ public final class ShipmentInsertionCalculatorFlex extends AbstractInsertionCalc
//pickupShipmentLoop //pickupShipmentLoop
List<TourActivity> activities = currentRoute.getTourActivities().getActivities(); List<TourActivity> activities = currentRoute.getTourActivities().getActivities();
List<HardConstraint> failedActivityConstraints = new ArrayList<>(); List<String> failedActivityConstraints = new ArrayList<>();
while (!tourEnd) { while (!tourEnd) {
TourActivity nextAct; TourActivity nextAct;
if (i < activities.size()) { if (i < activities.size()) {
@ -253,9 +252,7 @@ public final class ShipmentInsertionCalculatorFlex extends AbstractInsertionCalc
if (pickupInsertionIndex == InsertionData.NO_INDEX) { if (pickupInsertionIndex == InsertionData.NO_INDEX) {
InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); InsertionData emptyInsertionData = new InsertionData.NoInsertionFound();
for (HardConstraint failed : failedActivityConstraints) { emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints);
emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName());
}
return emptyInsertionData; return emptyInsertionData;
} }
InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver);