Ejemplo n.º 1
0
 def test_deduplicate(self):
     sobol = RandomModelBridge(
         search_space=get_small_discrete_search_space(),
         model=SobolGenerator(deduplicate=True),
         transforms=Cont_X_trans,
     )
     for _ in range(4):  # Search space is {[0, 1], {"red", "panda"}}
         self.assertEqual(len(sobol.gen(1).arms), 1)
     with self.assertRaises(SearchSpaceExhausted):
         sobol.gen(1)
Ejemplo n.º 2
0
    def testGen(self, mock_init, mock_gen):
        # Test with constraints
        modelbridge = RandomModelBridge()
        modelbridge.parameters = ["x", "y", "z"]
        modelbridge.transforms = OrderedDict()
        modelbridge.model = RandomModel()
        observation_features, weights, best_obsf, _ = modelbridge._gen(
            n=3,
            search_space=self.search_space,
            pending_observations={},
            fixed_features=ObservationFeatures({"z": 3.0}),
            optimization_config=None,
            model_gen_options=self.model_gen_options,
        )
        gen_args = mock_gen.mock_calls[0][2]
        self.assertEqual(gen_args["n"], 3)
        self.assertEqual(gen_args["bounds"], [(0.0, 1.0), (1.0, 2.0),
                                              (0.0, 5.0)])
        self.assertTrue(
            np.array_equal(
                gen_args["linear_constraints"][0],
                np.array([[1.0, -1, 0.0], [-1.0, 0.0, -1.0]]),
            ))
        self.assertTrue(
            np.array_equal(gen_args["linear_constraints"][1],
                           np.array([[0.0], [-3.5]])))
        self.assertEqual(gen_args["fixed_features"], {2: 3.0})
        self.assertEqual(gen_args["model_gen_options"], {"option": "yes"})
        self.assertEqual(observation_features[0].parameters, {
            "x": 1.0,
            "y": 2.0,
            "z": 3.0
        })
        self.assertEqual(observation_features[1].parameters, {
            "x": 3.0,
            "y": 4.0,
            "z": 3.0
        })
        self.assertTrue(np.array_equal(weights, np.array([1.0, 2.0])))

        # Test with no constraints, no fixed feature, no pending observations
        search_space = SearchSpace(self.parameters[:2])
        modelbridge.parameters = ["x", "y"]
        modelbridge._gen(
            n=3,
            search_space=search_space,
            pending_observations={},
            fixed_features=ObservationFeatures({}),
            optimization_config=None,
            model_gen_options=self.model_gen_options,
        )
        gen_args = mock_gen.mock_calls[1][2]
        self.assertEqual(gen_args["bounds"], [(0.0, 1.0), (1.0, 2.0)])
        self.assertIsNone(gen_args["linear_constraints"])
        self.assertIsNone(gen_args["fixed_features"])
Ejemplo n.º 3
0
Archivo: alebo.py Proyecto: viotemp1/Ax
def get_ALEBOInitializer(search_space: SearchSpace, B: np.ndarray,
                         **model_kwargs: Any) -> RandomModelBridge:
    return RandomModelBridge(
        search_space=search_space,
        model=ALEBOInitializer(B=B, **model_kwargs),
        transforms=ALEBO_X_trans,  # pyre-ignore
    )
Ejemplo n.º 4
0
def get_sobol(
    search_space: SearchSpace,
    seed: Optional[int] = None,
    deduplicate: bool = False,
    init_position: int = 0,
    scramble: bool = True,
) -> RandomModelBridge:
    """Instantiates a Sobol sequence quasi-random generator.

    Args:
        search_space: Sobol generator search space.
        kwargs: Custom args for sobol generator.

    Returns:
        RandomModelBridge, with SobolGenerator as model.
    """
    return RandomModelBridge(
        search_space=search_space,
        model=SobolGenerator(
            seed=seed,
            deduplicate=deduplicate,
            init_position=init_position,
            scramble=scramble,
        ),
        transforms=Cont_X_trans,
    )
Ejemplo n.º 5
0
def get_ALEBOInitializer(
    search_space: SearchSpace, B: np.ndarray, **model_kwargs: Any
) -> RandomModelBridge:
    return RandomModelBridge(
        search_space=search_space,
        model=ALEBOInitializer(B=B, **model_kwargs),
        transforms=[CenteredUnitX],
    )
Ejemplo n.º 6
0
def get_uniform(search_space: SearchSpace,
                deduplicate: bool = False,
                seed: Optional[int] = None) -> RandomModelBridge:
    """Instantiate uniform generator.

    Args:
        search_space: Uniform generator search space.
        kwargs: Custom args for uniform generator.

    Returns:
        RandomModelBridge, with UniformGenerator as model.
    """
    return RandomModelBridge(
        search_space=search_space,
        model=UniformGenerator(deduplicate=deduplicate, seed=seed),
        transforms=Cont_X_trans,
    )
Ejemplo n.º 7
0
def get_rembo_initializer(
    search_space: SearchSpace,
    A: np.ndarray,
    bounds_d: List[Tuple[float, float]],
    **kwargs: Any,
) -> RandomModelBridge:
    """Instantiates a uniform random generator.

    Args:
        search_space: Search space.
        A: Projection matrix.
        bounds_d: Bounds in low-d space.
        kwargs: kwargs

    Returns:
        RandomModelBridge, with REMBOInitializer as model.
    """
    return RandomModelBridge(
        search_space=search_space,
        model=REMBOInitializer(A=A, bounds_d=bounds_d, **kwargs),
        transforms=[CenteredUnitX],
    )
Ejemplo n.º 8
0
 def get_sobol(search_space: SearchSpace) -> RandomModelBridge:
     return RandomModelBridge(
         search_space=search_space,
         model=SobolGenerator(),
         transforms=Cont_X_trans,
     )
Ejemplo n.º 9
0
 def testCrossValidate(self, mock_init):
     modelbridge = RandomModelBridge()
     modelbridge.transforms = OrderedDict()
     modelbridge.parameters = ["x", "y", "z"]
     with self.assertRaises(NotImplementedError):
         modelbridge._cross_validate([], [], [])
Ejemplo n.º 10
0
 def testPredict(self, mock_init):
     modelbridge = RandomModelBridge()
     modelbridge.transforms = OrderedDict()
     modelbridge.parameters = ["x", "y", "z"]
     with self.assertRaises(NotImplementedError):
         modelbridge._predict([])
Ejemplo n.º 11
0
 def testFit(self, mock_init):
     modelbridge = RandomModelBridge()
     model = mock.create_autospec(RandomModel, instance=True)
     modelbridge._fit(model, self.search_space, None, None)
     self.assertEqual(modelbridge.parameters, ["x", "y", "z"])
     self.assertTrue(isinstance(modelbridge.model, RandomModel))