コード例 #1
0
ファイル: PopulationTests.cs プロジェクト: jarr-us/jarrus
        public void ItHasAValidConstructor()
        {
            var population = new OrderedPopulation(GATestHelper.GetTravelingSalesmanDefaultConfiguration(), _pool, _possibleValues);

            Assert.IsNotNull(population.Configuration);
            Assert.IsNotNull(population.Chromosomes);
        }
コード例 #2
0
ファイル: PopulationTests.cs プロジェクト: jarr-us/jarrus
        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);
        }
コード例 #3
0
ファイル: PopulationTests.cs プロジェクト: jarr-us/jarrus
        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);
            }
        }
コード例 #4
0
ファイル: PopulationTests.cs プロジェクト: jarr-us/jarrus
        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);
        }
コード例 #5
0
        public void ItCanAddToTheNextGeneration()
        {
            var population = GetExamplePopulationForOrdered();
            var config     = GetConfigurationForOrdered();

            config.DuplicationStrategy = DuplicationStrategy.Prevent;

            var orderedPopulation = new OrderedPopulation(config, population, population[0].Genes);

            Assert.IsNotNull(orderedPopulation);

            orderedPopulation.AddToNextGeneration(population[0]);
            Assert.AreEqual(1, orderedPopulation.NextGeneration.Count);
            Assert.AreEqual(1, orderedPopulation.OptionsInPool.Count);
        }
コード例 #6
0
ファイル: PopulationTests.cs プロジェクト: jarr-us/jarrus
        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());
        }
コード例 #7
0
ファイル: PopulationTests.cs プロジェクト: jarr-us/jarrus
        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);
        }
コード例 #8
0
ファイル: PopulationTests.cs プロジェクト: jarr-us/jarrus
        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);
            }
        }