evorl.ec.optimizers¶
Package Contents¶
Classes¶
Augmented Random Search. |
|
By default, all EvoOptimizer maximize the fitness. |
|
Specification for an exponential schedule for HyperParam. |
|
OpenAI ES. |
|
OpenAI ES with noise table. |
|
Sep Cross-Entropy Method. |
|
Canonical Evolution Strategies. |
|
Variant of VanillaES. |
|
Vanilla Genetic Algorithm. |
Data¶
API¶
- class evorl.ec.optimizers.ARS[source]¶
Bases:
evorl.ec.optimizers.ec_optimizer.EvoOptimizerAugmented Random Search.
Paper: Simple random search of static linear policies is competitive for reinforcement learning
- ask(state: evorl.ec.optimizers.ars.ARSState) tuple[evorl.types.Params, evorl.ec.optimizers.ec_optimizer.ECState][source]¶
- fitness_std_eps: float¶
1e-08
- init(mean: evorl.types.Params, key: chex.PRNGKey) evorl.ec.optimizers.ars.ARSState[source]¶
- lr: float¶
None
- noise_std: float¶
None
- num_elites: int¶
None
- optimizer: optax.GradientTransformation¶
‘pytree_field(…)’
- optimizer_name: str¶
‘sgd’
- pop_size: int¶
None
- tell(state: evorl.ec.optimizers.ars.ARSState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.ars.ARSState][source]¶
- evorl.ec.optimizers.ECState¶
None
- class evorl.ec.optimizers.ERLGA[source]¶
Bases:
evorl.ec.optimizers.ec_optimizer.EvoOptimizer- ask(state: evorl.ec.optimizers.erl_ga.ERLGAState) tuple[chex.ArrayTree, evorl.ec.optimizers.erl_ga.ERLGAState][source]¶
- enable_crossover: bool¶
True
- init(pop, key) evorl.ec.optimizers.erl_ga.ERLGAState[source]¶
- mut_strength: float¶
0.1
- num_crossover_frac: float¶
0.1
- num_elites: int¶
None
- num_mutation_frac: float¶
0.1
- pop_size: int¶
None
- reset_prob: float¶
0.1
- super_mut_prob: float¶
0.05
- super_mut_strength: float¶
10.0
- tell(state: evorl.ec.optimizers.erl_ga.ERLGAState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.erl_ga.ERLGAState][source]¶
- tournament_size: int¶
3
- vec_relative_prob: float¶
0.0
- weight_max_magnitude: float¶
1000000.0
- class evorl.ec.optimizers.ERLGAMod[source]¶
Bases:
evorl.ec.optimizers.erl_ga.ERLGA- external_size: int¶
None
- init(pop, key) evorl.ec.optimizers.erl_ga.ERLGAModState[source]¶
- tell_external(state: evorl.ec.optimizers.erl_ga.ERLGAModState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.erl_ga.ERLGAModState][source]¶
- class evorl.ec.optimizers.EvoOptimizer[source]¶
Bases:
evorl.types.PyTreeNodeBy default, all EvoOptimizer maximize the fitness.
This is different from the behavior in EvoX.
- abstract ask(state: evorl.ec.optimizers.ec_optimizer.ECState) tuple[chex.ArrayTree, evorl.ec.optimizers.ec_optimizer.ECState][source]¶
Generate new candidate solutions.
- abstract tell(state: evorl.ec.optimizers.ec_optimizer.ECState, fitnesses: chex.ArrayTree) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.ec_optimizer.ECState][source]¶
Update the optimizer state based on the fitnesses of the candidate solutions.
- Parameters:
state – The current optimizer state
fitnesses – The fitnesses of the candidate solutions
- class evorl.ec.optimizers.ExponentialScheduleSpec[source]¶
Bases:
evorl.types.PyTreeDataSpecification for an exponential schedule for HyperParam.
- decay: float¶
None
- final: float¶
None
- init: float¶
None
- class evorl.ec.optimizers.OpenES[source]¶
Bases:
evorl.ec.optimizers.ec_optimizer.EvoOptimizerOpenAI ES.
- ask(state: evorl.ec.optimizers.ec_optimizer.ECState) tuple[chex.ArrayTree, evorl.ec.optimizers.ec_optimizer.ECState][source]¶
Generate new candidate solutions.
- fitness_shaping_fn: collections.abc.Callable[[chex.Array], chex.Array]¶
‘pytree_field(…)’
- lr_schedule: evorl.ec.optimizers.utils.ExponentialScheduleSpec¶
None
- mirror_sampling: bool¶
True
- noise_std_schedule: evorl.ec.optimizers.utils.ExponentialScheduleSpec¶
None
- optimizer: optax.GradientTransformation¶
‘pytree_field(…)’
- optimizer_name: str¶
‘adam’
- pop_size: int¶
None
- tell(state: evorl.ec.optimizers.ec_optimizer.ECState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.openes.OpenESState][source]¶
Update the optimizer state based on the fitnesses of the candidate solutions.
- weight_decay: float | None¶
None
- class evorl.ec.optimizers.OpenESNoiseTable[source]¶
Bases:
evorl.ec.optimizers.ec_optimizer.EvoOptimizerOpenAI ES with noise table.
- ask(state: evorl.ec.optimizers.ec_optimizer.ECState) tuple[chex.ArrayTree, evorl.ec.optimizers.ec_optimizer.ECState][source]¶
Generate new candidate solutions.
- fitness_shaping_fn: collections.abc.Callable[[chex.Array], chex.Array]¶
‘pytree_field(…)’
- lr_schedule: evorl.ec.optimizers.utils.ExponentialScheduleSpec¶
None
- mirror_sampling: bool¶
True
- noise_std_schedule: evorl.ec.optimizers.utils.ExponentialScheduleSpec¶
None
- noise_table_size: int¶
None
- optimizer: optax.GradientTransformation¶
‘pytree_field(…)’
- optimizer_name: str¶
‘adam’
- pop_size: int¶
None
- tell(state: evorl.ec.optimizers.ec_optimizer.ECState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.openes.OpenESState][source]¶
Update the optimizer state based on the fitnesses of the candidate solutions.
- weight_decay: float | None¶
None
- class evorl.ec.optimizers.SepCEM[source]¶
Bases:
evorl.ec.optimizers.ec_optimizer.EvoOptimizerSep Cross-Entropy Method.
- ask(state: evorl.ec.optimizers.cem.SepCEMState) tuple[chex.ArrayTree, evorl.ec.optimizers.ec_optimizer.ECState][source]¶
- cov_eps_schedule: evorl.ec.optimizers.utils.ExponentialScheduleSpec¶
None
- elite_weights: chex.Array¶
‘pytree_field(…)’
- init(mean: evorl.types.Params, key: chex.PRNGKey) evorl.ec.optimizers.cem.SepCEMState[source]¶
- mirror_sampling: bool¶
False
- num_elites: int¶
None
- pop_size: int¶
None
- rank_weight_shift: float¶
1.0
- tell(state: evorl.ec.optimizers.cem.SepCEMState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.cem.SepCEMState][source]¶
- weighted_update: bool¶
True
- class evorl.ec.optimizers.VanillaES[source]¶
Bases:
evorl.ec.optimizers.ec_optimizer.EvoOptimizerCanonical Evolution Strategies.
Paper: Back to basics: Benchmarking canonical evolution strategies for playing atari
- ask(state: evorl.ec.optimizers.vanilla_es.VanillaESState) tuple[evorl.types.Params, evorl.ec.optimizers.vanilla_es.VanillaESState][source]¶
- elite_weights: chex.Array¶
‘pytree_field(…)’
- init(mean: evorl.types.Params, key: chex.PRNGKey) evorl.ec.optimizers.vanilla_es.VanillaESState[source]¶
- noise_std_schedule: evorl.ec.optimizers.utils.ExponentialScheduleSpec¶
None
- num_elites: int¶
None
- pop_size: int¶
None
- tell(state: evorl.ec.optimizers.vanilla_es.VanillaESState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.vanilla_es.VanillaESState][source]¶
- class evorl.ec.optimizers.VanillaESMod[source]¶
Bases:
evorl.ec.optimizers.vanilla_es.VanillaESVariant of VanillaES.
Add
external_sizenumber of external individuals and corresponding fitnesses during the ES update bytell_external()- Variables:
external_size – number of external individuals
mix_strategy –
strategy to mix external individuals with the elites.
”always”: always mix external individuals with elites
”normal”: concat external individuals to the population and select
num_eliteselites from the combined population.
- external_size: int¶
None
- mix_strategy: str¶
‘always’
- tell_external(state: evorl.ec.optimizers.vanilla_es.VanillaESState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.vanilla_es.VanillaESState][source]¶
- class evorl.ec.optimizers.VanillaGA[source]¶
Bases:
evorl.ec.optimizers.ec_optimizer.EvoOptimizerVanilla Genetic Algorithm.
The Genetic Algorithm used in the original ERL. Paper: Evolution-Guided Policy Gradient in Reinforcement Learning
- ask(state: evorl.ec.optimizers.vanilla_ga.VanillaGAState) tuple[chex.ArrayTree, evorl.ec.optimizers.vanilla_ga.VanillaGAState][source]¶
- enable_crossover: bool¶
True
- init(pop: chex.ArrayTree, key: chex.PRNGKey) evorl.ec.optimizers.vanilla_ga.VanillaGAState[source]¶
- matrix_num_mutation_frac: float¶
0.01
- mut_strength: float¶
0.1
- num_crossover_frac: float¶
0.1
- num_elites: int¶
None
- pop_size: int¶
None
- tell(state: evorl.ec.optimizers.vanilla_ga.VanillaGAState, fitnesses: chex.Array) tuple[evorl.types.PyTreeDict, evorl.ec.optimizers.vanilla_ga.VanillaGAState][source]¶
- tournament_size: int¶
2
- vector_num_mutation_frac: float¶
0.0
- weight_max_magnitude: float¶
1000000.0