def genetic_algorithm(pop_size=C.popSize, playback=None, play_result=True, store_fitness: FileIO = None): parents = POPULATION(pop_size) parents.evaluate(envs, True) parents.print(' 0') for g in range(C.numGens): children = POPULATION(pop_size, initialize=False) children.fill_from(parents) children.evaluate(envs, True) children.print('%3i' % (g + 1)) parents = children if playback is not None: pickle.dump(parents.p[0], open(playback, 'wb')) if play_result: parents.evaluate(envs, best=True) if store_fitness is not None: parents.p[0].print(to=store_fitness)
Instructions: Implement hill climber search www.reddit.com/r/ludobots/wiki/pyrosim/parallelhillclimber Blue diamond is the y coordinate ''' save_best = True visualize_best = True num_generations = 200 # Initial population parents = POPULATION(pop_size=100) parents.create_population() parents.evaluate() print('Generation 0...') parents.print_pop() for gen in range(num_generations): children = copy.deepcopy(parents) children.mutate() children.evaluate() parents.replace(children) print('Generation ', gen + 1, '...') parents.print_pop() fittest_idx = parents.find_fittest() print('-----------------------------------------')
logging.basicConfig(level=logging.INFO) import pickle import pyrosim import matplotlib.pyplot as plt import numpy as np from robot import ROBOT from individual import INDIVIDUAL from population import POPULATION import constants from environments import ENVIRONMENTS # create environment with "light source" envs = ENVIRONMENTS(numEnvs=constants.numEnvs, eval_time=constants.eval_time) # create initial population parents = POPULATION(envs, popSize=constants.popSize, eval_time=constants.eval_time) parents.initialize() parents.evaluate(play_blind=True, play_paused=False) print(0, parents) # evolve: for g in range(constants.numGen): children = POPULATION(envs, parents=parents) children.fillFrom(parents) children.evaluate(play_blind=True, play_paused=False) parents.replaceWith(children) print(g + 1, parents) parents.playbest()
from copy import deepcopy from population import POPULATION parents = POPULATION(10) print('running...') for g in range(1,201): # print(g, end=' ') children = deepcopy(parents) children.mutate() children.evaluate(play_blind=True) parents.replaceWith(children) # parents.print() print('.', end='', flush=True) print() parents.evaluate(best=True)