diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java index 630d45ba..34873590 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java @@ -35,6 +35,8 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener { Map failedConstraintNamesToCode = new HashMap<>(); + Set constraintsToBeIgnored = new HashSet<>(); + public UnassignedJobReasonTracker() { codesToReason.put(1, "cannot serve required skill"); codesToReason.put(2, "cannot be visited within time window"); @@ -49,12 +51,17 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener { failedConstraintNamesToCode.put("MaxDistanceConstraint", 4); } + public void ignore(String simpleNameOfConstraint) { + constraintsToBeIgnored.add(simpleNameOfConstraint); + } + @Override public void informJobUnassigned(Job unassigned, Collection failedConstraintNames) { if (!this.reasons.containsKey(unassigned.getId())) { this.reasons.put(unassigned.getId(), new Frequency()); } for (String r : failedConstraintNames) { + if (constraintsToBeIgnored.contains(r)) continue; this.reasons.get(unassigned.getId()).addValue(r); } }