コード例 #1
0
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')
コード例 #2
0
ファイル: test_factories.py プロジェクト: mauicv/gerel
    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
        )
コード例 #3
0
ファイル: bip_walker_RES.py プロジェクト: mauicv/gerel
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
コード例 #4
0
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'])