public void RankSelectionOperator_SelectEntitiesFromPopulation_NullPopulation() { RankSelectionOperator op = new RankSelectionOperator(); PrivateObject accessor = new PrivateObject(op); Assert.Throws <ArgumentNullException>(() => accessor.Invoke("SelectEntitiesFromPopulation", (int)0, (Population)null)); }
public void RankSelectionOperator_Select() { GeneticAlgorithm algorithm = GetAlgorithm(); RankSelectionOperator op = new RankSelectionOperator(); op.Initialize(algorithm); SimplePopulation population = new SimplePopulation(); population.Initialize(algorithm); MockEntity entity1 = new MockEntity(); entity1.Initialize(algorithm); MockEntity entity2 = new MockEntity(); entity2.Initialize(algorithm); MockEntity entity3 = new MockEntity(); entity3.Initialize(algorithm); MockEntity entity4 = new MockEntity(); entity4.Initialize(algorithm); entity1.ScaledFitnessValue = 0; entity2.ScaledFitnessValue = 50; entity3.ScaledFitnessValue = 23; entity4.ScaledFitnessValue = 25; population.Entities.Add(entity1); population.Entities.Add(entity2); population.Entities.Add(entity3); population.Entities.Add(entity4); TestRandomUtil randomUtil = new TestRandomUtil(); RandomNumberService.Instance = randomUtil; randomUtil.Ratio = 0; IList <GeneticEntity> selectedEntities = op.SelectEntities(1, population).ToList(); Assert.Same(entity1, selectedEntities[0]); randomUtil.Ratio = .099999; selectedEntities = op.SelectEntities(1, population); Assert.Same(entity1, selectedEntities[0]); randomUtil.Ratio = .1; selectedEntities = op.SelectEntities(1, population); Assert.Same(entity3, selectedEntities[0]); randomUtil.Ratio = .299999; selectedEntities = op.SelectEntities(1, population); Assert.Same(entity3, selectedEntities[0]); randomUtil.Ratio = .3; selectedEntities = op.SelectEntities(1, population); Assert.Same(entity4, selectedEntities[0]); randomUtil.Ratio = .599999; selectedEntities = op.SelectEntities(1, population); Assert.Same(entity4, selectedEntities[0]); randomUtil.Ratio = .6; selectedEntities = op.SelectEntities(1, population); Assert.Same(entity2, selectedEntities[0]); randomUtil.Ratio = 1; selectedEntities = op.SelectEntities(1, population); Assert.Same(entity2, selectedEntities[0]); }