Beispiel #1
0
    def test_select_returns_current_node_and_copy(self):
        genomes = create_genomes(10)
        results = self.selector.select(genomes[0], genomes, self.params)

        self.assertEqual(len(results), 2)
        self.assertIs(results[0], genomes[0])
        self.assertIsNot(results[1], genomes[0])
        self.assertEqual(results[0], results[1])
Beispiel #2
0
    def test_crossing_pairs_with_probability_of_zero_and_odd_size(self):
        genomes = create_genomes(11)
        params = {"crossover.rate": 0.0}

        gen_a, gen_b = self.crossover.extract_crossing_pairs(genomes, params)

        self.assertEqual(len(gen_a), 0)
        self.assertEqual(len(gen_b), 0)
        self.assertEqual(len(genomes), 11)
Beispiel #3
0
    def test_crossing_pairs_with_probability_of_one_and_even_size(self):
        genomes = create_genomes(10)
        params = {"crossover.rate": 1.0}

        gen_a, gen_b = self.crossover.extract_crossing_pairs(genomes, params)

        self.assertEqual(len(gen_a), 5)
        self.assertEqual(len(gen_b), 5)
        self.assertEqual(len(genomes), 0)
Beispiel #4
0
    def test_replacement_selection_with_odd_size_list_in_parallel(self):
        genomes = create_genomes(21)
        genomes.sort(reverse=True, key=lambda g: g.fitness)
        min_fitness = genomes[ceil(len(genomes) / 2)].fitness

        shuffle(genomes)
        results = self.selector.evolve(genomes, self.pool, self.params)

        self.assertEqual(len(results), len(genomes))
        for result in results:
            self.assertGreaterEqual(result.fitness, min_fitness)
    def test_uniform_crossover_in_parallel(self):
        genomes = create_genomes(10)
        fitness_scores = [x.fitness for x in genomes]

        expected = [copy(g) for g in genomes]
        results = self.crossover.evolve(genomes, self.pool, self.params)

        for genome, result in zip(genomes, results):
            self.assertEqual(genome.fitness, result.fitness)
        for i in range(0, len(genomes), 2):
            self.assertEqual(expected[i], results[i + 1])
            self.assertEqual(expected[i + 1], results[i])