solver.solve(inputSolution);
long timeMillisSpent = solver.getTimeMillisSpent();
Solution outputSolution = solver.getBestSolution();
DefaultSolverScope solverScope = ((DefaultSolver) solver).getSolverScope();
SolutionDescriptor solutionDescriptor = solverScope.getSolutionDescriptor();
problemBenchmarkResult.registerScale(solutionDescriptor.getEntityCount(outputSolution),
solutionDescriptor.getVariableCount(outputSolution),
solutionDescriptor.getProblemScale(outputSolution));
singleBenchmarkResult.setScore(outputSolution.getScore());
singleBenchmarkResult.setTimeMillisSpent(timeMillisSpent);
singleBenchmarkResult.setCalculateCount(solverScope.getCalculateCount());
for (SingleStatistic singleStatistic : singleBenchmarkResult.getEffectiveSingleStatisticMap().values()) {
singleStatistic.close(solver);
singleStatistic.writeCsvStatisticFile();
}