Search code examples
optaplanner

Optaplanner : View intermediate score


Is there a way keep track of the score from time to time while the solver is running?

I currently instantiate my solver as follow

SolverFactory solverFactory = SolverFactory.createFromXmlResource("solver/SolverConfig.xml");
Solver solver = solverFactory.buildSolver();
solver.addEventListener(new SolverEventListener() {
    @Override
    public void bestSolutionChanged(BestSolutionChangedEvent event) {
        logger.info("New best score : " + event.getNewBestScore().toShortString());
    }
});
solver.solve(planningSolution);

This way I am able to see the logs every time the best score changes.

However, I would like to view the score after every 100 steps or after every 10 seconds. Is that possible?


Solution

  • If you turn on DEBUG (or TRACE) logging, you'll see it. If you want to listen to it in java, that's not supported in the public API, but there's PhaseLifecycleListener in the internal implementation that has no backward compatibility guarantees...