optaplanner 中的奖励而不是惩罚

Rewards instead of penalty in optaplanner

所以我有讲座和时间段,有些讲座需要在特定时间段教授。我该怎么做?

scoreHolder.addHardConstraintMatch(kcontext, 10);是否将此作为硬性约束解决?正10的值是否保证课程在特定时间段的约束?

我知道惩罚模式,但我不想制作 很多CoursePeriodPenalty 对象。理想情况下,我只想有一个 CoursePeriodReward 对象说 CS101 应该在时间段 9:00-10:00

不可移动的规划实体锁定它们是行不通的,因为我怀疑你仍然希望 OptaPlanner 为你决定房间 - 目前 optaplanner 只支持每个实体的 MovableSelectionFilter,而不是每个变量(为此投票给开放的 jira)。

正硬约束肯定会起作用。但是,您的分数将更难为您的用户解释,例如,硬分值为 0 的解决方案将不可行(它没有获得 +10 分,或者在其他地方失去了 10 分)。

或者您可以添加一个 新的负硬约束 类型,表示如果 != desiredTimeslot 然后松开 10 点。