from trieste.space import Box from trieste.utils.objectives import ( branin, BRANIN_GLOBAL_MINIMUM, BRANIN_GLOBAL_ARGMIN, mk_observer, ) from tests.util.misc import random_seed @gpflow.config.as_context(gpflow.config.Config(float=tf.float64)) @random_seed(1793) @pytest.mark.parametrize('num_steps, acquisition_rule', [ (12, EfficientGlobalOptimization()), (22, TrustRegion()), (17, ThompsonSampling(500, 3)), ]) def test_optimizer_finds_minima_of_the_branin_function( num_steps: int, acquisition_rule: AcquisitionRule) -> None: search_space = Box(tf.constant([0.0, 0.0], tf.float64), tf.constant([1.0, 1.0], tf.float64)) def build_model(data: Dataset) -> GaussianProcessRegression: variance = tf.math.reduce_variance(data.observations) kernel = gpflow.kernels.Matern52(variance, tf.constant([0.2, 0.2], tf.float64)) gpr = gpflow.models.GPR((data.query_points, data.observations), kernel, noise_variance=1e-5) gpflow.utilities.set_trainable(gpr.likelihood, False)
from trieste.types import State, TensorType @random_seed @pytest.mark.parametrize( "num_steps, reload_state, acquisition_rule_fn", cast( List[Tuple[int, bool, Union[Callable[[], AcquisitionRule[TensorType, Box]], Callable[[], AcquisitionRule[State[TensorType, Union[ AsynchronousRuleState, TrustRegion.State], ], Box, ], ], ], ]], [ (20, False, lambda: EfficientGlobalOptimization()), (20, True, lambda: EfficientGlobalOptimization()), (15, False, lambda: TrustRegion()), (15, True, lambda: TrustRegion()), ( 10, False, lambda: EfficientGlobalOptimization( LocalPenalizationAcquisitionFunction( BRANIN_SEARCH_SPACE, ).using(OBJECTIVE), num_query_points=3, ), ), ( 30, False, lambda: AsynchronousGreedy( LocalPenalizationAcquisitionFunction(