Add int search space
This commit is contained in:
@@ -6,5 +6,6 @@
|
||||
|
||||
from .basic_space import Categorical
|
||||
from .basic_space import Continuous
|
||||
from .basic_space import Integer
|
||||
from .basic_op import has_categorical
|
||||
from .basic_op import has_continuous
|
||||
|
@@ -92,6 +92,32 @@ class Categorical(Space):
|
||||
return sample
|
||||
|
||||
|
||||
class Integer(Categorical):
|
||||
"""A space contains the integer values."""
|
||||
|
||||
def __init__(self, lower: int, upper: int, default: Optional[int] = None):
|
||||
if not isinstance(lower, int) or not isinstance(upper, int):
|
||||
raise ValueError(
|
||||
"The lower [{:}] and uppwer [{:}] must be int.".format(lower, upper)
|
||||
)
|
||||
data = list(range(lower, upper + 1))
|
||||
self._raw_lower = lower
|
||||
self._raw_upper = upper
|
||||
self._raw_default = default
|
||||
if default is not None and (default < lower or default > upper):
|
||||
raise ValueError("The default value [{:}] is out of range.".format(default))
|
||||
default = data.index(default)
|
||||
super(Integer, self).__init__(*data, default=default)
|
||||
|
||||
def __repr__(self):
|
||||
return "{name:}(lower={lower:}, upper={upper:}, default={default:})".format(
|
||||
name=self.__class__.__name__,
|
||||
lower=self._raw_lower,
|
||||
upper=self._raw_upper,
|
||||
default=self._raw_default,
|
||||
)
|
||||
|
||||
|
||||
np_float_types = (np.float16, np.float32, np.float64)
|
||||
np_int_types = (
|
||||
np.uint8,
|
||||
|
Reference in New Issue
Block a user