ribs.emitters.opt.EvolutionStrategyBase¶
- class ribs.emitters.opt.EvolutionStrategyBase(sigma0, solution_dim, batch_size=None, seed=None, dtype=<class 'numpy.float64'>, lower_bounds=-inf, upper_bounds=inf)[source]¶
Base class for evolution strategy optimizers for use with emitters.
The basic usage is:
Initialize the optimizer and reset it.
Repeatedly:
Request new solutions with
ask()
Rank the solutions in the emitter (better solutions come first) and pass the indices and values back with
tell()
.Use
check_stop()
to see if the optimizer has reached a stopping condition, and if so, callreset()
.
- Parameters
sigma0 (float) – Initial step size.
solution_dim (int) – Size of the solution space.
batch_size (int) – Number of solutions to evaluate at a time.
seed (int) – Seed for the random number generator.
dtype (str or data-type) – Data type of solutions.
lower_bounds (float or numpy.ndarray) – 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 or numpy.ndarray) – Same as above, but for upper bounds (and pass np.inf instead of -np.inf).
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.
- abstract ask(batch_size=None)[source]¶
Samples new solutions.
- Parameters
batch_size (int) – batch size of the sample. Defaults to
self.batch_size
.
- abstract check_stop(ranking_values)[source]¶
Checks if the ES should stop and be reset.
- Parameters
ranking_values (numpy.ndarray) – Array of values that were used to rank the solutions. Shape can be either
(batch_size,)
or (batch_size, n_values)``, wherebatch_size
is the number of solutions andn_values
is the number of values that the ranker used. Note that unlike intell()
, these values must be sorted according to theranking_indices
passed totell()
.- Returns
True if any of the stopping conditions are satisfied.
- abstract reset(x0)[source]¶
Resets the ES to start at x0.
- Parameters
x0 (numpy.ndarray) – Initial mean.
- abstract tell(ranking_indices, ranking_values, num_parents)[source]¶
Passes the solutions back to the ES.
- Parameters
ranking_indices (numpy.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 (numpy.ndarray) – Array of values that were used to rank the solutions. Shape can be either
(batch_size,)
or (batch_size, n_values)``, wherebatch_size
is the number of solutions andn_values
is 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) – Number of top solutions to select from the ranked solutions.