Пример #1
0
    def test_mate(self):
        Genome.reset()

        for pair in Genome.GENE_INNOVATION_PAIRS:
            print(pair[0])
            print(pair[1])

        genome_parent_1 = TestGenome()
        genome_parent_2 = TestGenome()
        genome_child = TestGenome()

        network_parent_1 = Network(genome_parent_1)
        network_parent_2 = Network(genome_parent_2)
        network_child = Network(genome_child)

        genome_parent_1.add_new_node(0)
        genome_parent_2.add_new_node(1)
        genome_child.add_new_node(2)

        Genome.mate(genome_parent_1, genome_parent_2, genome_child)

        network_child.set_up(genome_child)

        for i in range(-1, -4, -1):
            self.assertTrue(network_child.genome.genes[i].enabled)
            self.assertTrue(network_child.genome.genes[i].used)

        self.assertEqual(network_child.genome.genes[3].innovation, 1)
        self.assertEqual(network_child.genome.genes[4].innovation, 2)
        self.assertEqual(network_child.genome.genes[5].innovation, 3)
Пример #2
0
	def test_mate(self):
		Genome.reset()

		genome1 = Genome()
		genome2 = Genome()
		new_genome = Genome()
		genes1 = []
		genes2 = []

		genome1.allocate_hidden_nodes(1)
		genome2.allocate_hidden_nodes(1)
		new_genome.allocate_hidden_nodes(1)

		#genome 1
		input_node_id_11 = genome1.add_input_node()
		input_node_id_21 = genome1.add_input_node()

		hidden_node_id_11 = genome1.add_hidden_node()

		output_node_id_11 = genome1.add_output_node()
		output_node_id_21 = genome1.add_output_node()

		genes1.append(Gene(input_node_id_11, hidden_node_id_11, weight = 10.0))
		genes1.append(Gene(input_node_id_21, hidden_node_id_11))

		genes1.append(Gene(hidden_node_id_11, output_node_id_11))
		genes1.append(Gene(hidden_node_id_11, output_node_id_21))

		genome1.set_genes((genes1))

		#genome 2
		input_node_id_12 = genome2.add_input_node()
		input_node_id_22 = genome2.add_input_node()

		hidden_node_id_12 = genome2.add_hidden_node()

		output_node_id_12 = genome2.add_output_node()
		output_node_id_22 = genome2.add_output_node()

		genes2.append(Gene(input_node_id_12, hidden_node_id_12, weight = 20.0))
		genes2.append(Gene(input_node_id_22, hidden_node_id_12))

		genes2.append(Gene(hidden_node_id_12, output_node_id_12))
		genes2.append(Gene(hidden_node_id_12, output_node_id_22, enabled = False))

		genome2.set_genes((genes2))
		genome2.allocate_genes(1)

		genome2.add_new_connection(input_node_id_12, output_node_id_12)

		#new genome
		Genome.mate(genome1, genome2, new_genome)

		self.assertEqual(new_genome.genes[0].weight, 15.0)
		self.assertEqual(len(new_genome.genes), 5)
		self.assertFalse(new_genome.genes[3].enabled)