Beispiel #1
0
        public void ItErrorsIfEndIsSameAsStart()
        {
            var chromosome = GATestHelper.GetAlphabetCharacterChromosome();
            var mutation   = new ScrambleMutation();

            mutation.Scramble(chromosome, 2, 2, GATestHelper.GetTravelingSalesmanDefaultConfiguration());
        }
Beispiel #2
0
        public void ItHasAValidConstructor()
        {
            var population = new OrderedPopulation(GATestHelper.GetTravelingSalesmanDefaultConfiguration(), _pool, _possibleValues);

            Assert.IsNotNull(population.Configuration);
            Assert.IsNotNull(population.Chromosomes);
        }
Beispiel #3
0
        public void ItConstructsProperlyIfAllFitnessScoresAreAboveOrEqualToZero()
        {
            var genome          = GATestHelper.GetTravelingSalesmanPopulation();
            var parentSelection = new RouletteWheelSelection();

            parentSelection.Setup(genome, GATestHelper.GetTravelingSalesmanDefaultConfiguration());
        }
Beispiel #4
0
        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();
        }
Beispiel #7
0
        public void ItErrorsIfTheIndexesAreOutOfRange()
        {
            var chromosome = GATestHelper.GetAlphabetCharacterChromosome();
            var mutation   = new ScrambleMutation();

            mutation.Scramble(chromosome, -1, 1, GATestHelper.GetTravelingSalesmanDefaultConfiguration());
        }
Beispiel #8
0
        public void ItThrowsAnExceptionIfCrossoverRateIsAboveOne()
        {
            var config = GATestHelper.GetTravelingSalesmanDefaultConfiguration();

            config.CrossoverRate = 1.01;
            config.ValidateProperties();
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        public void ItCanDetermineIfTheChromosomeShouldRetireBasedOnAge()
        {
            var chromosome = GATestHelper.GetTravelingSalesmanChromosome();

            chromosome.Age = 100;

            Assert.IsTrue(chromosome.ShouldRetire(GATestHelper.GetTravelingSalesmanDefaultConfiguration()));
        }
Beispiel #11
0
        public void ItCanGenerateAGenome()
        {
            var configuration = GATestHelper.GetTravelingSalesmanDefaultConfiguration();
            var chromosome    = GATestHelper.GetTravelingSalesmanChromosome();
            var pool          = PopulationGenerator.GenerateOrderedPopulation(configuration, chromosome.Genes);

            Assert.AreEqual(configuration.PopulationSize, pool.Length);
        }
Beispiel #12
0
        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());
        }
Beispiel #13
0
        public void ItCanGenerateAnUnorderedPopulation()
        {
            var configuration = GATestHelper.GetTravelingSalesmanDefaultConfiguration();

            configuration.GeneSize = 11;
            var pool = PopulationGenerator.GenerateUnorderedPopulation(configuration, typeof(PhraseGene));

            Assert.AreEqual(configuration.PopulationSize, pool.Length);
        }
Beispiel #14
0
        public void ItFailsIfANegativeFitnessScoreIsPassed()
        {
            var genome = GATestHelper.GetTravelingSalesmanPopulation();

            genome[0].FitnessScore = -1;
            var parentSelection = new RouletteWheelSelection();

            parentSelection.Setup(genome, GATestHelper.GetTravelingSalesmanDefaultConfiguration());
        }
Beispiel #15
0
        public void ItThrowsAnErrorIfTheParentsAreNotLargeEnough()
        {
            var father = new OrderedChromosome(1);
            var mother = new OrderedChromosome(1);

            var singlePointCrossover = new SinglePointCrossover();

            singlePointCrossover.Execute(father, mother, GATestHelper.GetTravelingSalesmanDefaultConfiguration());
        }
Beispiel #16
0
        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);
        }
Beispiel #20
0
        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());
            }
        }
Beispiel #22
0
        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());
        }
Beispiel #23
0
        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));
        }
Beispiel #24
0
        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));
            }
        }
Beispiel #26
0
        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);
        }
Beispiel #27
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());
        }
Beispiel #28
0
        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);
        }
Beispiel #29
0
        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);
        }