public void ItCanAdvanceToTheNextGeneration() { var population = new OrderedPopulation(GATestHelper.GetTravelingSalesmanDefaultConfiguration(), _pool, _possibleValues); var nextGen = population.Advance(); Assert.AreEqual(0, population.GenerationNumber); Assert.AreEqual(1, nextGen.GenerationNumber); }
public void ItKeepsElities() { var toKeep = GATestHelper.GetRandomInteger(1, 99); var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); config.ElitismRate = 0.01 * toKeep; var population = new OrderedPopulation(config, _pool, _possibleValues); var nextGen = population.Advance(); Assert.IsTrue(nextGen.Chromosomes.Where(o => o.GenerationNumber == 1).Count() > 0); }
public void ItAllowsDuplicates() { var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); var population = new OrderedPopulation(config, _pool, _possibleValues); var nextGen = population.Advance(); var hashset = new HashSet <string>(); foreach (var chromosome in nextGen.Chromosomes) { hashset.Add(chromosome.ToString()); } Assert.AreNotEqual(config.PopulationSize, hashset.Count()); }
public void ItCanRetireChromosomes() { var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); config.RetirementStrategy = RetirementStrategy.MaxAge; config.ElitismRate = 0.10; config.MaxRetirement = 1; config.MaxGenerations = 4; config.PopulationSize = 10; var population = new OrderedPopulation(config, _pool, _possibleValues); var nextGen = population.Advance(); Assert.IsTrue(nextGen.Retired.Count() > 0); }
public void ItCanAdvanceToTheNextGenerationViaImmigration() { var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); config.CrossoverRate = 0.0; config.ElitismRate = 0.0; var population = new OrderedPopulation(config, _pool, _possibleValues); var nextGen = population.Advance(); Assert.AreEqual(0, population.GenerationNumber); Assert.AreEqual(1, nextGen.GenerationNumber); foreach (var chromosome in nextGen.Chromosomes) { Assert.AreEqual(1, chromosome.GenerationNumber); } }