@Override
    public void solvingStarted(DefaultSolverScope<Solution_> solverScope) {
        // Starting bestSolution is already set by Solver.solve(Solution)
        InnerScoreDirector<Solution_> scoreDirector = solverScope.getScoreDirector();
        Score score = scoreDirector.calculateScore();
        solverScope.setBestScore(score);
        solverScope.setBestSolutionTimeMillis(System.currentTimeMillis());
        // The original bestSolution might be the final bestSolution and should have an accurate Score
        solverScope.getSolutionDescriptor().setScore(solverScope.getBestSolution(), score);
        if (score.isSolutionInitialized()) {
            solverScope.setStartingInitializedScore(score);
        } else {
            solverScope.setStartingInitializedScore(null);
        }
        if (assertInitialScoreFromScratch) {
            scoreDirector.assertWorkingScoreFromScratch(score, "Initial score calculated");
        }
        if (assertShadowVariablesAreNotStale) {
            scoreDirector.assertShadowVariablesAreNotStale(score, "Initial score calculated");
        }
    }
@Override
    public void solvingStarted(DefaultSolverScope<Solution_> solverScope) {
        
        InnerScoreDirector<Solution_> scoreDirector = solverScope.getScoreDirector();
        Score score = scoreDirector.calculateScore();
        solverScope.setBestScore(score);
        solverScope.setBestSolutionTimeMillis(System.currentTimeMillis());
        
        solverScope.getSolutionDescriptor().setScore(solverScope.getBestSolution(), score);
        if (score.isSolutionInitialized()) {
            solverScope.setStartingInitializedScore(score);
        } else {
            solverScope.setStartingInitializedScore(null);
        }
        if (assertInitialScoreFromScratch) {
            scoreDirector.assertWorkingScoreFromScratch(score, "Initial score calculated");
        }
        if (assertShadowVariablesAreNotStale) {
            scoreDirector.assertShadowVariablesAreNotStale(score, "Initial score calculated");
        }
    }
@ Override public void solvingStarted ( DefaultSolverScope < Solution_ > solverScope ) { // Starting bestSolution is already set by Solver.solve(Solution) InnerScoreDirector < Solution_ > scoreDirector = solverScope . getScoreDirector ( ) ; Score score = scoreDirector . calculateScore ( ) ; solverScope . setBestScore ( score ) ; solverScope . setBestSolutionTimeMillis ( System . currentTimeMillis ( ) ) ; // The original bestSolution might be the final bestSolution and should have an accurate Score solverScope . getSolutionDescriptor ( ) . setScore ( solverScope . getBestSolution ( ) , score ) ; if ( score . isSolutionInitialized ( ) ) { solverScope . setStartingInitializedScore ( score ) ; } else { solverScope . setStartingInitializedScore ( null ) ; } if ( assertInitialScoreFromScratch ) { scoreDirector . assertWorkingScoreFromScratch ( score , "Initial score calculated" ) ; } if ( assertShadowVariablesAreNotStale ) { scoreDirector . assertShadowVariablesAreNotStale ( score , "Initial score calculated" ) ; } }
************************************************************************
************************************************************************