Esempio n. 1
0
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(