コード例 #1
0
 def test_get_next_by_random_search(self, patch):
     def side_effect(size):
         return [ConfigurationMock()] * size
     patch.side_effect = side_effect
     smbo = SMAC(self.scenario, rng=1).solver
     rval = smbo._get_next_by_random_search(10, False)
     self.assertEqual(len(rval), 10)
     for i in range(10):
         self.assertIsInstance(rval[i][1], ConfigurationMock)
         self.assertEqual(rval[i][1].origin, 'Random Search')
         self.assertEqual(rval[i][0], 0)
コード例 #2
0
    def test_choose_next_empty_X(self):
        smbo = SMAC(self.scenario, rng=1).solver
        smbo.acquisition_func._compute = mock.Mock(spec=RandomForestWithInstances)
        smbo._get_next_by_random_search = mock.Mock(spec=smbo._get_next_by_random_search)
        smbo._get_next_by_random_search.return_value = [[0, 0], [0, 1], [0, 2]]

        X = np.zeros((0, 2))
        Y = np.zeros((0, 1))

        x = smbo.choose_next(X, Y)
        self.assertEqual(x, [0, 1, 2])
        self.assertEqual(smbo._get_next_by_random_search.call_count, 1)
        self.assertEqual(smbo.acquisition_func._compute.call_count, 0)
コード例 #3
0
    def test_get_next_by_random_search_sorted(self, patch_sample, patch_ei,
                                              patch_impute):
        values = (10, 1, 9, 2, 8, 3, 7, 4, 6, 5)
        patch_sample.return_value = [ConfigurationMock(i) for i in values]
        patch_ei.return_value = np.array([[_] for _ in values], dtype=float)
        patch_impute.side_effect = lambda l: values
        smbo = SMAC(self.scenario, rng=1).solver
        rval = smbo._get_next_by_random_search(10, True)
        self.assertEqual(len(rval), 10)
        for i in range(10):
            self.assertIsInstance(rval[i][1], ConfigurationMock)
            self.assertEqual(rval[i][1].value, 10 - i)
            self.assertEqual(rval[i][0], 10 - i)
            self.assertEqual(rval[i][1].origin, 'Random Search (sorted)')

        # Check that config.get_array works as desired and imputation is used
        #  in between
        np.testing.assert_allclose(patch_ei.call_args[0][0],
                                   np.array(values, dtype=float))