def neat_bipedal_walker(): pop_size = 400 mutator = NEATMutator(new_edge_probability=0.1, new_node_probability=0.05) genome = minimal(input_size=24, output_size=4, depth=5) seeder = curry_genome_seeder(mutator=mutator, seed_genomes=[genome]) metric = generate_neat_metric(c_1=1, c_2=1, c_3=3) population = NEATPopulation(population_size=pop_size, delta=4, genome_seeder=seeder, metric=metric) ds = DataStore(name='bip_walker_NEAT_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 population.speciate() data = population.to_dict() mutator(population) ds.save(data) print_progress(data) return True
def neat_cart_pole(): pop_size = 1000 mutator = NEATMutator(new_edge_probability=0.1, new_node_probability=0.05) seed_genome = minimal(input_size=4, output_size=1, depth=5) seeder = curry_genome_seeder(mutator=mutator, seed_genomes=[seed_genome]) metric = generate_neat_metric(c_1=1, c_2=1, c_3=3) population = NEATPopulation(population_size=pop_size, genome_seeder=seeder, delta=4, metric=metric) assign_population_fitness = build_env() counter_fn = make_counter_fn() for i in range(5): success = assign_population_fitness(population) if success and counter_fn(): break population.speciate() data = population.to_dict() print_progress(data) mutator(population) score = run_env(data['best_genome'], env_name='CartPole-v0', render=True) print(f'best_fitness: {score}') return True
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 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'])