mlrMBO
mlrMBO copied to clipboard
"Human in the Loop MBO" with multipoint proposal method "moimbo" proposes non-integer values for integer parameters
ps = makeParamSet(
makeNumericParam("q", lower = -1, upper = 2),
makeIntegerParam("v", lower = -2, upper = 3)
)
des = generateDesign(n = 7, par.set = ps)
des$y = c(1.20, 0.97, 0.91, 3.15, 0.58, 1.12, 0.50)
ctrl = makeMBOControl(propose.points = 2)
ctrl = setMBOControlMultiPoint(ctrl, method = "moimbo")
opt.state = initSMBO(par.set = ps, design = des, control = ctrl, minimize = TRUE, noisy = FALSE)
proposition <- proposePoints(opt.state)
proposes points
> proposition$prop.points
q v
1 0.9227752 -1.015992
2 0.8010565 2.468416
even though "v"
is an integer parameter. This is not a problem when called through mbo()
because even though the proposed points are non-integers, mlrMBO:::evalProposedPoints.OptState
calls ParamHelpers::repairPoint()
; this should probably also be done in the HitL code path.
in the HitL code path
I don't get what you are referring to.
Maybe we could repair the points already in proposePoints()
?
However, rounding after proposal is generally a bad idea in MBO since we don't know whether the acq values are better for ceil
or floor
.
HitL == Human in the Loop