mlrMBO icon indicating copy to clipboard operation
mlrMBO copied to clipboard

"Human in the Loop MBO" with multipoint proposal method "moimbo" proposes non-integer values for integer parameters

Open mb706 opened this issue 4 years ago • 2 comments

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.

mb706 avatar Dec 19 '19 15:12 mb706

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.

jakob-r avatar Jan 09 '20 10:01 jakob-r

HitL == Human in the Loop

mb706 avatar Jan 12 '20 18:01 mb706