public ProblemPerformanceAssessor( OptimiserBuilder builder, ProblemSingleObjective evaluator, Func <Population, bool> convergenceCheckers) { this.builder = builder; this.evaluator = evaluator; this.convergenceCheckers = convergenceCheckers; }
/// <summary> /// Constructs the performance assessment class. /// </summary> /// <param name="optimiserDescription">A user-friendly description of the optimiser (perhaps its class name).</param> /// <param name="problem">The problem description.</param> /// <param name="results">The completed optimisation runner.</param> public ProblemPerformanceSingleObjective( string optimiserDescription, ProblemSingleObjective problem, OptimiserRunner results) { this.optimiserDescription = optimiserDescription; this.problem = problem; if (results.StartTime == null || results.BestFound == null || results.AllEvaluated == null) { throw new ArgumentNullException(nameof(results), "Optimisation has not been run."); } startRunTime = (DateTime)results.StartTime; bestFound = results.BestFound; allEvaluated = results.AllEvaluated; GlobalOptimumSolution = problem.Evaluate(problem.GetGlobalOptimum()).ToArray(); }