Но, насколько я вижу, также выполняются правила со штрафным значением 0 (но не наказаны). Поэтому, если я отключаю все правила, кроме одного правила, скорость не выше, то когда я выбираю все правила. Это правильно или ли временные переключатели как -то знают в ConstraintProvider какое правило не должно быть выполнено, потому что оно в любом случае имеет оценку нуля? Не знаю, есть ли рекомендуемый способ исключить такое правило.
Мой подход будет заключаться в том, чтобы сделать что -то подобное (здесь в примере праздничного ограничения): < /p>
Код: Выделить всё
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);
}
Спасибо за помощь.
Подробнее здесь: https://stackoverflow.com/questions/794 ... score-of-0
Мобильная версия