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 (requires) 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 requires.

Domain objects are representations of parameter ranges and are intermediate objects to be used in short form constructions in to_tune() and ps(). Because of their nature, they should not be modified by the user. The Domain object's internals are subject to change and should not be relid upon.

p_int(
  lower = -Inf,
  upper = Inf,
  special_vals = list(),
  default = NO_DEF,
  tags = character(),
  requires = NULL,
  trafo = NULL
)

p_dbl(
  lower = -Inf,
  upper = Inf,
  special_vals = list(),
  default = NO_DEF,
  tags = character(),
  requires = NULL,
  trafo = NULL
)

p_uty(
  default = NO_DEF,
  tags = character(),
  custom_check = NULL,
  requires = NULL,
  trafo = NULL
)

p_lgl(
  special_vals = list(),
  default = NO_DEF,
  tags = character(),
  requires = NULL,
  trafo = NULL
)

p_fct(
  levels,
  special_vals = list(),
  default = NO_DEF,
  tags = character(),
  requires = NULL,
  trafo = NULL
)

Arguments

lower

(numeric(1))
Lower bound, can be -Inf.

upper

(numeric(1))
Upper bound can be +Inf.

special_vals

(list())
Arbitrary special values this parameter is allowed to take, to make it feasible. This allows extending the domain of the parameter. Note that these values are only used in feasibility checks, neither in generating designs nor sampling.

default

(any)
Default value. Can be from the domain of the parameter or an element of special_vals. Has value NO_DEF if no default exists. NULL can be a valid default. The value has no effect on ParamSet$values or the behavior of ParamSet$check(), $test() or $assert(). The default is intended to be used for documentation purposes. `

tags

(character())
Arbitrary tags to group and subset parameters. Some tags serve a special purpose:

  • "required" implies that the parameters has to be given when setting values in ParamSet.

requires

(call | expression)
An expression indicating a requirement for the parameter that will be constructed from this. Can be given as an expression (using quote()), or the expression can be entered directly and will be parsed using NSE (see examples). The expression may be of the form <Param> == <value> or <Param> %in% <values>, which will result in dependencies according to ParamSet$add_dep(on = "<Param>", cond = CondEqual$new(<value>)) or ParamSet$add_dep(on = "<Param>", cond = CondAnyOf$new(<values>)), respectively (see CondEqual, CondAnyOf). The expression may also contain multiple conditions separated by &&.

trafo

(function)
Single argument function performing the transformation of a parameter. When the Domain is used to construct a ParamSet, this transformation will be applied to the corresponding parameter as part of the $trafo function.

custom_check

(function())
Custom function to check the feasibility. Function which checks the input. Must return 'TRUE' if the input is valid and a character(1) with the error message otherwise. This function should not throw an error. Defaults to NULL, which means that no check is performed.

levels

(character | atomic | list)
Allowed categorical values of the parameter. If this is not a character, then a trafo is generated that converts the names (if not given: as.character() of the values) of the levels argument to the values. This trafo is then performed before the function given as the trafo argument.

Value

A Domain object.

Details

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.

See also

Other ParamSet construction helpers: ps(), to_tune()

Examples

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)
#> <ParamSet> #> id class lower upper levels default #> 1: unbounded_integer ParamInt -Inf Inf <NoDefault[3]> #> 2: bounded_double ParamDbl 0 10 <NoDefault[3]> #> 3: half_bounded_integer ParamDbl 1 Inf <NoDefault[3]> #> 4: half_bounded_double ParamDbl -Inf 1 <NoDefault[3]> #> 5: double_with_trafo ParamDbl -1 1 <NoDefault[3]> #> 6: extra_double ParamDbl 0 1 <NoDefault[3]> #> 7: factor_param ParamFct NA NA a,b,c <NoDefault[3]> #> 8: factor_param_with_implicit_trafo ParamFct NA NA a,b,c <NoDefault[3]> #> value #> 1: #> 2: #> 3: #> 4: #> 5: #> 6: #> 7: #> 8: #> Trafo is set.
params$trafo(list( bounded_double = 1, double_with_trafo = 1, factor_param = "c", factor_param_with_implicit_trafo = "c" ))
#> $bounded_double #> [1] 1 #> #> $double_with_trafo #> [1] 2.718282 #> #> $factor_param #> [1] "c" #> #> $factor_param_with_implicit_trafo #> list() #>