示例#1
0
        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}.");
        }
示例#2
0
        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.");
        }
示例#3
0
        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.");
            }
        }
示例#4
0
        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.");
        }
示例#5
0
        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.");
        }