public void GetElementOfNPositionTest_CheckIfValueAreDifferent_ShouldPass(int a, int b)
 {
     var rd = DefaultResearchParameters.GetDefaultResearchDefinitions();
     var valueFirst = rd.GetElementOfNPosition(a);
     var valueSecond = rd.GetElementOfNPosition(b);
     _testOutputHelper.WriteLine($"{valueFirst} : {valueSecond}");
     Assert.False(valueFirst == valueSecond);
 }
Exemplo n.º 2
0
        public void GeneInBinaryTest_CheckForLengthOfGene_ShouldPass(int pow)
        {
            var rd            = DefaultResearchParameters.GetDefaultResearchDefinitions(pow);
            var rndChromosome = Chromosome.NewRandomChromosome(rd);

            Assert.True(rndChromosome.GeneInBinary().Length == pow);
            _testOutputHelper.WriteLine(rndChromosome.GeneInBinary());
        }
Exemplo n.º 3
0
        public void SetGeneTest(string binary, int expectedGene)
        {
            var rd         = DefaultResearchParameters.GetDefaultResearchDefinitions();
            var chromosome = new Chromosome(rd);

            chromosome.SetGene(binary);
            _testOutputHelper.WriteLine($"{chromosome.Gene} {expectedGene}");
            Assert.True(chromosome.Gene == expectedGene);
        }
Exemplo n.º 4
0
        public void BinaryGeneFixTest_NormalData_ShouldPass(string valueToFix)
        {
            var cd    = DefaultResearchParameters.GetChromosomeDefinition();
            var value = cd.BinaryGeneFix(valueToFix);

            _testOutputHelper.WriteLine($"Chromosome lenght = {cd.ChromosomeLength}");
            _testOutputHelper.WriteLine(value);
            Assert.True(value.Length == cd.ChromosomeLength);
            Assert.True(int.TryParse(value, out _));
        }
Exemplo n.º 5
0
        public void RouletteWheelTest_NormalPopWithFixedFitness_ShouldPass()
        {
            var rd      = DefaultResearchParameters.GetDefaultResearchDefinitions();
            var testPop = Fitness.FixedFitPop(
                Chromosome.NewRandomPopulation(rd, rd.Population));
            var outputTestPop = new RouletteWheel().DrawChromosomes(testPop);

            var fitnessSumTestPop       = testPop.Sum(x => x.Fitness);
            var fitnessSumOutputTestPop = outputTestPop.Sum(x => x.Fitness);

            Assert.True(fitnessSumTestPop != fitnessSumOutputTestPop);
        }
Exemplo n.º 6
0
        public void FixedFitPopTest_RandomPop_ShouldPass()
        {
            var rd        = DefaultResearchParameters.GetDefaultResearchDefinitions();
            var listOfPop = Chromosome.NewRandomPopulation(rd, 10);
            var list      = Fitness.FixedFitPop(listOfPop, out var lowestKey);

            _testOutputHelper.WriteLine($"Lowest key {lowestKey}");
            Assert.True(lowestKey > 0);
            foreach (var chromosome in list)
            {
                Assert.True(chromosome.Fitness >= 0);
                _testOutputHelper.WriteLine($"{chromosome.Fitness}");
            }
        }
Exemplo n.º 7
0
        public void CompareToTest_AShouldBeHigher_ShouldPass(double aFitness, double bFitness)
        {
            var rd          = DefaultResearchParameters.GetDefaultResearchDefinitions();
            var aChromosome = new Chromosome(rd)
            {
                AbsFitness = aFitness
            };
            var bChromosome = new Chromosome(rd)
            {
                AbsFitness = bFitness
            };

            Assert.True(aChromosome.CompareTo(bChromosome) > 0);
        }
Exemplo n.º 8
0
        public void NewRandomPopulationTest_RandomChromosomes_ShouldPassWithErrorMargin()
        {
            var rd          = DefaultResearchParameters.GetDefaultResearchDefinitions();
            var listOfPop   = Chromosome.NewRandomPopulation(rd, 10);
            var errorMargin = 2;
            var errors      = 0;

            for (int i = 0; i < listOfPop.Count - 1; i++)
            {
                if (listOfPop[i].Gene == listOfPop[i + 1].Gene)
                {
                    errors++;
                }
                _testOutputHelper.WriteLine($"{listOfPop[i].Gene}");
            }
            Assert.True(errors < errorMargin);
        }
