Source code for ribs.archives._archive_stats

"""Provides ArchiveStats."""
import dataclasses

import numpy as np


[docs]@dataclasses.dataclass class ArchiveStats: """Holds statistics about an archive. Attributes of type :class:`~numpy.floating` will match the :attr:`~ArchiveBase.dtype` of their archive. """ #: Number of elites in the archive. num_elites: int #: Proportion of cells in the archive that have an elite - always in the #: range :math:`[0,1]`. coverage: np.floating #: QD score, i.e. sum of objective values of all elites in the archive. If #: ``qd_score_offset`` was passed in to the archive, this QD score #: normalizes the objectives by subtracting the offset from all objective #: values before computing the QD score. qd_score: np.floating #: Normalized QD score, i.e. the QD score divided by the number of cells in #: the archive. norm_qd_score: np.floating #: Maximum objective value of the elites in the archive. None if there are #: no elites in the archive. #: #: .. note:: #: If the archive is non-elitist (this occurs when using the archive #: with a learning rate which is not 1.0, as in CMA-MAE), then an elite #: with this objective may no longer exist in the archive because it was #: replaced with an elite with a lower objective value. This can happen #: because in non-elitist archives, new solutions only need to exceed #: the *threshold* of the cell they are being inserted into, not the #: *objective* of the elite currently in the cell. See :pr:`314` for #: more info. obj_max: np.floating #: Mean objective value of the elites in the archive. None if there are no #: elites in the archive. obj_mean: np.floating