public void InversionOperatorShouldReturnCorrectChildren() { IGene[] parent = new IGene[] { new UintGene(1), new UintGene(2), new UintGene(3), new UintGene(4), new UintGene(5), new UintGene(6), new UintGene(7), new UintGene(8), new UintGene(9) }; IGene[] expectedChild = new IGene[] { new UintGene(1), new UintGene(2), new UintGene(3), new UintGene(8), new UintGene(7), new UintGene(6), new UintGene(5), new UintGene(4), new UintGene(9) }; int startPoint = 3, length = 5; var swap = new InversionOperator(); swap.Run(parent, startPoint, length); bool areChildrenEqual = true; for (int i = 0; i < expectedChild.Length; ++i) { areChildrenEqual &= expectedChild[i].Equals(parent[i]); } Assert.AreEqual(true, areChildrenEqual); }
public void InversionOperator_GenerateMutation_NullEntity() { InversionOperator op = new InversionOperator(); PrivateObject accessor = new PrivateObject(op); Assert.Throws <ArgumentNullException>(() => accessor.Invoke("GenerateMutation", (GeneticEntity)null)); }
public void InversionOperator_GenerateMutation_NoMutation() { InversionOperator op = new InversionOperator { MutationRate = 0 }; PrivateObject accessor = new PrivateObject(op); bool result = (bool)accessor.Invoke("GenerateMutation", new BinaryStringEntity()); Assert.False(result); }
public void InversionOperator_Mutate() { GeneticAlgorithm algorithm = new MockGeneticAlgorithm { SelectionOperator = new MockSelectionOperator(), PopulationSeed = new MockPopulation(), FitnessEvaluator = new MockFitnessEvaluator(), GeneticEntitySeed = new BinaryStringEntity { MinimumStartingLength = 4, MaximumStartingLength = 4 }, MutationOperator = new InversionOperator { MutationRate = 1 } }; algorithm.GeneticEntitySeed.Initialize(algorithm); InversionOperator op = (InversionOperator)algorithm.MutationOperator; op.Initialize(algorithm); BinaryStringEntity entity = (BinaryStringEntity)algorithm.GeneticEntitySeed.CreateNewAndInitialize(); entity.Age = 10; entity.Initialize(algorithm); entity[0] = true; entity[1] = true; entity[2] = false; entity[3] = true; FakeRandomUtil randomUtil = new FakeRandomUtil(); RandomNumberService.Instance = randomUtil; randomUtil.RandomValue = 1; GeneticEntity mutant = op.Mutate(entity); Assert.Equal("1011", mutant.Representation); Assert.Equal(0, mutant.Age); }