import numpy as np population_size= 10 size= 10 generations= 1000 F=0.5 population= np.random.rand(population_size, size) print(population) def fitness(x): diff= 0 for i in range(size): diff+= (x[i] - 77.0)*(x[i] - 77.0) return -diff for i in range(generations): #print("generation") #print(i) for j in range(population_size): # print("individual") # print(j) mutation= [0 for i in range(size)] # mutation for k in range(size): random_value= np.random.rand(1) if random_value < 0.1: random_value= np.random.rand(1) r1=np.random.randint(population_size) r2=np.random.randint(population_size) r3=np.random.randint(population_size) mutation[k]= population[r1][k] + F*(population[r2][k] - population[r3][k]) else: mutation[k]= population[j][k] # print(population[j]) # print("mutation") # print(mutation) f_mutation= fitness(mutation) f = fitness(population[j]) #selection if f_mutation > f: population[j]= mutation[:] f_vector= [0 for i in range(population_size)] for j in range(population_size): f_vector[j]= fitness(population[j]) #print("Max Fitness") print(max(f_vector)) f_vector= [0 for i in range(population_size)] for j in range(population_size): f_vector[j]= fitness(population[j]) print("Final Max Fitness") print(max(f_vector))