Exemplo n.º 9
0
        public void MixChromosomesTest_NormalChromosome_NormalPower_TestOutputLength_ShouldPass(int pow)
        {
            var rd          = DefaultResearchParameters.GetDefaultResearchDefinitions(pow);
            var chromosomeA = Chromosome.NewRandomChromosome(rd);
            var chromosomeB = Chromosome.NewRandomChromosome(rd);

            _testOutputHelper.WriteLine(chromosomeA.GeneInBinary());
            _testOutputHelper.WriteLine(chromosomeB.GeneInBinary());

            var output = PostSelection.MixChromosomes(chromosomeA, chromosomeB, 1);

            foreach (var chromosome in output)
            {
                Assert.True(chromosome.GeneInBinary().Length == pow);
                _testOutputHelper.WriteLine(chromosome.GeneInBinary());
            }
        }
Exemplo n.º 10
0
        public void MixChromosomesTest_EdgeChromosomes_NormalPower_ShouldPass(int pow)
        {
            var rd = DefaultResearchParameters.GetDefaultResearchDefinitions(pow);
            var highestChromosome = DefaultResearchParameters.GetHigherChromosome(rd);
            var lowestChromosome  = DefaultResearchParameters.GetLowestChromosome(rd);

            _testOutputHelper.WriteLine(highestChromosome.GeneInBinary());
            _testOutputHelper.WriteLine(lowestChromosome.GeneInBinary());

            var output = PostSelection.MixChromosomes(highestChromosome, lowestChromosome, 1);

            foreach (var chromosome in output)
            {
                Assert.Contains("1", chromosome.GeneInBinary());
                Assert.Contains("0", chromosome.GeneInBinary());
                _testOutputHelper.WriteLine(chromosome.GeneInBinary());
            }
        }
Exemplo n.º 11
0
        public void MixChromosomesTest_TryFindCrossingPointOnEndAllel_ShouldPass()
        {
            var rd = DefaultResearchParameters.GetDefaultResearchDefinitions(4);
            var highestChromosome = DefaultResearchParameters.GetHigherChromosome(rd);
            var lowestChromosome  = DefaultResearchParameters.GetLowestChromosome(rd);
            var output            = new List <Chromosome>();
            var found             = false;

            for (int i = 0; i < 1000; i++)
            {
                output = PostSelection.MixChromosomes(highestChromosome, lowestChromosome, 1);
                if (output.All(x => x.GeneInBinary() != "1110"))
                {
                    continue;
                }
                found = true;
                break;
            }
            _testOutputHelper.WriteLine(output[0].GeneInBinary());
            _testOutputHelper.WriteLine(output[1].GeneInBinary());
            Assert.True(found);
        }
Exemplo n.º 12
0
        public void CalculateFitnessTest_CheckFitnessForRandomGenes_ShouldPass()
        {
            var rd          = DefaultResearchParameters.GetDefaultResearchDefinitions();
            var chromosomes = Chromosome.NewRandomPopulation(rd, rd.Population);

            foreach (var chromosome in chromosomes)
            {
                chromosome.SetFitness();
            }

            var errors = 0;

            for (int i = 0; i < chromosomes.Count - 1; i++)
            {
                if (chromosomes[i].Fitness == chromosomes[i + 1].Fitness)
                {
                    errors++;
                }
                _testOutputHelper.WriteLine($"Fitness of {i}: {chromosomes[i].Fitness}, gene {chromosomes[i].Gene}");
            }

            Assert.True(errors == 0);
        }
Exemplo n.º 13
0
 public void GetElementOfNPositionTest_CheckCorrectness_LowestElement_ShouldPass()
 {
     var rd = DefaultResearchParameters.GetDefaultResearchDefinitions();
     var lowestElement = rd.GetElementOfNPosition(0);
     Assert.True(lowestElement == rd.LowerBound);
 }
Exemplo n.º 14
0
 public void GetElementOfNPositionTest_CheckCorrectness_HighestElement_ShouldPass()
 {
     var rd = DefaultResearchParameters.GetDefaultResearchDefinitions();
     var highestElement = rd.GetElementOfNPosition(rd.chromosomeDefinition.GenesCount);
     Assert.True(highestElement == rd.UpperBound);
 }