コード例 #1
0
ファイル: Program.cs プロジェクト: ksgyoung/DETrainsDeepNN
        static void Main(string[] args)
        {
            IConfiguration             configuration = new Configuration();
            IMutationStrategy          trialVectorMutationStrategy       = new TrialIndividualMutationStrategy(configuration);
            ICrossoverStrategy         crossoverStrategy                 = new BinomialCrossoverStrategy(configuration);
            ISelectionStrategy         generationSelectionStrategy       = new MinimisationElitistSelectionStrategy();
            ISelectionStrategy         differenceVectorSelectionStrategy = new RandomSelectionStrategy();
            IFitnessEvaluationStrategy fitnessEvaluationStrategy         = new RastriginFitnessEvaluationStrategy();

            DifferentialEvolution differentialEvolution = new DifferentialEvolution(
                trialVectorMutationStrategy,
                crossoverStrategy,
                generationSelectionStrategy,
                differenceVectorSelectionStrategy,
                fitnessEvaluationStrategy,
                configuration
                );

            differentialEvolution.Run();

            var population = differentialEvolution.population;

            foreach (Individual individual in population)
            {
                foreach (double dimension in individual.Position)
                {
                    Console.Write(Math.Round(dimension) + ", ");
                }

                Console.WriteLine();
            }

            Console.Read();
        }
コード例 #2
0
        public void GivenNoIndividuals_WhenTheRandomSelectionStrategyIsUsed_ItShouldReturnNull()
        {
            Mock <Random> mock = new Mock <Random>();

            mock.Setup(x => x.Next(It.IsAny <int>())).Returns(0);
            Random mockedRandom = mock.Object;

            RandomGenerator.GetInstance().SetRandom(mockedRandom);

            RandomSelectionStrategy selectionStrategy = new RandomSelectionStrategy();

            Assert.That(() => selectionStrategy.Select(new List <Individual>()),
                        Throws.TypeOf <NoValidIndividualsException>());
        }
コード例 #3
0
        public void GivenFourIndividuals_WhenTheRandomIndexIsThatOfTheFirstIndividual_ItShouldReturnTheFirstIndividual()
        {
            Individual individual1 = new Individual(null, new Configuration())
            {
                Fitness = 2.5555
            };

            Individual individual2 = new Individual(null, new Configuration())
            {
                Fitness = 1.234
            };

            Individual individual3 = new Individual(null, new Configuration())
            {
                Fitness = 1.234
            };

            Individual individual4 = new Individual(null, new Configuration())
            {
                Fitness = 1.234
            };

            Mock <Random> mock = new Mock <Random>();

            mock.Setup(x => x.Next(It.IsAny <int>())).Returns(0);
            Random mockedRandom = mock.Object;

            RandomGenerator.GetInstance().SetRandom(mockedRandom);

            RandomSelectionStrategy selectionStrategy = new RandomSelectionStrategy();

            Individual result = selectionStrategy.Select(new List <Individual>
            {
                individual1, individual2, individual3, individual4
            });

            Assert.AreEqual(individual1, result);
        }