コード例 #1
0
        public void CrossoverOperator_Crossover()
        {
            double crossoverRate            = 1; // force crossover to occur
            MockGeneticAlgorithm  algorithm = GetGeneticAlgorithm(crossoverRate);
            FakeCrossoverOperator op        = new FakeCrossoverOperator {
                CrossoverRate = crossoverRate
            };

            op.Initialize(algorithm);
            MockEntity entity1 = new MockEntity();

            entity1.Initialize(algorithm);
            entity1.Age        = 2;
            entity1.Identifier = "1";
            MockEntity entity2 = new MockEntity();

            entity2.Initialize(algorithm);
            entity2.Age        = 5;
            entity2.Identifier = "3";
            IList <GeneticEntity> geneticEntities = op.Crossover(new GeneticEntity[] { entity1, entity2 }).ToList();

            Assert.NotSame(entity1, geneticEntities[1]);
            Assert.NotSame(entity2, geneticEntities[0]);
            Assert.Equal(entity1.Identifier, ((MockEntity)geneticEntities[1]).Identifier);
            Assert.Equal(entity2.Identifier, ((MockEntity)geneticEntities[0]).Identifier);

            Assert.Equal(0, geneticEntities[0].Age);
            Assert.Equal(0, geneticEntities[1].Age);
        }
コード例 #2
0
        public void CrossoverOperator_Crossover_NoOp()
        {
            double crossoverRate            = 0; // force crossover not to occur
            MockGeneticAlgorithm  algorithm = GetGeneticAlgorithm(crossoverRate);
            FakeCrossoverOperator op        = (FakeCrossoverOperator)algorithm.CrossoverOperator;

            op.Initialize(algorithm);
            MockEntity entity1 = new MockEntity();

            entity1.Initialize(algorithm);
            entity1.Identifier = "1";
            MockEntity entity2 = new MockEntity();

            entity2.Initialize(algorithm);
            entity2.Identifier = "3";
            IList <GeneticEntity> geneticEntities = op.Crossover(new GeneticEntity[] { entity1, entity2 }).ToList();

            Assert.Same(entity1, geneticEntities[0]);
            Assert.Same(entity2, geneticEntities[1]);
        }
コード例 #3
0
        public void CrossoverOperator_Ctor_InvalidSetting2()
        {
            FakeCrossoverOperator config = new FakeCrossoverOperator();

            Assert.Throws <ValidationException>(() => config.CrossoverRate = -1);
        }
コード例 #4
0
        public void CrossoverOperator_Ctor_NullAlgorithm()
        {
            FakeCrossoverOperator op = new FakeCrossoverOperator();

            Assert.Throws <ArgumentNullException>(() => op.Initialize(null));
        }