如何区分Move和undoMove?

How to distinguish Move from undoMove?

在一个步骤中,假设本地搜索 OptaPlanner 通过执行移动然后调用 undoMove 来评估 N 个不同的移动,然后在最后从 N evaluated.Is 中做出最佳移动有一种方法可以找出什么时候移动什么时候撤消?

可变侦听器在 undoMove 结束时触发(因为从 6.3 开始,每个移动都必须执行 ScoreDirector.triggerVariableListeners())。

默认情况下,在undoMove之后不会重新计算分数(因为它可以预测所以这是一种性能浪费)。然而,对于 enviromnentMode FAST/FULL_ASSERT 是,但对于 NON_INTRUSIVE_FULL_ASSERT 不是。当然,您不应该使用它们在撤消操作后强制重新计算分数:您永远不应该依赖在撤消操作后重新计算分数。