ribs.emitters.EmitterBase¶
- class ribs.emitters.EmitterBase(archive: ArchiveBase, *, solution_dim: Int | tuple[Int, ...], bounds: Collection[tuple[None | Float, None | Float]] | None, lower_bounds: ArrayLike | None, upper_bounds: ArrayLike | None)[source]¶
Base class for emitters.
Every emitter has an
ask()method that generates a batch of solutions, and atell()method that inserts solutions into the emitter’s archive. Child classes are only required to overrideask().DQD emitters should also override
ask_dqd()andtell_dqd()methods.- Parameters:¶
- archive: ArchiveBase¶
Archive of solutions, e.g.,
ribs.archives.GridArchive.- solution_dim: Int | tuple[Int, ...]¶
The dimensionality of solutions produced by this emitter.
- bounds: Collection[tuple[None | Float, None | Float]] | None¶
Bounds of the solution space. Pass None to indicate there are no bounds. Alternatively, pass an array-like to specify the bounds for each dim. Each element in this array-like can be None to indicate no bound, or a tuple of
(lower_bound, upper_bound), wherelower_boundorupper_boundmay be None to indicate no bound. Unbounded upper bounds are set to +inf, and unbounded lower bounds are set to -inf.- lower_bounds: ArrayLike | None¶
Instead of specifying
bounds,lower_boundsandupper_boundsmay be specified. This is useful if, for instance, solutions are multi-dimensional. Here, pass None to indicate there are no bounds (i.e., bounds are set to -inf), or pass an array specifying the lower bounds of the solution space.- upper_bounds: ArrayLike | None¶
Upper bounds of the solution space; see
lower_boundsabove. Pass None to indicate there are no bounds (i.e., bounds are set to inf).
- Raises:¶
ValueError – There is an error in the bounds configuration.
Methods
ask()Generates a
(batch_size, solution_dim)array of solutions.ask_dqd()Generates solutions for which gradient information must be computed.
tell(solution, objective, measures, ...)Gives the emitter results from evaluating solutions.
tell_dqd(solution, objective, measures, ...)Gives the emitter results from evaluating the gradient of the solutions.
Attributes
Stores solutions generated by this emitter.
(solution_dim,)array with lower bounds of solution space.Dimensionality of solutions produced by this emitter.
(solution_dim,)array with upper bounds of solution space.- ask() ndarray[source]¶
Generates a
(batch_size, solution_dim)array of solutions.Returns an empty array by default.
- ask_dqd() ndarray[source]¶
Generates solutions for which gradient information must be computed.
The solutions should be a
(batch_size, solution_dim)array.This method only needs to be implemented by emitters used in DQD. It returns an empty array by default.
- tell(solution: numpy.typing.ArrayLike, objective: numpy.typing.ArrayLike, measures: numpy.typing.ArrayLike, add_info: dict[str, ndarray], **fields: numpy.typing.ArrayLike) None[source]¶
Gives the emitter results from evaluating solutions.
This base class implementation (in
EmitterBase) does nothing by default.- Parameters:¶
- solution: numpy.typing.ArrayLike¶
Array of solutions generated by this emitter’s
ask()method.- objective: numpy.typing.ArrayLike¶
1D array containing the objective function value of each solution.
- measures: numpy.typing.ArrayLike¶
(n, <measure space dimension>)array with the measure space coordinates of each solution.- add_info: dict[str, ndarray]¶
Data returned from the archive
add()method.- **fields: numpy.typing.ArrayLike¶
Additional data for each solution. Each argument should be an array with batch_size as the first dimension.
- tell_dqd(solution: numpy.typing.ArrayLike, objective: numpy.typing.ArrayLike, measures: numpy.typing.ArrayLike, jacobian: numpy.typing.ArrayLike, add_info: dict[str, ndarray], **fields: numpy.typing.ArrayLike) None[source]¶
Gives the emitter results from evaluating the gradient of the solutions.
This method is the counterpart of
ask_dqd(). It is only used by DQD emitters.- Parameters:¶
- solution: numpy.typing.ArrayLike¶
(batch_size, :attr:`solution_dim`)array of solutions generated by this emitter’sask()method.- objective: numpy.typing.ArrayLike¶
1-dimensional array containing the objective function value of each solution.
- measures: numpy.typing.ArrayLike¶
(batch_size, measure space dimension)array with the measure space coordinates of each solution.- jacobian: numpy.typing.ArrayLike¶
(batch_size, 1 + measure_dim, solution_dim)array consisting of Jacobian matrices of the solutions obtained fromask_dqd(). Each matrix should consist of the objective gradient of the solution followed by the measure gradients.- add_info: dict[str, ndarray]¶
Data returned from the archive
add()method.- **fields: numpy.typing.ArrayLike¶
Additional data for each solution. Each argument should be an array with batch_size as the first dimension.
- property archive : ArchiveBase¶
Stores solutions generated by this emitter.
- property lower_bounds : ndarray¶
(solution_dim,)array with lower bounds of solution space.For instance,
[-1, -1, -1]indicates that every dimension of the solution space has a lower bound of -1.