From 3ce529883c7ab4e42dd4fac7a3e801912aa5c3da Mon Sep 17 00:00:00 2001 From: phi Date: Sun, 8 Sep 2024 20:08:28 +0900 Subject: [PATCH] fix: allow null target_func --- bayes_opt/acquisition.py | 2 +- bayes_opt/bayesian_optimization.py | 4 ++-- bayes_opt/target_space.py | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/bayes_opt/acquisition.py b/bayes_opt/acquisition.py index 6d330df0..1cf22c9f 100644 --- a/bayes_opt/acquisition.py +++ b/bayes_opt/acquisition.py @@ -804,7 +804,7 @@ def _copy_target_space(self, target_space: TargetSpace) -> TargetSpace: keys = target_space.keys pbounds = {key: bound for key, bound in zip(keys, target_space.bounds)} target_space_copy = TargetSpace( - None, # FIXME + None, pbounds=pbounds, constraint=target_space.constraint, allow_duplicate_points=target_space._allow_duplicate_points, diff --git a/bayes_opt/bayesian_optimization.py b/bayes_opt/bayesian_optimization.py index 46017105..bb7e93b5 100644 --- a/bayes_opt/bayesian_optimization.py +++ b/bayes_opt/bayesian_optimization.py @@ -79,7 +79,7 @@ class BayesianOptimization(Observable): Parameters ---------- - f: function + f: function or None. Function to be maximized. pbounds: dict @@ -110,7 +110,7 @@ class BayesianOptimization(Observable): def __init__( self, - f: Callable[..., float], + f: Callable[..., float] | None, pbounds: Mapping[str, tuple[float, float]], acquisition_function: AcquisitionFunction | None = None, constraint: Constraint | None = None, diff --git a/bayes_opt/target_space.py b/bayes_opt/target_space.py index a1036886..955e581c 100644 --- a/bayes_opt/target_space.py +++ b/bayes_opt/target_space.py @@ -33,7 +33,7 @@ class TargetSpace: Parameters ---------- - target_func : function + target_func : function or None. Function to be maximized. pbounds : dict @@ -64,7 +64,7 @@ class TargetSpace: def __init__( self, - target_func: Callable[..., float], + target_func: Callable[..., float] | None, pbounds: Mapping[str, tuple[float, float]], constraint: ConstraintModel | None = None, random_state: int | np.random.RandomState | None = None, @@ -406,6 +406,9 @@ def probe(self, params: Any) -> float | tuple[float, float | NDArray[Float]]: return self._cache[_hashable(x.ravel())] dict_params = self.array_to_params(x) + if self.target_func is None: + error_msg = "No target function has been provided." + raise ValueError(error_msg) target = self.target_func(**dict_params) if self._constraint is None: