Beispiel #1
0
    def __init__(
        self,
        scenario: Scenario,
        tae_runner: typing.Optional[typing.Union[typing.Type[BaseRunner],
                                                 typing.Callable]] = None,
        tae_runner_kwargs: typing.Optional[typing.Dict] = None,
        runhistory: RunHistory = None,
        intensifier: typing.Optional[typing.Type[AbstractRacer]] = None,
        intensifier_kwargs: typing.Optional[typing.Dict] = None,
        acquisition_function_optimizer: typing.Optional[
            typing.Type[AcquisitionFunctionMaximizer]] = None,
        acquisition_function_optimizer_kwargs: typing.Optional[dict] = None,
        initial_design: typing.Optional[typing.Type[InitialDesign]] = None,
        initial_design_kwargs: typing.Optional[dict] = None,
        initial_configurations: typing.List[Configuration] = None,
        stats: Stats = None,
        rng: np.random.RandomState = None,
        run_id: int = 1,
        dask_client: typing.Optional[dask.distributed.Client] = None,
        n_jobs: typing.Optional[int] = 1,
    ):
        self.logger = logging.getLogger(self.__module__ + "." +
                                        self.__class__.__name__)

        scenario.acq_opt_challengers = 1  # type: ignore[attr-defined] # noqa F821

        if acquisition_function_optimizer is None:
            acquisition_function_optimizer = RandomSearch

        if scenario.run_obj == "runtime":
            # We need to do this to be on the same scale for imputation (although we only impute with a Random EPM)
            runhistory2epm = RunHistory2EPM4LogCost  # type: typing.Type[AbstractRunHistory2EPM]
        else:
            runhistory2epm = RunHistory2EPM4Cost

        # use SMAC facade
        super().__init__(
            scenario=scenario,
            tae_runner=tae_runner,
            tae_runner_kwargs=tae_runner_kwargs,
            runhistory=runhistory,
            intensifier=intensifier,
            intensifier_kwargs=intensifier_kwargs,
            runhistory2epm=runhistory2epm,
            initial_design=initial_design,
            initial_design_kwargs=initial_design_kwargs,
            initial_configurations=initial_configurations,
            run_id=run_id,
            acquisition_function_optimizer=acquisition_function_optimizer,
            acquisition_function_optimizer_kwargs=
            acquisition_function_optimizer_kwargs,
            model=RandomEPM,
            rng=rng,
            stats=stats,
            dask_client=dask_client,
            n_jobs=n_jobs,
        )
Beispiel #2
0
    def __init__(
            self,
            scenario: Scenario,
            tae_runner: typing.Optional[typing.Union[typing.Type[ExecuteTARun],
                                                     typing.Callable]] = None,
            tae_runner_kwargs: typing.Optional[typing.Dict] = None,
            runhistory: RunHistory = None,
            intensifier: typing.Optional[typing.Type[AbstractRacer]] = None,
            intensifier_kwargs: typing.Optional[typing.Dict] = None,
            acquisition_function_optimizer: typing.Optional[
                typing.Type[AcquisitionFunctionMaximizer]] = None,
            acquisition_function_optimizer_kwargs: typing.
        Optional[dict] = None,
            initial_design: typing.Optional[typing.Type[InitialDesign]] = None,
            initial_design_kwargs: typing.Optional[dict] = None,
            initial_configurations: typing.List[Configuration] = None,
            stats: Stats = None,
            rng: np.random.RandomState = None,
            run_id: int = 1):
        """
        Constructor

        Parameters
        ----------
        scenario: smac.scenario.scenario.Scenario
            Scenario object
        tae_runner: smac.tae.execute_ta_run.ExecuteTARun or callable
            Callable or implementation of
            :class:`~smac.tae.execute_ta_run.ExecuteTARun`. In case a
            callable is passed it will be wrapped by
            :class:`~smac.tae.execute_func.ExecuteTAFuncDict`.
            If not set, it will be initialized with the
            :class:`~smac.tae.execute_ta_run_old.ExecuteTARunOld`.
        tae_runner_kwargs: Optional[Dict]
            arguments passed to constructor of '~tae_runner'
        runhistory: RunHistory
            Runhistory to store all algorithm runs
        intensifier: AbstractRacer
            intensification object to issue a racing to decide the current incumbent
        intensifier_kwargs: Optional[Dict]
            arguments passed to the constructor of '~intensifier'
        acquisition_function_optimizer : ~smac.optimizer.ei_optimization.AcquisitionFunctionMaximizer
            Object that implements the :class:`~smac.optimizer.ei_optimization.AcquisitionFunctionMaximizer`.
            Will use :class:`smac.optimizer.ei_optimization.RandomSearch` if not set. Can be used
            to perform random search over a fixed set of configurations.
        acquisition_function_optimizer_kwargs: Optional[dict]
            Arguments passed to constructor of '~acquisition_function_optimizer'
        initial_design : InitialDesign
            initial sampling design
        initial_design_kwargs: Optional[dict]
            arguments passed to constructor of `~initial_design'
        initial_configurations: typing.List[Configuration]
            list of initial configurations for initial design --
            cannot be used together with initial_design
        stats: Stats
            optional stats object
        rng: np.random.RandomState
            Random number generator
        run_id: int, (default: 1)
            Run ID will be used as subfolder for output_dir.

        """
        self.logger = logging.getLogger(self.__module__ + "." +
                                        self.__class__.__name__)

        scenario.acq_opt_challengers = 1  # type: ignore[attr-defined] # noqa F821

        if acquisition_function_optimizer is None:
            acquisition_function_optimizer = RandomSearch

        if scenario.run_obj == "runtime":
            # We need to do this to be on the same scale for imputation (although we only impute with a Random EPM)
            runhistory2epm = RunHistory2EPM4LogCost  # type: typing.Type[AbstractRunHistory2EPM]
        else:
            runhistory2epm = RunHistory2EPM4Cost

        # use SMAC facade
        super().__init__(
            scenario=scenario,
            tae_runner=tae_runner,
            tae_runner_kwargs=tae_runner_kwargs,
            runhistory=runhistory,
            intensifier=intensifier,
            intensifier_kwargs=intensifier_kwargs,
            runhistory2epm=runhistory2epm,
            initial_design=initial_design,
            initial_design_kwargs=initial_design_kwargs,
            initial_configurations=initial_configurations,
            run_id=run_id,
            acquisition_function_optimizer=acquisition_function_optimizer,
            acquisition_function_optimizer_kwargs=
            acquisition_function_optimizer_kwargs,
            model=RandomEPM,
            rng=rng,
            stats=stats)