Advertisement
Guest User

Untitled

a guest
May 26th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. def algorithm(fun,pop_size, pk, pm, generations, dx):
  2.  
  3. fun=obj_func
  4.  
  5. B,dx_new = nbits(-5.12,5.12,dx) #ILE BITÓW POTRZEBA DO ZAKODOWANIA
  6. pop=gen_population(pop_size,N, B) #GENEROWANIE POPULACJI
  7.  
  8. tab_decode=np.zeros((pop_size,N))
  9. for i in range(0,pop_size):
  10. tab_decode[i]=decode_individual(pop[i], N, B, -5.12, dx_new)
  11. #ROZKODOWYWANIE OSOBNIKÓW
  12.  
  13. evaluated_pop=evaluate_population(fun, pop, N, B, -5.12, dx_new)
  14. #OCENA OSOBNIKÓW
  15.  
  16. best_individual, best_value=get_best(pop, evaluated_pop)
  17. #NAJLEPSZY OSOBNIK W DANEJ POPULACJI
  18.  
  19. new_pop=pop
  20. best_sol_value=best_value
  21. best_generation=0
  22.  
  23. list_best=[]
  24. list_best_generation=[]
  25. list_mean=[]
  26.  
  27. for i in range (0,generations):
  28.  
  29. new_pop=roulette(new_pop, evaluated_pop) #SELEKCJA
  30. new_pop=cross(new_pop, pk) #KRZYŻOWANIE
  31. new_pop=mutate(new_pop, pm) #MUTACJA
  32. evaluated_pop=evaluate_population(fun, new_pop, N, B, -5.12, dx_new) #OCENA
  33. best_individual, best_value=get_best(new_pop, evaluated_pop) #WYBÓR NAJLEPSZEGO
  34.  
  35. list_best_generation.append(best_value) #LISTA Z NAJLEPSZYMI OCENAMI W KAŻDYM POKOLENIU
  36. suma=evaluated_pop.sum()
  37. srednia=suma/pop_size
  38. list_mean.append(srednia) #LISTA ŚREDNICH OCEN W KAŻDYM POKOLENIU
  39.  
  40. if(best_value > best_sol_value):
  41. best_sol=best_individual
  42. best_sol_value=best_value
  43. list_best.append(best_value) #LISTA Z NAJLEPSZYMI OCENAMI DO TEJ PORY
  44. best_generation=i+1
  45. else:
  46. list_best.append(best_sol_value)
  47.  
  48. return(best_sol, best_generation, list_best, list_best_generation, list_mean)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement