Beispiel #1
0
        public void SelectChromosomes_offspringSizeGreaterThanMaxSize_Selectoffspring()
        {
            var target = new FitnessBasedReinsertion();

            var population = new Population(2, 3, MockRepository.GenerateStub <ChromosomeBase> (2));
            var offspring  = new List <IChromosome> ()
            {
                MockRepository.GenerateStub <ChromosomeBase> (2),
                MockRepository.GenerateStub <ChromosomeBase> (2),
                MockRepository.GenerateStub <ChromosomeBase> (3),
                MockRepository.GenerateStub <ChromosomeBase> (4)
            };

            offspring [0].Fitness = 0.2;
            offspring [1].Fitness = 0.3;
            offspring [2].Fitness = 0.5;
            offspring [3].Fitness = 0.7;

            var parents = new List <IChromosome> ()
            {
                MockRepository.GenerateStub <ChromosomeBase> (5),
                MockRepository.GenerateStub <ChromosomeBase> (6),
                MockRepository.GenerateStub <ChromosomeBase> (7),
                MockRepository.GenerateStub <ChromosomeBase> (8)
            };

            var selected = target.SelectChromosomes(population, offspring, parents);

            Assert.AreEqual(3, selected.Count);
            Assert.AreEqual(4, selected [0].Length);
            Assert.AreEqual(3, selected [1].Length);
            Assert.AreEqual(2, selected [2].Length);
        }
        public IReinsertion FitnessBased()
        {
            var target = new FitnessBasedReinsertion();

            target.SelectChromosomes(
                new Population(5, 5, new TspChromosome(_numberOfCities)),
                new List <IChromosome>
            {
                new TspChromosome(_numberOfCities),
                new TspChromosome(_numberOfCities),
                new TspChromosome(_numberOfCities),
                new TspChromosome(_numberOfCities),
                new TspChromosome(_numberOfCities),
                new TspChromosome(_numberOfCities)
            },
                _parents);
            return(target);
        }