Source code for metaheuristic_designer.strategies.bayesian_optimization.bayesian_optimization

"""
Bayesian Optimization strategy.
"""

from __future__ import annotations
from typing import Optional


from ...initializer import Initializer
from ...objective_function import ObjectiveFunc
from ...parent_selection_base import ParentSelection
from ...operators.BO_operator import BOOperator
from ..population_based_strategy import PopulationBasedStrategy
from ...utils import RNGLike


[docs] class BayesianOptimization(PopulationBasedStrategy): """ Bayesian Optimization using a Gaussian Process surrogate. This strategy replaces the usual perturbation operator with a :class:`BOOperator`, which fits a GP model to the current population and uses an acquisition function to propose new candidates. Parameters ---------- initializer : Initializer Population initializer (provides the starting points). parent_sel : ParentSelection, optional Parent selection method (default: identity). name : str, optional Display name (default ``"Bayesian Optimization"``). \\*\\*kwargs Forwarded to :class:`BOOperator` (e.g., ``batch_size``, ``max_samples``, ``kernel``). """ def __init__( self, initializer: Initializer, objfunc: ObjectiveFunc, parent_sel: ParentSelection = None, name: str = "Bayesian Optimization", rng: Optional[RNGLike] = None, **kwargs, ): super().__init__( initializer, operator=BOOperator(objfunc=objfunc, initializer=initializer, rng=rng, **kwargs), parent_sel=parent_sel, name=name, rng=rng, **kwargs, )