Skip to content

Commit

Permalink
Fix #186: do not underflow if q is provided in an edge-case
Browse files Browse the repository at this point in the history
  • Loading branch information
mfeurer committed Nov 26, 2021
1 parent e9573c1 commit c85e79c
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
8 changes: 4 additions & 4 deletions ConfigSpace/hyperparameters.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ cdef class UniformFloatHyperparameter(FloatHyperparameter):

if self.log:
if self.q is not None:
lower = self.lower - (np.float64(self.q) / 2. + 0.0001)
lower = self.lower - (np.float64(self.q) / 2. - 0.0001)
upper = self.upper + (np.float64(self.q) / 2. - 0.0001)
else:
lower = self.lower
Expand All @@ -476,7 +476,7 @@ cdef class UniformFloatHyperparameter(FloatHyperparameter):
self._upper = np.log(upper)
else:
if self.q is not None:
self._lower = self.lower - (self.q / 2. + 0.0001)
self._lower = self.lower - (self.q / 2. - 0.0001)
self._upper = self.upper + (self.q / 2. - 0.0001)
else:
self._lower = self.lower
Expand Down Expand Up @@ -682,7 +682,7 @@ cdef class NormalFloatHyperparameter(FloatHyperparameter):

if self.log:
if self.q is not None:
lower = self.lower - (np.float64(self.q) / 2. + 0.0001)
lower = self.lower - (np.float64(self.q) / 2. - 0.0001)
upper = self.upper + (np.float64(self.q) / 2. - 0.0001)
else:
lower = self.lower
Expand All @@ -691,7 +691,7 @@ cdef class NormalFloatHyperparameter(FloatHyperparameter):
self._upper = np.log(upper)
else:
if self.q is not None:
self._lower = self.lower - (self.q / 2. + 0.0001)
self._lower = self.lower - (self.q / 2. - 0.0001)
self._upper = self.upper + (self.q / 2. - 0.0001)
else:
self._lower = self.lower
Expand Down
10 changes: 8 additions & 2 deletions test/test_hyperparameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -646,10 +646,16 @@ def sample(hp):

counts_per_bin = sample(hp)
self.assertEqual(counts_per_bin,
[24368, 15778, 0, 11633, 0, 0, 9508, 7869, 0, 0, 6757,
0, 5918, 0, 5114, 4797, 0, 0, 4340, 0, 3918])
[24359, 15781, 0, 11635, 0, 0, 9506, 7867, 0, 0, 6763,
0, 5919, 0, 5114, 4798, 0, 0, 4339, 0, 3919])
self.assertEqual(sample(hp), sample(hp))

# Issue #199
hp = UniformFloatHyperparameter('uni_float_q', lower=1e-4, upper=1e-1, q=1e-5, log=True)
self.assertTrue(np.isfinite(hp._lower))
self.assertTrue(np.isfinite(hp._upper))
sample(hp)

def test_sample_NormalFloatHyperparameter(self):
hp = NormalFloatHyperparameter("nfhp", 0, 1)

Expand Down

0 comments on commit c85e79c

Please sign in to comment.