示例#1
0
        private EvolutionStrategy CreateEsGriewankSample()
        {
            EvolutionStrategy es = new EvolutionStrategy();

            #region Problem Configuration

            SingleObjectiveTestFunctionProblem problem = new SingleObjectiveTestFunctionProblem();

            problem.ProblemSize.Value              = 10;
            problem.EvaluatorParameter.Value       = new GriewankEvaluator();
            problem.SolutionCreatorParameter.Value = new UniformRandomRealVectorCreator();
            problem.Maximization.Value             = false;
            problem.Bounds = new DoubleMatrix(new double[, ] {
                { -600, 600 }
            });
            problem.BestKnownQuality.Value           = 0;
            problem.BestKnownSolutionParameter.Value = new RealVector(10);
            problem.Name        = "Single Objective Test Function";
            problem.Description = "Test function with real valued inputs and a single objective.";

            #endregion

            #region Algorithm Configuration

            es.Name        = "Evolution Strategy - Griewank";
            es.Description = "An evolution strategy which solves the 10-dimensional Griewank test function";
            es.Problem     = problem;
            SamplesUtils.ConfigureEvolutionStrategyParameters <AverageCrossover, NormalAllPositionsManipulator,
                                                               StdDevStrategyVectorCreator, StdDevStrategyVectorCrossover, StdDevStrategyVectorManipulator>(
                es, 20, 500, 2, 200, false);

            StdDevStrategyVectorCreator strategyCreator = (StdDevStrategyVectorCreator)es.StrategyParameterCreator;
            strategyCreator.BoundsParameter.Value = new DoubleMatrix(new double[, ] {
                { 1, 20 }
            });

            StdDevStrategyVectorManipulator strategyManipulator =
                (StdDevStrategyVectorManipulator)es.StrategyParameterManipulator;
            strategyManipulator.BoundsParameter.Value = new DoubleMatrix(new double[, ] {
                { 1E-12, 30 }
            });
            strategyManipulator.GeneralLearningRateParameter.Value = new DoubleValue(0.22360679774997896);
            strategyManipulator.LearningRateParameter.Value        = new DoubleValue(0.39763536438352531);

            #endregion

            return(es);
        }