首页 > 解决方案 > Optaplanner 如何使用相同的数据但不同的时间进行 2 种不同的求解

问题描述

嗨,我有一个数据,我解决了 2 次,第一次是 25 分钟,第二次是 1 分钟。两种解决方案的起始分数相同,规则文件相同,求解方法也相同(模拟退火),但 25 分钟解决分数为 0 硬 / 22,251,950 中等 / 22 正常,1 分钟解决分数为 0 硬 / 22,251,920 / 27 正常可以看到最低求解持续时间具有最低分数(更好的优化)这是如何发生的。你能告诉我 optaplanner 在这种情况下是如何工作的吗

标签: javaoptaplanner

解决方案


模拟退火比 Tabu Search 和 Late Acceptance 变化无常。每次 SA 运行都可能不同,并且更改 2 次运行之间的终止将使它们大大不同。对于 TS 和 LA(与 SA 不同),较长的跑步总是至少与较短的跑步得分相同(如果没有其他变化)。

话虽如此,真正的问题是为什么长期运行没有提高中等分数。好吧,基本上,使用默认移动选择器时,它陷入了局部最优状态,并且(具有讽刺意味的是)没有足够的时间摆脱它。较短的运行只是幸运的。可能软约束与中等约束是对抗的。

真正的解决方案是添加更多粗略的移动选择器,例如支柱移动或自定义移动。比较这 2 个解决方案,并找出哪种移动方式能够使更长的结果不被卡住。


推荐阅读