在Optaplanner中,我注意到每次移动都有变量监听器。和SolverEventListener for bestSolutionChanged,它是在每个阶段之后计算出来的。但是,我无法在每一步结束时发现变化。 在构造启发阶段听取步骤变化的任何建议吗? 提前谢谢。
答案 0 :(得分:0)
要在一定程度的步骤和阶段上收听事件,您需要使用名为PhaseLifecycleListener
的内部侦听器。例如,内部基准测试代码使用它:
StepScoreSingleStatisticListener listener = new StepScoreSingleStatisticListener();
((DefaultSolver) solver).addPhaseLifecycleListener(listener);
// solver.solve(...);
((DefaultSolver) solver).removePhaseLifecycleListener(listener);
实现可能如下所示:
private class StepScoreSingleStatisticListener extends PhaseLifecycleListenerAdapter {
@Override
public void stepEnded(AbstractStepScope stepScope) {
...
}
}
警告:这是内部API,在以后的版本中没有向后兼容,没有记录,不适合胆小的人,自担风险使用,你不再在堪萨斯州多萝西,......:)