2015-04-02 48 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