public ProblemPerformanceAssessor( OptimiserBuilder builder, ProblemSingleObjective evaluator, Func <Population, bool> convergenceCheckers) { this.builder = builder; this.evaluator = evaluator; this.convergenceCheckers = convergenceCheckers; }
/// <summary> /// Constructor. /// </summary> /// <param name="builder">The builder for the optimisation elements.</param> /// <param name="evaluator">The evaluator.</param> /// <param name="convergenceCheckers">Checks for early completion.</param> /// <param name="reporters">The action that reports progress.</param> public OptimiserRunnerBasic( OptimiserBuilder builder, IEvaluator evaluator, Func <Population, bool> convergenceCheckers, Action <Population> reporters) { this.builder = builder; this.evaluator = evaluator; this.convergenceCheckers = convergenceCheckers; this.reporters = reporters; cancelDemanded = false; // For certainty! }
/// <summary> /// Constructor. /// </summary> /// <param name="builder">The builder for the optimisation elements.</param> /// <param name="evaluator">The evaluator.</param> /// <param name="convergenceCheckers">Checks for early completion.</param> /// <param name="reporters">The action that reports progress.</param> public OptimiserRunnerParallel( OptimiserBuilder builder, IEvaluator evaluator, Func <Population, bool> convergenceCheckers, Action <Population> reporters) { this.builder = builder; this.evaluator = evaluator; this.convergenceCheckers = convergenceCheckers; reportingAgent = new ActionBlock <Population>(reporters); NumberOfIndividualsToStart = builder.CreateOptimiser().Population.TargetSize / 4; if (NumberOfIndividualsToStart < 4) { NumberOfIndividualsToStart = 4; } }