Skip to content

Commit 2c78f7c

Browse files
authored
Fix acq min bug (#564)
1 parent c59cb64 commit 2c78f7c

File tree

4 files changed

+14
-11
lines changed

4 files changed

+14
-11
lines changed

bayes_opt/acquisition.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ def _smart_minimize(
362362
continue
363363

364364
# Store it if better than previous minimum(maximum).
365-
if min_acq is None or np.squeeze(res.fun) >= min_acq:
365+
if min_acq is None or np.squeeze(res.fun) < min_acq:
366366
x_try = res.x
367367
x_min = x_try
368368
min_acq = np.squeeze(res.fun)

bayes_opt/bayesian_optimization.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -422,14 +422,14 @@ def load_state(self, path: str | PathLike[str]) -> None:
422422
self._space.set_bounds(new_bounds)
423423
self._bounds_transformer.initialize(self._space)
424424

425-
self._gp.set_params(**state["gp_params"])
426-
if isinstance(self._gp.kernel, dict):
427-
kernel_params = self._gp.kernel
428-
self._gp.kernel = Matern(
429-
length_scale=kernel_params["length_scale"],
430-
length_scale_bounds=tuple(kernel_params["length_scale_bounds"]),
431-
nu=kernel_params["nu"],
432-
)
425+
# Construct the GP kernel
426+
kernel = Matern(**state["gp_params"]["kernel"])
427+
# Re-construct the GP parameters
428+
gp_params = {k: v for k, v in state["gp_params"].items() if k != "kernel"}
429+
gp_params["kernel"] = kernel
430+
431+
# Set the GP parameters
432+
self.set_gp_params(**gp_params)
433433

434434
self._gp.fit(self._space.params, self._space.target)
435435

tests/test_acquisition.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,10 @@ def verify_optimizers_match(optimizer1, optimizer2):
407407
rng = np.random.default_rng()
408408
assert rng.bit_generator.state["state"]["state"] == rng.bit_generator.state["state"]["state"]
409409

410-
assert optimizer1._gp.kernel.get_params() == optimizer2._gp.kernel.get_params()
410+
kernel_params1 = optimizer1._gp.kernel.get_params()
411+
kernel_params2 = optimizer2._gp.kernel.get_params()
412+
for k in kernel_params1:
413+
assert (np.array(kernel_params1[k]) == np.array(kernel_params2[k])).all()
411414

412415
suggestion1 = optimizer1.suggest()
413416
suggestion2 = optimizer2.suggest()

tests/test_bayesian_optimization.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,4 +582,4 @@ def area_of_triangle(sides):
582582
for _ in range(5):
583583
suggestion1 = optimizer.suggest()
584584
suggestion2 = new_optimizer.suggest()
585-
np.testing.assert_array_almost_equal(suggestion1["sides"], suggestion2["sides"], decimal=10)
585+
np.testing.assert_array_almost_equal(suggestion1["sides"], suggestion2["sides"], decimal=7)

0 commit comments

Comments
 (0)