【发布时间】:2015-04-02 04:48:24
【问题描述】:
在 Optaplanner 中,我注意到每一步都有可变的变化监听器。以及在每个阶段之后计算的 bestSolutionChanged 的 SolverEventListener。但是,我无法在每一步结束时捕捉到变化。 有什么建议可以听取构建启发式阶段的步骤变化吗? 提前致谢。
【问题讨论】:
标签: drools optaplanner
在 Optaplanner 中,我注意到每一步都有可变的变化监听器。以及在每个阶段之后计算的 bestSolutionChanged 的 SolverEventListener。但是,我无法在每一步结束时捕捉到变化。 有什么建议可以听取构建启发式阶段的步骤变化吗? 提前致谢。
【问题讨论】:
标签: drools optaplanner
要在步骤和阶段级别上侦听事件,您需要使用名为 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,在未来的版本中不向后兼容,没有文档记录,不适合胆小的人,使用风险自负,你已经不在堪萨斯了,Dorothy,... :)
【讨论】: