Source code for metaheuristic_designer.simple.bayesian_optimization

"""
Ready-to-run Bayesian Optimisation wrappers.
"""

from __future__ import annotations
from typing import Optional

from ..encoding import Encoding
from ..objective_function import ObjectiveFunc
from ..algorithm import Algorithm
from ..initializers import UniformInitializer
from ..strategies import BayesianOptimization
from ..utils import RNGLike, check_random_state


[docs] def bayesian_optimization_binary( objfunc: ObjectiveFunc, population_size: int = 50, encoding: Optional[Encoding] = None, random_state: Optional[RNGLike] = None, **kwargs, ) -> Algorithm: """ Bayesian Optimisation for binary-coded vectors (not supported yet). """ raise NotImplementedError("Bayesian Optimisation is only available for real-coded vectors.")
[docs] def bayesian_optimization_discrete( objfunc: ObjectiveFunc, population_size: int = 50, encoding: Optional[Encoding] = None, random_state: Optional[RNGLike] = None, **kwargs, ) -> Algorithm: """ Bayesian Optimisation for integer-coded vectors (not supported yet). """ raise NotImplementedError("Bayesian Optimisation is only available for real-coded vectors.")
[docs] def bayesian_optimization_real( objfunc: ObjectiveFunc, population_size: int = 50, encoding: Optional[Encoding] = None, random_state: Optional[RNGLike] = None, **kwargs, ) -> Algorithm: """Bayesian Optimisation for real-coded vectors. Parameters ---------- objfunc : ObjectiveFunc The objective function to optimise. population_size : int, optional Number of individuals in the initial population (default 50). encoding : Encoding, optional Encoding applied to the genotype. random_state : RNGLike, optional Random seed or generator. **kwargs Forwarded to :class:`Algorithm`. """ random_state = check_random_state(random_state) pop_initializer = UniformInitializer( objfunc.dimension, objfunc.lower_bound, objfunc.upper_bound, population_size=population_size, dtype=float, encoding=encoding, random_state=random_state, ) search_strategy = BayesianOptimization( initializer=pop_initializer, random_state=random_state, ) return Algorithm(objfunc, search_strategy, **kwargs)