Beispiel #1
0
 def setUp(self):
     self.search_space = SearchSpace(
         parameters=[
             RangeParameter(
                 "x", lower=1, upper=3, parameter_type=ParameterType.FLOAT
             ),
             RangeParameter(
                 "y", lower=1, upper=2, parameter_type=ParameterType.FLOAT
             ),
             RangeParameter(
                 "z",
                 lower=1,
                 upper=2,
                 parameter_type=ParameterType.FLOAT,
                 log_scale=True,
             ),
             RangeParameter("a", lower=1, upper=2, parameter_type=ParameterType.INT),
             ChoiceParameter(
                 "b", parameter_type=ParameterType.STRING, values=["a", "b", "c"]
             ),
         ],
         parameter_constraints=[],
     )
     self.t = CenteredUnitX(
         search_space=self.search_space,
         observation_features=None,
         observation_data=None,
     )
Beispiel #2
0
    def testTransformSearchSpace(self):
        ss2 = deepcopy(self.search_space)
        ss2 = self.t.transform_search_space(ss2)

        # Parameters transformed
        true_bounds = {
            "x": (-1.0, 1.0),
            "y": (-1.0, 1.0),
            "z": (1.0, 2.0),
            "a": (1.0, 2.0),
        }
        for p_name, (l, u) in true_bounds.items():
            self.assertEqual(ss2.parameters[p_name].lower, l)
            self.assertEqual(ss2.parameters[p_name].upper, u)
        self.assertEqual(ss2.parameters["b"].values, ["a", "b", "c"])
        self.assertEqual(len(ss2.parameters), 5)
        # Constraints error
        ss2 = deepcopy(self.search_space)
        ss2.add_parameter_constraints([
            ParameterConstraint(constraint_dict={
                "x": -0.5,
                "y": 1
            }, bound=0.5)
        ])
        with self.assertRaises(ValueError):
            ss2 = self.t.transform_search_space(ss2)
        t = CenteredUnitX(
            search_space=self.search_space_with_target,
            observation_features=None,
            observation_data=None,
        )
        t.transform_search_space(self.search_space_with_target)
        self.assertEqual(
            self.search_space_with_target.parameters["x"].target_value, 1.0)
Beispiel #3
0
class CenteredUnitXTransformTest(TestCase):
    def setUp(self):
        self.search_space = SearchSpace(
            parameters=[
                RangeParameter(
                    "x", lower=1, upper=3, parameter_type=ParameterType.FLOAT
                ),
                RangeParameter(
                    "y", lower=1, upper=2, parameter_type=ParameterType.FLOAT
                ),
                RangeParameter(
                    "z",
                    lower=1,
                    upper=2,
                    parameter_type=ParameterType.FLOAT,
                    log_scale=True,
                ),
                RangeParameter("a", lower=1, upper=2, parameter_type=ParameterType.INT),
                ChoiceParameter(
                    "b", parameter_type=ParameterType.STRING, values=["a", "b", "c"]
                ),
            ],
            parameter_constraints=[],
        )
        self.t = CenteredUnitX(
            search_space=self.search_space,
            observation_features=None,
            observation_data=None,
        )

    def testInit(self):
        self.assertEqual(self.t.bounds, {"x": (1.0, 3.0), "y": (1.0, 2.0)})

    def testTransformObservationFeatures(self):
        observation_features = [
            ObservationFeatures(parameters={"x": 2, "y": 2, "z": 2, "a": 2, "b": "b"})
        ]
        obs_ft2 = deepcopy(observation_features)
        obs_ft2 = self.t.transform_observation_features(obs_ft2)
        self.assertEqual(
            obs_ft2,
            [
                ObservationFeatures(
                    parameters={"x": 0.0, "y": 1.0, "z": 2, "a": 2, "b": "b"}
                )
            ],
        )
        obs_ft2 = self.t.untransform_observation_features(obs_ft2)
        self.assertEqual(obs_ft2, observation_features)
        # Test transform partial observation
        obs_ft3 = [ObservationFeatures(parameters={"x": 1.0, "z": 2})]
        obs_ft3 = self.t.transform_observation_features(obs_ft3)
        self.assertEqual(
            obs_ft3[0], ObservationFeatures(parameters={"x": -1.0, "z": 2})
        )
        obs_ft5 = self.t.transform_observation_features([ObservationFeatures({})])
        self.assertEqual(obs_ft5[0], ObservationFeatures({}))

    def testTransformSearchSpace(self):
        ss2 = deepcopy(self.search_space)
        ss2 = self.t.transform_search_space(ss2)

        # Parameters transformed
        true_bounds = {
            "x": (-1.0, 1.0),
            "y": (-1.0, 1.0),
            "z": (1.0, 2.0),
            "a": (1.0, 2.0),
        }
        for p_name, (l, u) in true_bounds.items():
            self.assertEqual(ss2.parameters[p_name].lower, l)
            self.assertEqual(ss2.parameters[p_name].upper, u)
        self.assertEqual(ss2.parameters["b"].values, ["a", "b", "c"])
        self.assertEqual(len(ss2.parameters), 5)
        # Constraints error
        ss2 = deepcopy(self.search_space)
        ss2.add_parameter_constraints(
            [ParameterConstraint(constraint_dict={"x": -0.5, "y": 1}, bound=0.5)]
        )
        with self.assertRaises(ValueError):
            ss2 = self.t.transform_search_space(ss2)