import logging
from typing import Dict, Any
from syne_tune.optimizer.schedulers.searchers.searcher import BaseSearcher
logger = logging.getLogger(__name__)
[docs]
class SingleObjectiveBaseSearcher(BaseSearcher):
"""
Base class of searchers, which optimize a single objective.
"""
[docs]
def on_trial_result(
self,
trial_id: int,
config: Dict[str, Any],
metric: float,
):
"""Inform searcher about result
The scheduler passes every result. If ``update == True``, the searcher
should update its surrogate model (if any), otherwise ``result`` is an
intermediate result not modelled.
The default implementation calls :meth:`_update` if ``update == True``.
It can be overwritten by searchers which also react to intermediate
results.
:param trial_id: See :meth:`~syne_tune.optimizer.schedulers.TrialScheduler.on_trial_result`
:param config: See :meth:`~syne_tune.optimizer.schedulers.TrialScheduler.on_trial_result`
:param metric: See :meth:`~syne_tune.optimizer.schedulers.TrialScheduler.on_trial_result`
"""
return
[docs]
def on_trial_complete(
self,
trial_id: int,
config: Dict[str, Any],
metric: float,
):
"""Inform searcher about result
The scheduler passes every result. If ``update == True``, the searcher
should update its surrogate model (if any), otherwise ``result`` is an
intermediate result not modelled.
The default implementation calls :meth:`_update` if ``update == True``.
It can be overwritten by searchers which also react to intermediate
results.
:param trial_id: See :meth:`~syne_tune.optimizer.schedulers.TrialScheduler.on_trial_result`
:param config: See :meth:`~syne_tune.optimizer.schedulers.TrialScheduler.on_trial_result`
:param metric: See :meth:`~syne_tune.optimizer.schedulers.TrialScheduler.on_trial_result`
"""
return