Source code for smac.facade.hyperband_facade

from __future__ import annotations

from smac.facade.random_facade import RandomFacade
from smac.intensifier.hyperband import Hyperband
from smac.scenario import Scenario

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


[docs]class HyperbandFacade(RandomFacade): """ Facade to use model-free Hyperband [LJDR18]_ for algorithm configuration. Uses Random Aggressive Online Racing (ROAR) to compare configurations, a random initial design and the Hyperband intensifier. """
[docs] @staticmethod def get_intensifier( # type: ignore scenario: Scenario, *, eta: int = 3, n_seeds: int = 1, instance_seed_order: str | None = "shuffle_once", max_incumbents: int = 10, incumbent_selection: str = "highest_observed_budget", ) -> Hyperband: """Returns a Hyperband intensifier instance. Budgets are supported. eta : int, defaults to 3 Input that controls the proportion of configurations discarded in each round of Successive Halving. n_seeds : int, defaults to 1 How many seeds to use for each instance. instance_seed_order : str, defaults to "shuffle_once" How to order the instance-seed pairs. Can be set to: * None: No shuffling at all and use the instance-seed order provided by the user. * "shuffle_once": Shuffle the instance-seed keys once and use the same order across all runs. * "shuffle": Shuffle the instance-seed keys for each bracket individually. incumbent_selection : str, defaults to "any_budget" How to select the incumbent when using budgets. Can be set to: * "any_budget": Incumbent is the best on any budget i.e., best performance regardless of budget. * "highest_observed_budget": Incumbent is the best in the highest budget run so far. * "highest_budget": Incumbent is selected only based on the highest budget. max_incumbents : int, defaults to 10 How many incumbents to keep track of in the case of multi-objective. """ return Hyperband( scenario=scenario, eta=eta, n_seeds=n_seeds, instance_seed_order=instance_seed_order, max_incumbents=max_incumbents, incumbent_selection=incumbent_selection, )