public void ItErrorsIfEndIsSameAsStart() { var chromosome = GATestHelper.GetAlphabetCharacterChromosome(); var mutation = new ScrambleMutation(); mutation.Scramble(chromosome, 2, 2, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); }
public void ItHasAValidConstructor() { var population = new OrderedPopulation(GATestHelper.GetTravelingSalesmanDefaultConfiguration(), _pool, _possibleValues); Assert.IsNotNull(population.Configuration); Assert.IsNotNull(population.Chromosomes); }
public void ItConstructsProperlyIfAllFitnessScoresAreAboveOrEqualToZero() { var genome = GATestHelper.GetTravelingSalesmanPopulation(); var parentSelection = new RouletteWheelSelection(); parentSelection.Setup(genome, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); }
public void ItThrowsAnExceptionIfElitismRateIsBelowZero() { var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); config.ElitismRate = -0.01; config.ValidateProperties(); }
public void ItHasAValidConstructor() { var parentSelection = new RouletteWheelSelection(); parentSelection.Setup(_pool, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); parentSelection.GetParents(); }
public void ItHasAValidConstructor() { var parentSelection = new StochasticUniversalSamplingSelection(); parentSelection.Setup(_pool, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); parentSelection.GetParents(); }
public void ItErrorsIfTheIndexesAreOutOfRange() { var chromosome = GATestHelper.GetAlphabetCharacterChromosome(); var mutation = new ScrambleMutation(); mutation.Scramble(chromosome, -1, 1, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); }
public void ItThrowsAnExceptionIfCrossoverRateIsAboveOne() { var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); config.CrossoverRate = 1.01; config.ValidateProperties(); }
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 ItCanDetermineIfTheChromosomeShouldRetireBasedOnAge() { var chromosome = GATestHelper.GetTravelingSalesmanChromosome(); chromosome.Age = 100; Assert.IsTrue(chromosome.ShouldRetire(GATestHelper.GetTravelingSalesmanDefaultConfiguration())); }
public void ItCanGenerateAGenome() { var configuration = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); var chromosome = GATestHelper.GetTravelingSalesmanChromosome(); var pool = PopulationGenerator.GenerateOrderedPopulation(configuration, chromosome.Genes); Assert.AreEqual(configuration.PopulationSize, pool.Length); }
public void ItThrowsAnErrorIfTheMotherIsNull() { var father = new OrderedChromosome(GATestHelper.GetRandomInteger(16, 32)); var mother = new OrderedChromosome(GATestHelper.GetRandomInteger(1, 8)); var singlePointCrossover = new SinglePointCrossover(); singlePointCrossover.Execute(father, null, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); }
public void ItCanGenerateAnUnorderedPopulation() { var configuration = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); configuration.GeneSize = 11; var pool = PopulationGenerator.GenerateUnorderedPopulation(configuration, typeof(PhraseGene)); Assert.AreEqual(configuration.PopulationSize, pool.Length); }
public void ItFailsIfANegativeFitnessScoreIsPassed() { var genome = GATestHelper.GetTravelingSalesmanPopulation(); genome[0].FitnessScore = -1; var parentSelection = new RouletteWheelSelection(); parentSelection.Setup(genome, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); }
public void ItThrowsAnErrorIfTheParentsAreNotLargeEnough() { var father = new OrderedChromosome(1); var mother = new OrderedChromosome(1); var singlePointCrossover = new SinglePointCrossover(); singlePointCrossover.Execute(father, mother, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); }
public void ItDeterminesFitnessScoreOnCreation() { var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); var population = new OrderedPopulation(config, _pool, _possibleValues); foreach (var chromosome in population.Chromosomes) { Assert.AreNotEqual(0, chromosome.FitnessScore); } }
public void ItCanGetAValidParent() { var parentSelection = new RouletteWheelSelection(); parentSelection.Setup(_pool, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); var parent = parentSelection.GetParent(0.22); Assert.IsNotNull(parent); }
public void ItCanGetAValidParent() { var parentSelection = new StochasticUniversalSamplingSelection(); parentSelection.Setup(_pool, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); var parent = parentSelection.GetParent(0.22); Assert.IsNotNull(parent); }
private void SetConfiguration() { _configuration = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); _configuration.DuplicationStrategy = DuplicationStrategy.Prevent; _configuration.PopulationSize = 10; _configuration.MaxRetirement = 2; _configuration.MaxGenerations = 5; _exampleGenes = Array.ConvertAll(GATestHelper.GetTravelingSalesmanChromosome().Genes, option => (TravelingSalesmanGene)option); }
public void ItCanSwapGenesAndStaysWithinRange() { var chromosome = GATestHelper.GetAlphabetCharacterChromosome(); var mutation = new InsertMutation(); for (int i = 0; i < 100; i++) { mutation.Mutate(chromosome, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); } }
public void ItCanRandomlyInverseGenes() { var chromosome = GATestHelper.GetAlphabetCharacterChromosome(); var mutation = new InversionMutation(); for (int i = 0; i < 100; i++) { mutation.Mutate(chromosome, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); } }
public void ItDoesNotThrowErrorsIfValidationPasses() { var size = GATestHelper.GetRandomInteger(16, 256); var father = new OrderedChromosome(size); var mother = new OrderedChromosome(size); var singlePointCrossover = new SinglePointCrossover(); singlePointCrossover.Execute(father, mother, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); }
public void ItCanPerformCrossover() { var one = GATestHelper.GetNumericChromosomeOne(); var two = GATestHelper.GetNumericChromosomeTwo(); var cc = new CycleCrossover(); var child = cc.Execute(one, two, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); Assert.AreEqual("1,2,6,4,5,3,7", string.Join(",", (IEnumerable <Gene>)child.Genes)); }
public void ItCanDetermineTheCycle() { var one = GATestHelper.GetNumericChromosomeOne(); var two = GATestHelper.GetNumericChromosomeTwo(); var cc = new CycleCrossover(); cc.Execute(one, two, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); Assert.AreEqual("0,4,1,3,6", string.Join(",", cc.Cycle)); }
public void ItCantReturnTheSameParentTwice() { var parentSelection = new RouletteWheelSelection(); parentSelection.Setup(_pool, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); for (int i = 0; i < 1000; i++) { var parent = parentSelection.GetParents(); Assert.IsFalse(ReferenceEquals(parent.Father, parent.Mother)); } }
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 ItCanPerformACrossover() { var crossover = new OrderCrossover(); var settings = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); var child = crossover.Execute(_father, _mother, settings); Console.Out.WriteLine("Child: " + child.ToString()); Assert.AreNotEqual(_father.ToString(), child.ToString()); Assert.AreNotEqual(_mother.ToString(), child.ToString()); }
public void ItCanEnsureTheMotherAndFatherPassAtLeastOneGene() { var father = GATestHelper.GetAlphabetCharacterChromosome(); var mother = GATestHelper.GetAlphabetCharacterChromosome(); mother.Genes.Shuffle(new Random()); var singlePoint = new SinglePointCrossover(); var child = singlePoint.Execute(father, mother, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); Assert.AreNotEqual(child, father); }
public void ItCanUseUnorderedGenes() { var configuration = GATestHelper.GetTravelingSalesmanDefaultConfiguration(); configuration.GeneSize = 11; var pool = PopulationGenerator.GenerateUnorderedPopulation(configuration, typeof(PhraseGene)); var population = new UnorderedPopulation(GATestHelper.GetTravelingSalesmanDefaultConfiguration(), _pool, typeof(PhraseGene)); Assert.IsNotNull(population.Configuration); Assert.IsNotNull(population.Chromosomes); }
public void ItCanReturnParents() { var parentSelection = new RouletteWheelSelection(); parentSelection.Setup(_pool, GATestHelper.GetTravelingSalesmanDefaultConfiguration()); var parent = parentSelection.GetParents(); Assert.IsNotNull(parent); Assert.IsNotNull(parent.Father); Assert.IsNotNull(parent.Mother); }