Beispiel #1
0
        private static OptimizationResult <double> RunExperiment(IEvaluation <double> evaluation, int maxIterations, double sigma, bool adjustSigmas, int adaptation, int?seed = null, int archiveSize = 1, double modifier = 1.0)
        {
            lock (evaluation)
            {
                IterationsStopCondition stopCondition = new IterationsStopCondition(evaluation.dMaxValue, maxIterations);
                List <double>           sigmas;
                if (adjustSigmas)
                {
                    sigmas = AdjustSigmas(evaluation, sigma);
                }
                else
                {
                    sigmas = Enumerable.Repeat(sigma, evaluation.iSize).ToList();
                }
                RealGaussianMutation        mutation = new RealGaussianMutation(sigmas, evaluation, seed);
                ARealMutationES11Adaptation mutationAdaptation;
                switch (adaptation)
                {
                case 0:
                    mutationAdaptation = new RealNullRealMutationES11Adaptation(mutation);
                    break;

                case 1:
                    mutationAdaptation = new RealOneFifthRuleMutationES11Adaptation(archiveSize, modifier, mutation);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                RealEvolutionStrategy11 es11 = new RealEvolutionStrategy11(evaluation, stopCondition, mutationAdaptation, seed);
                es11.Run();
                return(es11.Result);
            }
        }
        private List <String> Lab3CheckMineHistory(int?seed)
        {
            List <String> resultData = new List <String>();

            IEvaluation <double>[] benchmarkProblems = GenerateProblems();

            foreach (var problem in benchmarkProblems)
            {
                problem.pcConstraint.tGetLowerBound(0);
                List <double> sigmas = Enumerable.Repeat(0.1, problem.iSize).ToList();

                IterationsStopCondition stopCondition = new IterationsStopCondition(problem.dMaxValue, 10000);
                RealGaussianMutation    mutation      = new RealGaussianMutation(sigmas, problem, seed);
                var mutationAdaptation = new RealOneFifthRuleMutationES11Adaptation(5, 20, mutation);

                RealEvolutionStrategy11 optimizer = new RealEvolutionStrategy11(problem, stopCondition, mutationAdaptation, seed);

                optimizer.Run();

                resultData.Add(FormatSave(optimizer));

                ReportOptimizationResult(optimizer.Result);
            }

            return(resultData);
        }