Skip to contents

Shrinks a paradox::ParamSet towards a point. Boundaries of numeric values are shrinked to an interval around the point of half of the previous length, while for discrete variables, a random (currently not chosen) level is dropped.

Note that for paradox::ParamLgls the value to be shrinked around is set as the default value instead of dropping a level. Also, a tag shrinked is added.

If the paradox::ParamSet has a trafo, x is expected to contain the transformed values.

Usage

shrink_ps(param_set, x, check.feasible = FALSE)

Arguments

param_set

(paradox::ParamSet)
The paradox::ParamSet to be shrinked.

x

(data.table::data.table)
data.table::data.table with one row containing the point to shrink around.

check.feasible

(logical(1))
Should feasibility of the parameters be checked? If feasibility is not checked, and invalid values are present, no shrinking will be done. Must be turned off in the case of the paradox::ParamSet having a trafo. Default is FALSE.

Examples

library(paradox)
library(data.table)
param_set = ParamSet$new(list(
  ParamDbl$new("x1", lower = 0, upper = 10),
  ParamInt$new("x2", lower = -10, upper = 10),
  ParamFct$new("x3", levels = c("a", "b", "c")),
  ParamLgl$new("x4"))
)
x = data.table(x1 = 5, x2 = 0, x3 = "b", x4 = FALSE)
shrink_ps(param_set, x = x)
#> <ParamSet>
#>    id    class lower upper nlevels        default value
#> 1: x1 ParamDbl   2.5   7.5     Inf <NoDefault[3]>      
#> 2: x2 ParamInt  -5.0   5.0      11 <NoDefault[3]>      
#> 3: x3 ParamFct    NA    NA       2 <NoDefault[3]>      
#> 4: x4 ParamLgl    NA    NA       2          FALSE