2015-04-02 47 views
0

在Optaplanner中,我注意到每个步骤都有可变更改监听器。而SolverEventListener for bestSolutionChanged是在每个阶段之后计算的。但是,我无法找到每一步结束时的变化。 任何建议听建设启发式阶段的步骤变化? 在此先感谢。Optaplanner:在施工启发阶段更改监听器

回答

0

要收听步骤和阶段级别的事件,您需要使用名为PhaseLifecycleListener的内部侦听器。例如内部benchmarker代码使用它:

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,在将来的版本不向后兼容,不记录,不为心情不好,使用后果自负,你不再在堪萨斯州多萝西,... :)

+0

请务必先阅读文档中的“范围(求解器,阶段,步骤,移动)”。 – 2015-04-03 07:01:05