Ejemplo n.º 1
0
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()