public void MakeGenomeValidDoesNothingForValidGenome() { var genomeBuilder = GenomeBuilderTest.CreateGenomeBuilder(); var genome = GenomeBuilderTest.BuildFittingGenome(); var originalGenome = new Genome(genome); genomeBuilder.MakeGenomeValid(genome); Assert.True( new Genome.GeneValueComparator().Equals(originalGenome, genome), $"Genome should not have changed from {originalGenome} to {genome}."); }
public void CrossoverWithEqualValuedGenomesGeneratesSameGenome() { var genomeBuilder = GenomeBuilderTest.CreateGenomeBuilder(); // Create parents with equal gene values. var parent1 = GenomeBuilderTest.BuildFittingGenome(); var parent2 = GenomeBuilderTest.BuildFittingGenome(); // Do a crossover and check child's gene values. var child = genomeBuilder.Crossover(parent1, parent2); Assert.True( GenomeBuilderTest.genomeValueComparer.Equals(child, parent1), $"Crossover of equal valued genomes {parent1} and {parent2} produced child {child} with different values."); }
public void CreateRandomGenomeCreatesValidGenome() { // Create a genome builder. var genomeBuilder = GenomeBuilderTest.CreateGenomeBuilder(); // For a number of times: for (int i = 0; i < GenomeBuilderTest.loopCountForRandomTests; i++) { // Check that newly created genome is valid. var genome = genomeBuilder.CreateRandomGenome(age: 2); Assert.True( genomeBuilder.IsGenomeValid(genome), $"Genome {genome} was created by the builder, but not valid."); } }
public void ValidateGenomeReturnsFalseForWrongType() { // Create a genome builder. var genomeBuilder = GenomeBuilderTest.CreateGenomeBuilder(); // Create correct genome. var genome = GenomeBuilderTest.BuildFittingGenome(); Assert.True(genomeBuilder.IsGenomeValid(genome)); // Change a gene s.t. it has the wrong type. genome.SetGene(GenomeBuilderTest.DiscreteParameter, new Allele <double>(3)); // Check method returns false now. Assert.False( genomeBuilder.IsGenomeValid(genome), $"Genome {genome} was evaluated as valid even if gene 'int' was created as double."); }
public void ValidateGenomeReturnsFalseForWrongDomain() { // Create a genome builder. var genomeBuilder = GenomeBuilderTest.CreateGenomeBuilder(); // Create correct genome. var genome = GenomeBuilderTest.BuildFittingGenome(); Assert.True(genomeBuilder.IsGenomeValid(genome)); // Change a gene s.t. it is outside of domain. genome.SetGene(GenomeBuilderTest.ContinuousParameter, new Allele <double>(0.9)); // Check method returns false now. Assert.False( genomeBuilder.IsGenomeValid(genome), $"Genome {genome} was evaluated as valid even if gene '{GenomeBuilderTest.ContinuousParameter}' was set to 0.9."); }