Optaplanner:如何计算移动的分数增量



我正在使用Optaplanner自动求解学校时间表。解决时间表后,用户将手动更改一些课程,并通过以下电话获得关于这如何影响分数的反馈:

scoreManager.updateScore(timetable);

这个调用需要大约200毫秒,我想,它将进行一次完整的评估。我正在尝试优化它,并且只想传入一个Move对象,这样Optaplanner只需要重新计算delta,比如:

scoreManager.updateScore(previousTimetable,changeMove);

有办法做到这一点吗?

真的没有办法只做一步。你不移动,解算器移动。您只能对解决方案进行外部问题更改。您应该研究ProblemChange接口及其在SolverManager中的使用。

然而,问题的改变可能会重置整个有效的解决方案。在外部更改完成后,不能保证解决方案仍然有意义。(如果它现在打破了严格的限制怎么办?(你只需要期望并解释这样一个事实,即在用户提交更改后,求解器将需要运行;甚至可能持续很长一段时间。

最新更新