コード例 #1
0
        public void WhenCrossoverSelectionDefaultIsRequested_ShouldBeCorrect()
        {
            ConfigurationProvider.EnsureIsBuilt();

            CrossoverProvider.AssertSelectionArray(
                new Crossover.CrossoverType[]
            {
                Crossover.CrossoverType.OnePoint,
                Crossover.CrossoverType.TwoPoint,
                Crossover.CrossoverType.Random
            });
        }
コード例 #2
0
        public void WhenCrossoverSelectionDefaultIsRequested_RequestedCrossoversShouldHaveApproxEqualChance()
        {
            int onePoint = 0;
            int twoPoint = 0;
            int random   = 0;

            int tries = 10000;

            int min = (int)(tries * ((double)3 / 10));
            int max = (int)(tries * ((double)4 / 10));

            ConfigurationProvider.EnsureIsBuilt();

            for (int i = 0; i < tries; i++)
            {
                switch (CrossoverProvider.GetNextCrossover().CrossoverMethod)
                {
                case Crossover.CrossoverType.OnePoint:
                    onePoint++;
                    break;

                case Crossover.CrossoverType.TwoPoint:
                    twoPoint++;
                    break;

                case Crossover.CrossoverType.Random:
                    random++;
                    break;
                }
            }

            Assert.LessOrEqual(onePoint, max);
            Assert.GreaterOrEqual(onePoint, min);

            Assert.LessOrEqual(twoPoint, max);
            Assert.GreaterOrEqual(twoPoint, min);

            Assert.LessOrEqual(random, max);
            Assert.GreaterOrEqual(random, min);
        }