def learn(existing_brain, eval_function): input_size = brain.Mutation_params().input_count output_size = brain.Mutation_params().output_count if existing_brain != None: best_brain = existing_brain else: best_brain = brain.Brain() benchmark_instance = copy.deepcopy(best_brain) best_score = eval_function(benchmark_instance, visualization.Visualization_flags.VISUALIZATION_OFF) print('NEW BEST SCORE: ' + str(best_score)) counter = 0 average = 0 while best_score < 100: counter += 1 score = 0 mutant = copy.deepcopy(best_brain) for i in range(1): mutant.default_mutation(input_size,output_size) test_instance = copy.deepcopy(mutant) score = eval_function(test_instance, visualization.Visualization_flags.VISUALIZATION_OFF) average += score if ((counter % 100) == 0): print ('LAST 100 AVERAGE: ' + str(average/100)) average = 0 if score >= best_score: print('NEW BEST SCORE: ' + str(score)) brain.print_brain_to_file(mutant) best_score = score best_brain = copy.deepcopy(mutant) return best_brain
def learn(eval_function): input_size = brain.Mutation_params().input_count output_size = brain.Mutation_params().output_count best_brain = brain.Brain(1) best_score = 0 counter = 0 average = 0 while best_score < 100: counter += 1 score = 0 mutant = copy.deepcopy(best_brain) for i in range(1): mutant.default_mutation(input_size, output_size) test_instance = copy.deepcopy(mutant) score = eval_function(test_instance, Learning_flags.VISUALIZATION_OFF) #print(score) average += score if ((counter % 100) == 0): print('LAST 100 AVERAGE: ' + str(average / 100)) average = 0 if score >= best_score: print('NEW BEST SCORE: ' + str(score)) brain.print_brain_to_file(mutant) best_score = score best_brain = copy.deepcopy(mutant) return best_brain
def impatient_learn(existing_brain, eval_function): input_size = brain.Mutation_params().input_count output_size = brain.Mutation_params().output_count if existing_brain != None: best_brain = existing_brain else: best_brain = brain.Brain() benchmark_instance = copy.deepcopy(best_brain) best_score = eval_function(benchmark_instance, visualization.Visualization_flags.VISUALIZATION_OFF) print('NEW BEST SCORE: ' + str(best_score)) counter = 0 average = 0 chaos = 1.0 chaos_ceiling = 5.0 while best_score < 100: counter += 1 score = 0 mutant = copy.deepcopy(best_brain) for i in range(1): mutant.default_mutation(input_size,output_size) test_instance = copy.deepcopy(mutant) score = eval_function(test_instance, visualization.Visualization_flags.VISUALIZATION_OFF) average += score if ((counter % 100) == 0): print ('LAST 100 AVERAGE: ' + str(average/100)) print('CHAOS: ' + str(chaos)) #if uniform(0,1) > .5: # print('SUPRESSING MUTATION') # brain.Mutation_params().supress_mutation() # else: # print('AMPLIFYING MUTATION') # brain.Mutation_params().amplify_mutation() average = 0 if score >= best_score: chaos = 1 print('NEW BEST SCORE: ' + str(score)) brain.print_brain_to_file(mutant) best_score = score best_brain = copy.deepcopy(mutant) elif chaos < chaos_ceiling: chaos += .01 brain.Mutation_params().mutation_cycles = randrange(int(chaos)) + 1 return best_brain