def test2(): genome = Genome(weight_mutation=0.1, input_nodes=2, output_nodes=1, genome_id = 1) # Create input, output nodes, and connect them genome.create_inputs() genome.create_outputs() #Create test data testData = [] for x in range(0,100): testData.append([x,x]) # Create 2 hidden layers, and fully connect them to test if it is still going to be non-linear h1 = Node_gene(node_type=Node_type.HIDDEN, node_id=10) h2 = Node_gene(node_type=Node_type.HIDDEN, node_id=11) h3 = Node_gene(node_type=Node_type.HIDDEN, node_id=12) h4 = Node_gene(node_type=Node_type.HIDDEN, node_id=13) i1 = genome.node_genes[0] i2 = genome.node_genes[1] o1 = genome.node_genes[2] b1 = Node_gene(node_type=Node_type.HIDDEN, node_id=14) b1.set_value(50) b2 = Node_gene(node_type=Node_type.HIDDEN, node_id=15) b2.set_value(50) b3 = Node_gene(node_type=Node_type.HIDDEN, node_id=16) b3.set_value(50) b4 = Node_gene(node_type=Node_type.HIDDEN, node_id=17) b4.set_value(50) genome.node_genes.append(h1) genome.node_genes.append(h2) genome.node_genes.append(h3) genome.node_genes.append(h4) genome.node_genes.append(b1) genome.node_genes.append(b2) genome.node_genes.append(b3) genome.node_genes.append(b4) #Connection i1 to h1 con_i1_h1 = Connection_gene( in_node = i1, out_node = h1, weight = uniform(-1, 1), expressed = True, innovation_number = 1 ) #Connection i2 to h1 con_i2_h1 = Connection_gene( in_node = i2, out_node = h1, weight = uniform(-1, 1), expressed = True, innovation_number = 2 ) #Connection i1 to h2 con_i1_h2 = Connection_gene( in_node = i1, out_node = h2, weight = uniform(-1, 1), expressed = True, innovation_number = 3 ) #Connection i2 to h2 con_i2_h2 = Connection_gene( in_node = i2, out_node = h2, weight = uniform(-1, 1), expressed = True, innovation_number = 4 ) #Connection h1 to h3 con_h1_h3 = Connection_gene( in_node = h1, out_node = h3, weight = uniform(-1, 1), expressed = True, innovation_number = 5 ) #Connection h2 to h3 con_h2_h3 = Connection_gene( in_node = h2, out_node = h3, weight = uniform(-1, 1), expressed = True, innovation_number = 6 ) #Connection h1 to h4 con_h1_h4 = Connection_gene( in_node = h1, out_node = h4, weight = uniform(-1, 1), expressed = True, innovation_number = 7 ) #Connection h2 to h4 con_h2_h4 = Connection_gene( in_node = h2, out_node = h4, weight = uniform(-1, 1), expressed = True, innovation_number = 8 ) #Connection h3 to o1 con_h3_o1 = Connection_gene( in_node = h3, out_node = o1, weight = uniform(-1, 1), expressed = True, innovation_number = 9 ) #Connection h4 to o1 con_h4_o1 = Connection_gene( in_node = h4, out_node = o1, weight = uniform(-1, 1), expressed = True, innovation_number = 10 ) #Conneciton b1-h1 con_b1_h1 = Connection_gene( in_node = b1, out_node = h1, weight = uniform(-1, 1), expressed = True, innovation_number = 11 ) #Conneciton b2-h2 con_b2_h2 = Connection_gene( in_node = b2, out_node = h2, weight = uniform(-1, 1), expressed = True, innovation_number = 12 ) #Conneciton b3-h3 con_b3_h3 = Connection_gene( in_node = b3, out_node = h3, weight = uniform(-1, 1), expressed = True, innovation_number = 13 ) #Conneciton b4-h4 con_b4_h4 = Connection_gene( in_node = b4, out_node = h4, weight = uniform(-1, 1), expressed = True, innovation_number = 14 ) genome.connection_genes.append(con_i1_h1) genome.connection_genes.append(con_i2_h1) genome.connection_genes.append(con_i1_h2) genome.connection_genes.append(con_i2_h2) genome.connection_genes.append(con_h1_h3) genome.connection_genes.append(con_h2_h3) genome.connection_genes.append(con_h1_h4) genome.connection_genes.append(con_h2_h4) genome.connection_genes.append(con_h3_o1) genome.connection_genes.append(con_h4_o1) genome.connection_genes.append(con_b1_h1) genome.connection_genes.append(con_b2_h2) genome.connection_genes.append(con_b3_h3) genome.connection_genes.append(con_b4_h4) # Draw and print DrawNN(genome) genome.print_genome() #Test o1_output = [] i1_input = [] i2_input = [] h1_output = [] h2_output = [] h3_output = [] h4_output = [] for data in testData: nn = NeuralNetwork(genome) nn.add_input(data) nn.get_output() i1_input.append( genome.node_genes[0].value ) i2_input.append( genome.node_genes[1].value ) o1_output.append( genome.node_genes[2].value ) h1_output.append( genome.node_genes[3].value ) h2_output.append( genome.node_genes[4].value ) h3_output.append( genome.node_genes[5].value ) h4_output.append( genome.node_genes[6].value ) # Plot #plt.plot(i1_input, i1_input, 'b-', label="i1_input") #plt.plot(i1_input, i2_input, 'g-', label="i2_input") #plt.plot(i1_input, h1_output, 'c.', label="h1_output") #plt.plot(i1_input, h2_output, 'm.', label="h2_output") plt.plot(i1_input, h3_output, 'y.', label="h3_output") plt.plot(i1_input, h4_output, 'k.', label="h4_output") plt.plot(i1_input, o1_output, 'r-', label="o1_output") plt.legend() plt.show()