auch die Regeln mit einem Strafwert von 0 ausgeführt (aber nicht bestraft). Wenn ich also alle Regeln mit Ausnahme einer Regel deaktiviere, ist die Geschwindigkeit nicht höher als wenn ich alle Regeln auswähle. Ist das richtig oder weiß Timefold irgendwie im ConstraintProvider Welche Regel sollte nicht ausgeführt werden, da es ohnehin eine Punktzahl von Null hat? Ich weiß nicht, gibt es eine empfohlene Möglichkeit, eine solche Regel auszuschließen?
Code: Select all
public Constraint holiday(ConstraintFactory constraintFactory) {
return constraintFactory.forEach(Shift.class)
.filter((shift)-> shift.getRoster().getConstraintWeightOverrides().getConstraintWeight(ConstraintNames.HOLIDAY) == HardMediumSoftLongScore.of(0, 0, 0))
.join(
Absence.class,
Joiners.equal(Shift::getEmployee, Absence::getEmployee),
Joiners.greaterThanOrEqual(Shift::getDate, Absence::getStartDate),
Joiners.lessThanOrEqual(Shift::getDate, Absence::getEndDate)
)
.penalize(HardMediumSoftLongScore.ONE_HARD)
.asConstraint(ConstraintNames.HOLIDAY);
}