运行优化模型时,终端上打印的 optaplanner 日志显示零硬约束违规“最佳分数(0hard/0medium/-1056704soft)”。之后,我打印了计算出的解决方案的硬分数,并且它正确地打印了零。然而,在程序的下一行中,当我尝试使用 SolutionManager 库进行分数解释时,它显示特定约束的 -1hard/0medium/0soft。
在检查解决方案时,我意识到实际上存在硬约束违规。谁能解释为什么这种违规行为没有显示在初始日志中以及为什么硬分打印为零?
闻起来像 OptaPlanner 或 Timefold 中的分数损坏。
在您的
environmentMode=FAST_ASSERT
或 FULL_ASSERT
中本地打开 application.properties
(或 SolverConfig
)。不要提交该更改。运行 10 倍时间即可达到相同点。这将在发生任何分数损坏时将其清除,并且应该为您提供有关涉及哪个约束的线索。然后第二部分开始:找出原因。