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); }
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]); }
public void CrossoverOperator_Ctor_InvalidSetting2() { FakeCrossoverOperator config = new FakeCrossoverOperator(); Assert.Throws <ValidationException>(() => config.CrossoverRate = -1); }
public void CrossoverOperator_Ctor_NullAlgorithm() { FakeCrossoverOperator op = new FakeCrossoverOperator(); Assert.Throws <ArgumentNullException>(() => op.Initialize(null)); }