protected void runSolverPhases() { Iterator<SolverPhase> it = solverPhaseList.iterator(); while (!termination.isSolverTerminated(solverScope) && it.hasNext()) { SolverPhase solverPhase = it.next(); solverPhase.solve(solverScope); if (it.hasNext()) { solverScope.setWorkingSolutionFromBestSolution(); } } // TODO support doing round-robin of phases (only non-construction heuristics) }