def test_ego(search_space: SearchSpace, expected_minimum: tf.Tensor) -> None: ego = EfficientGlobalOptimization( NegativeLowerConfidenceBound(0).using(OBJECTIVE)) dataset = Dataset(tf.zeros([0, 2]), tf.zeros([0, 1])) query_point, _ = ego.acquire(search_space, {OBJECTIVE: dataset}, {OBJECTIVE: QuadraticMeanAndRBFKernel()}) npt.assert_array_almost_equal(query_point, expected_minimum, decimal=5)
def test_efficient_global_optimization(optimizer: AcquisitionOptimizer[Box]) -> None: class NegQuadratic(SingleModelAcquisitionBuilder): def __init__(self) -> None: self._updated = False def prepare_acquisition_function( self, model: ProbabilisticModel, dataset: Optional[Dataset] = None, ) -> AcquisitionFunction: return lambda x: -quadratic(tf.squeeze(x, -2) - 1) def update_acquisition_function( self, function: AcquisitionFunction, model: ProbabilisticModel, dataset: Optional[Dataset] = None, ) -> AcquisitionFunction: self._updated = True return function function = NegQuadratic() search_space = Box([-10], [10]) ego = EfficientGlobalOptimization(function, optimizer) data, model = empty_dataset([1], [1]), QuadraticMeanAndRBFKernel(x_shift=1) query_point = ego.acquire_single(search_space, model, dataset=data) npt.assert_allclose(query_point, [[1]], rtol=1e-4) assert not function._updated query_point = ego.acquire(search_space, {OBJECTIVE: model}) npt.assert_allclose(query_point, [[1]], rtol=1e-4) assert function._updated
def test_ego(search_space: SearchSpace, expected_minimum: tf.Tensor) -> None: ego = EfficientGlobalOptimization( NegativeLowerConfidenceBound(0).using(OBJECTIVE)) dataset = Dataset(tf.constant([[]]), tf.constant([[]])) query_point, _ = ego.acquire(search_space, {OBJECTIVE: dataset}, {OBJECTIVE: QuadraticWithUnitVariance()}) npt.assert_array_almost_equal(query_point, expected_minimum, decimal=5)
def test_efficient_global_optimization( optimizer: AcquisitionOptimizer[Box]) -> None: class NegQuadratic(AcquisitionFunctionBuilder): def prepare_acquisition_function( self, datasets: Mapping[str, Dataset], models: Mapping[str, ProbabilisticModel]) -> AcquisitionFunction: return lambda x: -quadratic(tf.squeeze(x, -2) - 1) search_space = Box([-10], [10]) ego = EfficientGlobalOptimization(NegQuadratic(), optimizer) data, model = empty_dataset([1], [1]), QuadraticMeanAndRBFKernel(x_shift=1) query_point, _ = ego.acquire(search_space, {"": data}, {"": model}) npt.assert_allclose(query_point, [[1]], rtol=1e-4)