1) Обычно достаточно жестких ограничений. Например, вместо ограничения, которое говорит:
- ", когда Энн работает в пятницу, оштрафуйте"
там:
- Класс данных DayOfWeekDislike с Employee и DayOfWeek. ** У входных данных есть экземпляр, который с сотрудником Ann и dayOfWeek Friday.
- Существует ограничение, которое говорит: «если существует DayOfWeekDislike и существует ShiftAssignment этого сотрудника для такого DayOfWeek, штрафовать»
Такой подход достаточен в большинстве случаев использования, чтобы избежать динамических ограничений c. Обратите внимание, что вы можете добавлять / удалять данные DayOfWeekDislike в режиме реального времени с помощью Solver.addProblemFactChange()
.
2) Далее, @ConstraintConfiguration
может использовать @ConstraintWeight
для отключения / включения ограничений в реальном времени с помощью Solver.addProblemFactChange()
. Установите вес ограничения равным нулю, чтобы отключить его.
3) Если оба значения 1) и 2) не пройдены, вам действительно нужны динамические ограничения c. Я еще не видел ни одного варианта использования, которому нужно было бы go, но мы могли бы это поддержать. Если вам нужен такой подход, каков ваш вариант использования?