def score_generation(gen): """score the generation over a period from start to end""" periods = [random.randint(61,550) for n in xrange(10)] scores = [] for bot in gen: avg_score = 0.0 for period in periods: score = simulator.simulate_bot(bot, period, period+5, simulator.data) avg_score += score avg_score = avg_score/float(len(periods)) scores.append((avg_score, bot)) scores.sort(key=lambda e:e[0]) scores.reverse() return scores
def score_generation(gen): """score the generation over a period from start to end""" periods = [random.randint(61, 550) for n in xrange(10)] scores = [] for bot in gen: avg_score = 0.0 for period in periods: score = simulator.simulate_bot(bot, period, period + 5, simulator.data) avg_score += score avg_score = avg_score / float(len(periods)) scores.append((avg_score, bot)) scores.sort(key=lambda e: e[0]) scores.reverse() return scores
def optimize(pop_size, num_gens, num_survivors, verbose = True): """Use an asexual genetic algo to optimize the bots.""" standard_period = 40 #standardize one testing period, to track progress gen = initialize_population(pop_size) num_children = int(pop_size/num_survivors)-1 for n in tqdm.tqdm(range(num_gens)): scores = score_generation(gen) survivors = [e[1] for e in scores[:num_survivors]] if verbose == True: score = scores[0][0] std_score = simulator.simulate_bot(scores[0][1], standard_period, standard_period+5, simulator.data) print "Generation {},\tScore:{}\tStd score:{}".format(n+1,score,std_score) #print survivors gen = make_generation(survivors,num_children) return scores
def optimize(pop_size, num_gens, num_survivors, verbose=True): """Use an asexual genetic algo to optimize the bots.""" standard_period = 40 #standardize one testing period, to track progress gen = initialize_population(pop_size) num_children = int(pop_size / num_survivors) - 1 for n in tqdm.tqdm(range(num_gens)): scores = score_generation(gen) survivors = [e[1] for e in scores[:num_survivors]] if verbose == True: score = scores[0][0] std_score = simulator.simulate_bot(scores[0][1], standard_period, standard_period + 5, simulator.data) print "Generation {},\tScore:{}\tStd score:{}".format( n + 1, score, std_score) #print survivors gen = make_generation(survivors, num_children) return scores