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); }
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()); }
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); }
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 _)); }
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); }
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}"); } }
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); }
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); }
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()); } }
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()); } }
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); }
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); }
public void GetElementOfNPositionTest_CheckCorrectness_LowestElement_ShouldPass() { var rd = DefaultResearchParameters.GetDefaultResearchDefinitions(); var lowestElement = rd.GetElementOfNPosition(0); Assert.True(lowestElement == rd.LowerBound); }
public void GetElementOfNPositionTest_CheckCorrectness_HighestElement_ShouldPass() { var rd = DefaultResearchParameters.GetDefaultResearchDefinitions(); var highestElement = rd.GetElementOfNPosition(rd.chromosomeDefinition.GenesCount); Assert.True(highestElement == rd.UpperBound); }