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()
Exemple #4
0
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)