Domain: Parameter Range without an Id
A Domain object is a representation of a single dimension of a ParamSet. Domain objects are used to construct
ParamSets, either through the ps() short form, or through the ParamSet$search_space() mechanism (see
to_tune()). Domain corresponds to a Param object, except it does not have an $id, and it does have a
trafo and dependencies (depends) associated with it. For each of the basic Param classes (ParamInt,
ParamDbl, ParamLgl, ParamFct, and ParamUty) there is a function constructing a Domain object
(p_int(), p_dbl(), p_lgl(), p_fct(), p_uty()). They each have the same arguments as the corresponding
Param $new() function, except without the id argument, and with the the additional parameters trafo, and
depends.
p_int( lower = -Inf, upper = Inf, special_vals = list(), default = NO_DEF, tags = character(), depends = NULL, trafo = NULL, logscale = FALSE ) p_dbl( lower = -Inf, upper = Inf, special_vals = list(), default = NO_DEF, tags = character(), tolerance = sqrt(.Machine$double.eps), depends = NULL, trafo = NULL, logscale = FALSE ) p_uty( default = NO_DEF, tags = character(), custom_check = NULL, depends = NULL, trafo = NULL ) p_lgl( special_vals = list(), default = NO_DEF, tags = character(), depends = NULL, trafo = NULL ) p_fct( levels, special_vals = list(), default = NO_DEF, tags = character(), depends = NULL, trafo = NULL )
lower |
( |
upper |
( |
special_vals |
( |
default |
( |
tags |
(
|
depends |
( |
trafo |
( |
logscale |
( |
tolerance |
( |
custom_check |
( |
levels |
( |
The p_fct function admits a levels argument that goes beyond the levels accepted by ParamFct$new().
Instead of a character vector, any atomic vector or list (optionally named) may be given. (If the value is a list
that is not named, the names are inferred using as.character() on the values.) The resulting Domain will
correspond to a range of values given by the names of the levels argument with a trafo that maps the character
names to the arbitrary values of the levels argument.
A Domain object.
params = ps(
unbounded_integer = p_int(),
bounded_double = p_dbl(0, 10),
half_bounded_integer = p_dbl(1),
half_bounded_double = p_dbl(upper = 1),
double_with_trafo = p_dbl(-1, 1, trafo = exp),
extra_double = p_dbl(0, 1, special_vals = list("xxx"), tags = "tagged"),
factor_param = p_fct(c("a", "b", "c")),
factor_param_with_implicit_trafo = p_fct(list(a = 1, b = 2, c = list()))
)
print(params)
params$trafo(list(
bounded_double = 1,
double_with_trafo = 1,
factor_param = "c",
factor_param_with_implicit_trafo = "c"
))
# logscale:
params = ps(x = p_dbl(1, 100, logscale = TRUE))
# The ParamSet has bounds log(1) .. log(100):
print(params)
# When generating a equidistant grid, it is equidistant within log values
grid = generate_design_grid(params, 3)
print(grid)
# But the values are on a log scale with desired bounds after trafo
print(grid$transpose())
# Integer parameters with logscale are `ParamDbl`s pre-trafo
params = ps(x = p_int(0, 10, logscale = TRUE))
print(params)
grid = generate_design_grid(params, 4)
print(grid)
# ... but get transformed to integers.
print(grid$transpose())Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.