我根据OptaPlanner的任务分配示例创建了一个解决方案,并在原始示例和我自己的解决方案中都观察到一种特定的行为:
解决100个任务5名员工的问题在半分钟左右后几乎不会产生新的更好成绩,但是终止求解器并再次重新启动它确实会带来更好的解决方案。
为什么会这样?以我的理解,重复的构造试探法不会更改任何计划实体,因为它们都已经初始化。然后再次开始本地搜索。为什么它立即找到新的更好的解决方案,而只继续执行第一个执行而不会中断呢?至少不会慢很多?
答案 0 :(得分:2)
通过终止并重新启动求解器,可以有效地导致 Late Acceptance 进行 reheating 。一旦this jira is prioritized and implemented,OptaPlanner就会自动进行加热。
这在少数用例中发生。但是,如果它发生在用例上,则倾向于在所有数据集上发生。
在某些情况下,我可以通过使用<localSearch>
终止配置多个<unimprovedSecondsSpentLimit>
阶段来解决此问题,但是我不喜欢这样。修复jira是唯一真正的解决方案。