def breed(): alive_number = Constants.POPULATION_SIZE - Constants.KILL_SIZE sorted_individuals = [i['parameters'] for i in Database.get_all_individuals_sorted()[:alive_number]] for i in range(Constants.KILL_SIZE): pick1, pick2 = random.sample(sorted_individuals, 2) parameters = genetic.combine_and_mutate(pick1, pick2) Database.add_individual_to_current_generation(parameters)
def index(): # Check table, populate if empty # Show two random individuals in the current gen populate_current_generation_if_empty() a, b = Database.get_random_individuals(2) ar = render_individual(a['parameters']) br = render_individual(b['parameters']) aid, bid = a['id'], b['id'] prg = str(float(Database.num_comparisons()) / Constants.COMPARISONS_PER_GENERATION * 100) gen = len(Database.get_historical_individuals()) magic_color = Database.get_all_individuals_sorted()[0]['parameters']['palette_1'] magic_color = '#%06x' % magic_color return render_template('index.html', left_id=aid, left=ar, right_id=bid, right=br, progress=prg, generation=gen, magic_color=magic_color)
def reset_scores(): for individual in Database.get_all_individuals_sorted(): Database.update_elo_for_id(individual["id"],1000.0)
def kill_unfit(): sorted_individuals = Database.get_all_individuals_sorted() unfit = sorted_individuals[-Constants.KILL_SIZE:] Database.delete_individuals(unfit)
def save_best_to_history(): sorted_individuals = Database.get_all_individuals_sorted() Database.add_historical_individual(sorted_individuals[0])