def cart_pole_res_example(): genome = dense(input_size=4, output_size=1, layer_dims=[2, 2, 2]) weights_len = len(genome.edges) + len(genome.nodes) init_mu = np.random.uniform(-1, 1, weights_len) mutator = ADRESMutator(initial_mu=init_mu, std_dev=0.1) seeder = curry_genome_seeder(mutator=mutator, seed_genomes=[genome]) population = RESPopulation(population_size=50, genome_seeder=seeder) assign_population_fitness = build_env() counter_fn = make_counter_fn() for i in range(100): success = assign_population_fitness(population) if success and counter_fn(): break data = population.to_dict() mutator(population) print( f'generation: {i}, mean score: {data["mean_fitness"]}, best score: {data["best_fitness"]}' ) data = population.to_dict() run_env(data['best_genome'], render=True, env_name='CartPole-v0')
def test_dense_factory(self): from gerel.algorithms.RES.population import RESPopulation from gerel.algorithms.RES.mutator import RESMutator from gerel.populations.genome_seeders import curry_genome_seeder genome = dense( input_size=1, output_size=1, layer_dims=[4] ) weights_len = len(genome.edges) + len(genome.nodes) init_mu = np.random.uniform(-1, 1, weights_len) mutator = RESMutator( initial_mu=init_mu, std_dev=0.1, alpha=0.1 ) seeder = curry_genome_seeder( mutator=mutator, seed_genomes=[genome] ) RESPopulation( population_size=1, genome_seeder=seeder )
def bipedal_walker_RES(): genome = dense( input_size=24, output_size=4, layer_dims=[20] ) weights_len = len(genome.edges) + len(genome.nodes) init_mu = np.random.uniform(-1, 1, weights_len) mutator = RESMutator( initial_mu=init_mu, std_dev=0.5, alpha=1 ) seeder = curry_genome_seeder( mutator=mutator, seed_genomes=[genome] ) population = RESPopulation( population_size=400, genome_seeder=seeder ) ds = DataStore(name='bip_walker_RES_data') assign_population_fitness = build_env( env_name='BipedalWalker-v3', num_steps=200, repetition=1) counter_fn = make_counter_fn() for i in range(500): success = assign_population_fitness(population) if success and counter_fn(): break data = population.to_dict() mutator(population) print_progress(data) ds.save(data) return True
def cart_pole_simple_example(): genome = dense(input_size=4, output_size=1, layer_dims=[2, 2, 2]) mutator = SIMPLEMutator(std_dev=0.1, survival_rate=0.1) seeder = curry_genome_seeder(mutator=mutator, seed_genomes=[genome]) population = SIMPLEPopulation(population_size=50, genome_seeder=seeder) assign_population_fitness = build_env() counter_fn = make_counter_fn() for i in range(100): success = assign_population_fitness(population) if success and counter_fn(): break data = population.to_dict() mutator(population) print( f'generation: {i}, mean score: {data["mean_fitness"]}, best score: {data["best_fitness"]}' ) run_env(data['best_genome'])