import neural_net import random def crossover(neural_net1, neural_net2): nn = neural_net.NN(2,4,1) nn1 = neural_net.NN(2,4,1) cross_point_i = random.randint(1,neural_net1.ni-1) cross_point_o = random.randint(1,neural_net1.nh-1) #print(cross_point_o) nn.wi = neural_net1.wi nn.wo = neural_net1.wo nn1.wi = neural_net2.wi nn1.wo = neural_net2.wo temp_list = [] temp_list = neural_net1.wi[0:cross_point_i] nn.wi[0:cross_point_i] = neural_net2.wi[0:cross_point_i] nn1.wi[0:cross_point_i] = temp_list temp_list = [] temp_list = neural_net1.wo[0:cross_point_o] nn.wo[0:cross_point_o] = neural_net2.wo[0:cross_point_o] nn1.wo[0:cross_point_o] = temp_list return nn, nn1 ##def crossover(neural_net1, neural_net2): ## nn = neural_net.NN(4,10,1) ## nn1 = neural_net.NN(4,10,1) ## cross_point_i = random.randint(1,neural_net1.nh-1) ## cross_point_o = random.randint(1,neural_net1.nh-1) ## #print(cross_point_o) ## nn.wi = neural_net1.wi ## nn.wo = neural_net1.wo ## ## nn1.wi = neural_net2.wi ## nn1.wo = neural_net2.wo ## ## temp_list = [] ## temp_list = neural_net1.wi[0:4][0:cross_point_i] ## nn.wi[0:4][0:cross_point_i] = neural_net2.wi[0:4][0:cross_point_i] ## nn1.wi[0:4][0:cross_point_i] = temp_list ## ## temp_list = [] ## temp_list = neural_net1.wo[0:cross_point_o] ## nn.wo[0:cross_point_o] = neural_net2.wo[0:cross_point_o] ## nn1.wo[0:cross_point_o] = temp_list ## ## return nn, nn1 ## def mutate(neural_net1, mutation_rate): wi = neural_net1.wi wo = neural_net1.wo nn = neural_net.NN(2,4,1) for i in range(len(wi)): for j in range(len(wi[i])): if random.random() < mutation_rate: nn.wi[i][j] = random.uniform(-0.5,0.5) #print(str(i) + ' ' + str(j)) for i in range(len(wo)): for j in range(len(wo[i])): if random.random() < mutation_rate: nn.wo[i][j] = random.uniform(-0.5,0.5) #print(str(i) + ' ' + str(j)) return nn def create_new_pop(neural_net1,neural_net2, lista_sieci,mutation_rate): lista_sieci.append(mutate(neural_net1,0.01)) lista_sieci.append(mutate(neural_net1,0.02)) nn1, nn2 = crossover(neural_net1, neural_net2) nn3 = neural_net1 nn4 = neural_net2 nn5, nn6 = crossover(nn3, nn4) nn7 = mutate(nn5,mutation_rate) nn8 = mutate(nn6,mutation_rate) mutate(nn1,mutation_rate) mutate(nn2,mutation_rate) mutate(nn3,mutation_rate) mutate(nn4,mutation_rate) lista_sieci.append(nn1) lista_sieci.append(nn2) lista_sieci.append(nn3) lista_sieci.append(nn4) lista_sieci.append(nn5) lista_sieci.append(nn6) lista_sieci.append(nn7) lista_sieci.append(nn8) lista_sieci.append(mutate(neural_net1,0.01)) lista_sieci.append(mutate(neural_net1,0.01)) #nn = neural_net.NN(4,10,1) ##nn1 = neural_net.NN(4,10,1) ###mutation_rate = 0.1 ##print('Weights') #print(nn.wi) ##print(nn1.wi) ###mutate(nn) ##nn2,nn3 = crossover(nn,nn1) ## ##print('Weights') ##print(nn2.wi) ##print(nn3.wi) ## ###print('Whatever') ###print(nn.ai) ###print(nn.ah) ###print(nn.ao)