From aa677a1d81ae1ffc0c0d8fe1834b8c0c49c39ba3 Mon Sep 17 00:00:00 2001 From: SimpleArt <71458112+SimpleArt@users.noreply.github.com> Date: Thu, 12 Nov 2020 18:00:22 -0500 Subject: [PATCH] Rewrote for clarity and potential bug --- .../survivor_selection_methods.py | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/survivor_selection/survivor_selection_methods.py b/src/survivor_selection/survivor_selection_methods.py index 0aaa574..ce88362 100644 --- a/src/survivor_selection/survivor_selection_methods.py +++ b/src/survivor_selection/survivor_selection_methods.py @@ -6,33 +6,37 @@ class Survivor_Selection: def fill_in_best(ga): """Fills in the next population with the best chromosomes from the last population""" - # add in chromosomes starting from - # the first chromosome in the population - # until the next population is full + needed_amount = ga.population.size()-len(ga.population.next_population) ga.population.append_children( - ga.population.get_chromosome_list()[:ga.population.size()-len(ga.population.next_population)] + ga.population.get_chromosome_list()[:needed_amount] ) def fill_in_random(ga): """Fills in the next population with random chromosomes from the last population""" + needed_amount = ga.population.size()-ga.population.total_children() + ga.population.append_children([ # add in chromosomes random.choice( # randomly ga.population.get_chromosome_list() # from the population - ) # until the next population is full - for n in range(ga.population.size()-ga.population.total_children())]) + ) # + for n in range(needed_amount)]) # until the next population is full def fill_in_parents_then_random(ga): """Fills in the next population with all parents followed by random chromosomes from the last population""" - ga.population.append_children( # add in chromosomes - ga.population.get_mating_pool() # from the mating pool - ) # + needed_amount = ga.population.size()-ga.population.total_children() + parent_amount = max(len(ga.population.get_mating_pool()), needed_amount) + random_amount = needed_amount - parent_amount + + ga.population.append_children( # add in chromosomes + ga.population.get_mating_pool()[:parent_amount] # from the mating pool + ) # ga.population.append_children([ # add in chromosomes random.choice( # randomly ga.population.get_chromosome_list() # from the population - ) # until the next population is full - for n in range(ga.population.size()-ga.population.total_children())]) + ) # + for n in range(random_amount)]) # until the next population is full