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)
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)