Skip to content

Commit d12fd04

Browse files
committed
Update acquisition.py
1 parent 232f9d9 commit d12fd04

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

bayes_opt/acquisition.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
import numpy as np
2929
from numpy.random import RandomState
30-
from scipy.optimize import minimize
30+
from scipy.optimize import minimize, differential_evolution
3131
from scipy.special import softmax
3232
from scipy.stats import norm
3333
from sklearn.gaussian_process import GaussianProcessRegressor
@@ -295,8 +295,10 @@ def _l_bfgs_b_minimize(
295295
min_acq : float
296296
Acquisition function value at `x_min`
297297
"""
298+
bounds = space.bounds
298299
continuous_dimensions = space.continuous_dimensions
299300
continuous_bounds = space.bounds[continuous_dimensions]
301+
discrete_dimensions = ~continuous_dimensions
300302

301303
if not continuous_dimensions.any():
302304
min_acq = np.inf
@@ -308,21 +310,23 @@ def _l_bfgs_b_minimize(
308310
x_min: NDArray[Float]
309311
for x_try in x_seeds:
310312

311-
def continuous_acq(x: NDArray[Float], x_try=x_try) -> NDArray[Float]:
312-
x_try[continuous_dimensions] = x
313-
return acq(x_try)
314-
313+
# def continuous_acq(x: NDArray[Float], x_try=x_try) -> NDArray[Float]:
314+
# x_try[continuous_dimensions] = x
315+
# return acq(x_try)
316+
if all(continuous_dimensions):
315317
# Find the minimum of minus the acquisition function
316-
res: OptimizeResult = minimize(
317-
continuous_acq, x_try[continuous_dimensions], bounds=continuous_bounds, method="L-BFGS-B"
318-
)
318+
res: OptimizeResult = minimize(acq, x_try, bounds=continuous_bounds, method="L-BFGS-B")
319+
else:
320+
res: OptimizeResult = differential_evolution(acq, bounds=bounds,
321+
integrality=discrete_dimensions,
322+
seed=self.random_state)
319323
# See if success
320324
if not res.success:
321325
continue
322326

323327
# Store it if better than previous minimum(maximum).
324328
if min_acq is None or np.squeeze(res.fun) >= min_acq:
325-
x_try[continuous_dimensions] = res.x
329+
x_try = res.x
326330
x_min = x_try
327331
min_acq = np.squeeze(res.fun)
328332

0 commit comments

Comments
 (0)