Optaplanner:Step在构造启发阶段改变了听众

时间:2015-04-02 04:48:24

标签: drools optaplanner

在Optaplanner中,我注意到每次移动都有变量监听器。和SolverEventListener for bestSolutionChanged,它是在每个阶段之后计算出来的。但是,我无法在每一步结束时发现变化。 在构造启发阶段听取步骤变化的任何建议吗? 提前谢谢。

1 个答案:

答案 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,在以后的版本中没有向后兼容,没有记录,不适合胆小的人,自担风险使用,你不再在堪萨斯州多萝西,......:)