def test_get_next_by_random_search(self, patch): def side_effect(size): return [ConfigurationMock()] * size patch.side_effect = side_effect smbo = SMBO(self.scenario, 1) 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)
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 x: x smbo = SMBO(self.scenario, 1) 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).reshape((-1, 1)))