def full_example(): ploter = Plot() num_of_start_population = 10 i = 2 min = -2 max = 2 chance_for_crossingover = 0.5 popul = population.Population([]) #step 1 - random start population for j in range(num_of_start_population): rand_arr = [random.uniform(min, max) for k in range(i)] popul.append([rand_arr]) #step 1b - calculate f_x ''' for j in range(num_of_start_population): popul.chromosome[j].f_x = functions.Goldstein_Price(popul.chromosome[j].x) ploter.addData('przed', popul.chromosome[j].f_x) print(popul.get_max_f_x()) #step 2 - make selection test_population = selection.Selection.proportional(popul) print(test_population) population_after_selection = population.Population(test_population) #step 3 - crossingover and mutation of best specimens in population #kryzwanie na wyseekcjonowanych rodziach #mutacje sie robi na potmokach(z krzyzywaonia) zeby je zmienic #ponizej testowo child_population = population.Population([]) for j in range(int(0.5*chance_for_crossingover*num_of_start_population)): rand_dad = random.randint(0, num_of_start_population-1) rand_mom = random.randint(0, num_of_start_population-1) kid = crossingovers.Crossingovers.aritmetic(population_after_selection.chromosome[rand_dad], population_after_selection.chromosome[rand_mom]) child_population.append(kid) child_population.append([population_after_selection.chromosome[rand_dad].x, population_after_selection.chromosome[rand_mom].x]) if child_population.size != num_of_start_population: rand_dad = random.randint(0, num_of_start_population-1) rand_mom = random.randint(0, num_of_start_population-1) child_population.append([population_after_selection.chromosome[rand_dad].x, population_after_selection.chromosome[rand_mom].x]) print(child_population) after_mutation = mutation.Mutation.reciprocal_exchange(0.5, child_population.array_of_float) child_population_after_mutation = population.Population(after_mutation) ploter.addKind('po') #step 3b - calculate f_x #for j in range(child_population_after_mutation.size): # child_population_after_mutation.chromosome[j].f_x = functions.Goldstein_Price(child_population_after_mutation.chromosome[j].x) # ploter.addData('po', child_population_after_mutation.chromosome[j].f_x) popul.add_child(child_population_after_mutation) #step 4 - stategis to choose new population from the old one popul = stategies.Strategies.full(popul) print(popul.chromosome[1].f_x) ''' func = functions.Goldstein_Price func_mutation = mutation.Mutation.reciprocal_exchange func_crossingovers = crossingovers.Crossingovers.aritmetic func_selection = selection.Selection.tournament computing_loop(func, popul, 10, ploter, 'Randomowa', 100, func_selection, 0.8, func_crossingovers, func_mutation, 0.8) ploter.showPlot() pass