evorl.ec.optimizers.openes

Module Contents

Classes

OpenES

OpenAI ES.

OpenESNoiseTable

OpenAI ES with noise table.

OpenESNoiseTableState

State of the OpenES with noise table.

OpenESState

State of the OpenES.

Functions

compute_centered_ranks

Get centered ranks in [-0.5, 0.5].

compute_ranks

Get ranks in [0, len(x)-1].

API

class evorl.ec.optimizers.openes.OpenES[source]

Bases: evorl.ec.optimizers.ec_optimizer.EvoOptimizer

OpenAI 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(…)’

init(mean: evorl.types.Params, key: chex.PRNGKey) evorl.ec.optimizers.ec_optimizer.ECState[source]
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.openes.OpenESNoiseTable[source]

Bases: evorl.ec.optimizers.ec_optimizer.EvoOptimizer

OpenAI 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(…)’

init(mean: evorl.types.Params, key: chex.PRNGKey) evorl.ec.optimizers.ec_optimizer.ECState[source]
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.openes.OpenESNoiseTableState[source]

Bases: evorl.types.PyTreeData

State of the OpenES with noise table.

key: chex.PRNGKey

None

mean: chex.ArrayTree

None

noise: None | chex.ArrayTree

None

noise_std: chex.Array

None

noise_table: chex.ArrayTree

None

opt_state: optax.OptState

None

class evorl.ec.optimizers.openes.OpenESState[source]

Bases: evorl.types.PyTreeData

State of the OpenES.

key: chex.PRNGKey

None

mean: chex.ArrayTree

None

noise: None | chex.ArrayTree

None

noise_std: chex.Array

None

opt_state: optax.OptState

None

evorl.ec.optimizers.openes.compute_centered_ranks(x)[source]

Get centered ranks in [-0.5, 0.5].

evorl.ec.optimizers.openes.compute_ranks(x)[source]

Get ranks in [0, len(x)-1].

This is different from scipy.stats.rankdata, which returns ranks in [1, len(x)].