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); }