Я планирую расписание, используя Optaplanner 7.37, и реализую положительное мягкое ограничение, так что задачи с более высоким приоритетом будут планироваться первыми. Я хочу произвести инкрементный подсчет очков, который вознаграждается в соответствии со значением приоритета.
Я пробовал следующее, но, как вы можете видеть, он просто добавит одну мягкую единицу оценки для каждой запланированной задачи (так что она выиграла '' t варьируются в зависимости от приоритета задачи.
private Constraint scheduleHighPriorityTasks(ConstraintFactory factory) {
return factory.from(ShiftAssignment.class)
.reward('High priority work done', HardSoftScore.ONE_SOFT);
}
Я бы хотел что-то примерно вроде этого вымышленного кода:
private Constraint scheduleHighPriorityTasks(ConstraintFactory factory) {
return factory.from(ShiftAssignment.class)
.multiply(ShiftAssignment::getTaskPriority)
.reward('High priority work done', HardSoftScore.ONE_SOFT);
}
, чтобы, если getTaskPriority вернет приоритет 3, тогда мягкая оценка будет вознагражден трехкратным превышением настроенного веса.
Я не думаю, что мои требования настолько сложны, поэтому я думаю, что, вероятно, есть способ сделать это.
Есть идеи?