Source code for smac.random_design.abstract_random_design

from __future__ import annotations

from abc import abstractmethod
from typing import Any

import numpy as np

from smac.utils.logging import get_logger

__copyright__ = "Copyright 2022, automl.org"
__license__ = "3-clause BSD"

logger = get_logger(__name__)


[docs]class AbstractRandomDesign: """Abstract base of helper classes to configure interleaving of random configurations in a list of challengers. Parameters ---------- seed : int The random seed initializing this design. """ def __init__(self, seed: int = 0): self._seed = seed self._rng = np.random.RandomState(seed=seed) @property def meta(self) -> dict[str, Any]: """Returns the meta data of the created object.""" return { "name": self.__class__.__name__, "seed": self._seed, }
[docs] def next_iteration(self) -> None: """Indicates the beginning of the next SMBO iteration.""" pass
[docs] @abstractmethod def check(self, iteration: int) -> bool: """Check, if the next configuration should be random. Parameters ---------- iteration : int Number of the i-th configuration evaluated in an SMBO iteration. Returns ------- bool Whether the next configuration should be random. """ pass