public ProblemPerformanceAssessor(
     OptimiserBuilder builder,
     ProblemSingleObjective evaluator,
     Func <Population, bool> convergenceCheckers)
 {
     this.builder             = builder;
     this.evaluator           = evaluator;
     this.convergenceCheckers = convergenceCheckers;
 }
Esempio n. 2
0
 /// <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;
            }
        }