ribs.emitters.opt.OpenAIEvolutionStrategy¶
-
class ribs.emitters.opt.OpenAIEvolutionStrategy(sigma0: float | floating, solution_dim: int | integer, batch_size: int | integer | None =
None, seed: int | integer | None =None, dtype: numpy.typing.DTypeLike =numpy.float64, lower_bounds: float | floating | ndarray =-inf, upper_bounds: float | floating | ndarray =inf, mirror_sampling: bool =True, **adam_kwargs: __SPHINX_IMMATERIAL_TYPE_VAR__P_P)[source]¶ OpenAI-ES optimizer for use with emitters.
Refer to
EvolutionStrategyBasefor usage instruction.- Parameters:¶
- sigma0: float | floating¶
Initial step size.
- batch_size: int | integer | None =
None¶ Number of solutions to evaluate at a time. If None, we calculate a default batch size based on solution_dim.
- solution_dim: int | integer¶
Size of the solution space.
- seed: int | integer | None =
None¶ Seed for the random number generator.
- dtype: numpy.typing.DTypeLike =
numpy.float64¶ Data type of solutions.
- lower_bounds: float | floating | ndarray =
-inf¶ scalar or (solution_dim,) array indicating lower bounds of the solution space. Scalars specify the same bound for the entire space, while arrays specify a bound for each dimension. Pass -np.inf in the array or scalar to indicated unbounded space.
- upper_bounds: float | floating | ndarray =
inf¶ Same as above, but for upper bounds (and pass np.inf instead of -np.inf).
- mirror_sampling: bool =
True¶ Whether to use mirror sampling when gathering solutions. Defaults to True.
- **adam_kwargs: __SPHINX_IMMATERIAL_TYPE_VAR__P_P¶
Keyword arguments passed to
AdamOpt.
Methods
ask([batch_size])Samples new solutions.
check_stop(ranking_values)Checks if the ES should stop and be reset.
reset(x0)Resets the ES to start at x0.
tell(ranking_indices, ranking_values, ...)Passes the solutions back to the ES.
- check_stop(ranking_values: ndarray) bool[source]¶
Checks if the ES should stop and be reset.
- Parameters:¶
- ranking_values: ndarray¶
Array of values that were used to rank the solutions. Shape can be either
(batch_size,)or (batch_size, n_values)``, wherebatch_sizeis the number of solutions andn_valuesis the number of values that the ranker used. Note that unlike intell(), these values must be sorted according to theranking_indicespassed totell().
- Returns:¶
True if any of the stopping conditions are satisfied.
- tell(ranking_indices: ndarray, ranking_values: ndarray, num_parents: int | integer) None[source]¶
Passes the solutions back to the ES.
- Parameters:¶
- ranking_indices: ndarray¶
Integer indices that are used to rank the solutions returned in
ask(). Note that these are NOT the ranks of the solutions. Rather, they are indices such thatsolutions[ranking_indices]will correctly rank the solutions (think of an argsort).- ranking_values: ndarray¶
Array of values that were used to rank the solutions. Shape can be either
(batch_size,)or (batch_size, n_values)``, wherebatch_sizeis the number of solutions andn_valuesis the number of values that the ranker used. Note that we assume a descending sort, i.e., higher values should come first.- num_parents: int | integer¶
Number of top solutions to select from the ranked solutions.