diff --git a/ax/models/torch/botorch_modular/acquisition.py b/ax/models/torch/botorch_modular/acquisition.py index 06da10c7701..f3b7aa8fcde 100644 --- a/ax/models/torch/botorch_modular/acquisition.py +++ b/ax/models/torch/botorch_modular/acquisition.py @@ -543,6 +543,8 @@ def optimize( return candidates, acqf_values, arm_weights # 2b. Handle mixed search spaces that have discrete and continuous features. + # Only sequential optimization is supported for `optimize_acqf_mixed`. + optimizer_options_with_defaults.pop("sequential") candidates, acqf_values = optimize_acqf_mixed( acq_function=self.acqf, bounds=bounds, diff --git a/ax/models/torch/tests/test_acquisition.py b/ax/models/torch/tests/test_acquisition.py index 7dc4a716e51..3fed96edb87 100644 --- a/ax/models/torch/tests/test_acquisition.py +++ b/ax/models/torch/tests/test_acquisition.py @@ -510,9 +510,7 @@ def test_optimize_acqf_discrete_local_search( tkwargs = {"dtype": self.X.dtype, "device": self.X.device} ssd = SearchSpaceDigest( feature_names=["a", "b", "c"], - # pyre-fixme[6]: For 2nd param expected `List[Tuple[Union[float, int], - # Union[float, int]]]` but got `List[Tuple[int, int, int]]`. - bounds=[(0, 0, 0), (1, 1, 1)], + bounds=[(0, 1) for _ in range(3)], categorical_features=[0, 1, 2], discrete_choices={ # 30 * 60 * 90 > 100,000 k: np.linspace(0, 1, 30 * (k + 1)).tolist() for k in range(3) @@ -568,7 +566,6 @@ def test_optimize_mixed(self, mock_optimize_acqf_mixed: Mock) -> None: ) mock_optimize_acqf_mixed.assert_called_with( acq_function=acquisition.acqf, - sequential=True, bounds=mock.ANY, q=3, options={"init_batch_limit": 32, "batch_limit": 5},