我正在尝试解决类似于员工名册的问题。我面临的问题是每次我运行求解器时,它都会生成一个不同的任务。这使得调试为什么要从另一个案例中挑选一个特定案例变得更加困难。为什么会这样?
P.S。我的作业有很多硬性约束,可能都不能满足所有要求(大多数情况下,我仍然会看到一些负面的硬性得分)。因此,我的终止策略基于unimprovedSecondsSpentLimit
。这可能是原因吗?
答案 0 :(得分:1)
是的,很可能是终止。 OptaPlanner的默认environmentMode
保证在完全相同的步骤(*)处具有完全相同的解决方案。但是每次运行的CPU周期相差很大,因此每次运行获得的步数或多或少。使用DEBUG
日志来查看。
使用stepCountLimit
或unimprovedStepCountLimit
终止。
(*)除非文档中另有说明。例如,如果与时间限制终止配合使用,则即使在完全相同的步骤中,模拟退火也会有所不同。