我们知道OptaPlanner会在选择一个生成最高分数的步骤之前执行多个步骤的计算,以更新最佳解决方案,因为调试日志显示例如 [主要] DEBUG o.o.c.i.c.DefaultConstructionHeuristicSolverPhase - 步骤索引(1147),时间花费(4381),得分(0hard / 80504soft),选择移动计数(15)用于构建步骤......
我试图获取被选中的动作(或者至少获得通知),以便我可以捕获一些中间计算结果。显然,为每个步骤打印出所有计算结果是不可行的,因为很多都没有被选中。
我正在查看BestSolutionChangedEvent方法,但似乎它可能不符合我的目的: How to know Optaplanner solving has ended?
有没有想过如何实现这一目标?提前谢谢。
答案 0 :(得分:1)
在回答实际问题之前,这真的有用吗?假设以下场景:
现在,如果您采取导致新的最佳解决方案的举措,您会得到什么?
所以这不是很有用,除非你当然想要了解哪些动作是好的。但在这种情况下,请查看基准测试人员Picked move type best score diff over time statistic,6.2中的新内容。
现在回答你的问题:)没有公共API可以做,但你可以使用内部(非向后兼容)实现类,如this class中所做。