Different scenarios of the usage of mlrMBO and visualizations.

Examples

##################################################### ### ### optimizing a simple sin(x) with mbo / EI ### #####################################################
# NOT RUN { library(ggplot2) library(mlrMBO) configureMlr(show.learner.output = FALSE) set.seed(1) obj.fun = makeSingleObjectiveFunction( name = "Sine", fn = function(x) sin(x), par.set = makeNumericParamSet(lower = 3, upper = 13, len = 1), global.opt.value = -1 ) ctrl = makeMBOControl(propose.points = 1) ctrl = setMBOControlTermination(ctrl, iters = 10L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritEI(), opt = "focussearch", opt.focussearch.points = 500L) lrn = makeMBOLearner(ctrl, obj.fun) design = generateDesign(6L, getParamSet(obj.fun), fun = lhs::maximinLHS) run = exampleRun(obj.fun, design = design, learner = lrn, control = ctrl, points.per.dim = 100, show.info = TRUE) plotExampleRun(run, densregion = TRUE, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing branin in 2D with mbo / EI ##### ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(1) configureMlr(show.learner.output = FALSE) obj.fun = makeBraninFunction() ctrl = makeMBOControl(propose.points = 1L) ctrl = setMBOControlTermination(ctrl, iters = 10L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritEI(), opt = "focussearch", opt.focussearch.points = 2000L) lrn = makeMBOLearner(ctrl, obj.fun) design = generateDesign(10L, getParamSet(obj.fun), fun = lhs::maximinLHS) run = exampleRun(obj.fun, design = design, learner = lrn, control = ctrl, points.per.dim = 50L, show.info = TRUE) print(run) plotExampleRun(run, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing a simple sin(x) with multipoint proposal ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(1) configureMlr(show.learner.output = FALSE) obj.fun = makeSingleObjectiveFunction( name = "Sine", fn = function(x) sin(x), par.set = makeNumericParamSet(lower = 3, upper = 13, len = 1L), global.opt.value = -1 ) ctrl = makeMBOControl(propose.points = 2L) ctrl = setMBOControlTermination(ctrl, iters = 10L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritMeanResponse()) ctrl = setMBOControlMultiPoint( ctrl, method = "moimbo", moimbo.objective = "ei.dist", moimbo.dist = "nearest.neighbor", moimbo.maxit = 200L ) lrn = makeMBOLearner(ctrl, obj.fun) design = generateDesign(4L, getParamSet(obj.fun), fun = lhs::maximinLHS) run = exampleRun(obj.fun, design = design, learner = lrn, control = ctrl, points.per.dim = 100, show.info = TRUE) print(run) plotExampleRun(run, densregion = TRUE, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing branin in 2D with multipoint proposal ##### ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(2) configureMlr(show.learner.output = FALSE) obj.fun = makeBraninFunction() ctrl = makeMBOControl(propose.points = 5L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritMeanResponse()) ctrl = setMBOControlTermination(ctrl, iters = 10L) ctrl = setMBOControlMultiPoint(ctrl, method = "moimbo", moimbo.objective = "ei.dist", moimbo.dist = "nearest.neighbor", moimbo.maxit = 200L ) lrn = makeLearner("regr.km", predict.type = "se") design = generateDesign(10L, getParamSet(obj.fun), fun = lhs::maximinLHS) run = exampleRun(obj.fun, design = design, learner = lrn, control = ctrl, points.per.dim = 50L, show.info = TRUE) print(run) plotExampleRun(run, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing a simple noisy sin(x) with mbo / EI ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(1) configureMlr(show.learner.output = FALSE) # function with noise obj.fun = makeSingleObjectiveFunction( name = "Some noisy function", fn = function(x) sin(x) + rnorm(1, 0, 0.1), par.set = makeNumericParamSet(lower = 3, upper = 13, len = 1L), noisy = TRUE, global.opt.value = -1, fn.mean = function(x) sin(x) ) ctrl = makeMBOControl( propose.points = 1L, final.method = "best.predicted", final.evals = 10L ) ctrl = setMBOControlTermination(ctrl, iters = 5L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritEI(), opt = "focussearch", opt.focussearch.points = 500L) lrn = makeMBOLearner(ctrl, obj.fun) design = generateDesign(6L, getParamSet(obj.fun), fun = lhs::maximinLHS) run = exampleRun(obj.fun, design = design, learner = lrn, control = ctrl, points.per.dim = 200L, noisy.evals = 50L, show.info = TRUE) print(run) plotExampleRun(run, densregion = TRUE, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing 1D fun with 3 categorical level and ### noisy outout with random forest ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(1) configureMlr(show.learner.output = FALSE) obj.fun = makeSingleObjectiveFunction( name = "Mixed decision space function", fn = function(x) { if (x$foo == "a") { return(5 + x$bar^2 + rnorm(1)) } else if (x$foo == "b") { return(4 + x$bar^2 + rnorm(1, sd = 0.5)) } else { return(3 + x$bar^2 + rnorm(1, sd = 1)) } }, par.set = makeParamSet( makeDiscreteParam("foo", values = letters[1:3]), makeNumericParam("bar", lower = -5, upper = 5) ), has.simple.signature = FALSE, # function expects a named list of parameter values noisy = TRUE ) ctrl = makeMBOControl() ctrl = setMBOControlTermination(ctrl, iters = 10L) # we can basically do an exhaustive search in 3 values ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritEI(), opt.restarts = 1L, opt.focussearch.points = 3L, opt.focussearch.maxit = 1L) design = generateDesign(20L, getParamSet(obj.fun), fun = lhs::maximinLHS) lrn = makeMBOLearner(ctrl, obj.fun) run = exampleRun(obj.fun, design = design, learner = lrn, control = ctrl, points.per.dim = 50L, show.info = TRUE) print(run) plotExampleRun(run, densregion = TRUE, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing mixed space function ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(1) configureMlr(show.learner.output = FALSE) obj.fun = makeSingleObjectiveFunction( name = "Mixed functions", fn = function(x) { if (x$cat == "a") x$num^2 else x$num^2 + 3 }, par.set = makeParamSet( makeDiscreteParam("cat", values = c("a", "b")), makeNumericParam("num", lower = -5, upper = 5) ), has.simple.signature = FALSE, global.opt.value = -1 ) ctrl = makeMBOControl(propose.points = 1L) ctrl = setMBOControlTermination(ctrl, iters = 10L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritEI(), opt = "focussearch", opt.focussearch.points = 500L) lrn = makeMBOLearner(ctrl, obj.fun) design = generateDesign(4L, getParamSet(obj.fun), fun = lhs::maximinLHS) run = exampleRun(obj.fun, design = design, learner = lrn, control = ctrl, points.per.dim = 100L, show.info = TRUE) print(run) plotExampleRun(run, densregion = TRUE, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing multi-objective function ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(1) configureMlr(show.learner.output = FALSE) obj.fun = makeZDT1Function(dimensions = 2L) ctrl = makeMBOControl(n.objectives = 2L, propose.points = 2L, save.on.disk.at = integer(0L)) ctrl = setMBOControlTermination(ctrl, iters = 5L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritDIB(), opt.focussearch.points = 10000L) ctrl = setMBOControlMultiObj(ctrl, parego.s = 100) learner = makeMBOLearner(ctrl, obj.fun) design = generateDesign(5L, getParamSet(obj.fun), fun = lhs::maximinLHS) run = exampleRunMultiObj(obj.fun, design = design, learner = learner, ctrl, points.per.dim = 50L, show.info = TRUE, nsga2.args = list()) plotExampleRun(run, gg.objects = list(theme_bw())) # }
##################################################### ### ### optimizing multi objective function and plots ### #####################################################
# NOT RUN { library(mlrMBO) library(ggplot2) set.seed(1) configureMlr(show.learner.output = FALSE) obj.fun = makeDTLZ1Function(dimensions = 5L, n.objectives = 2L) ctrl = makeMBOControl(n.objectives = 2L, propose.points = 2L) ctrl = setMBOControlTermination(ctrl, iters = 10L) ctrl = setMBOControlInfill(ctrl, crit = makeMBOInfillCritEI(), opt.focussearch.points = 1000L, opt.focussearch.maxit = 3L) ctrl = setMBOControlMultiObj(ctrl, method = "parego") lrn = makeMBOLearner(ctrl, obj.fun) design = generateDesign(8L, getParamSet(obj.fun), fun = lhs::maximinLHS) res = mbo(obj.fun, design = design, learner = lrn, control = ctrl, show.info = TRUE) plot(res) # }