knitr::opts_chunk$set(echo = TRUE)
Kind of working skeletton!
set.seed(1) library(R6) library(checkmate) devtools::load_all()
Basic Problem Definition:
fun = function(x) sqrt(x) * sin(x) # Alpine 02 search_space = ParamSet$new(params = list(ParamDbl$new("x", 0, 10))) target_fun = TargetFun$new(fun, search_space) design = generate_design_lhs(search_space, 5) design = data.table(x = design$transpose()) design$y = target_fun$eval(design)
MBO Problem:
op = OptProblem$new( target_fun = target_fun, design = design, opt_iterator = OptIteratorBO$new(), opt_terminator = OptTerminatorSteps$new(5), surrogate_model = SurrogateModelGPfit$new(design = design), proposal_generator = ProposalGeneratorSingle$new( acq_optimizer = AcqOptimizerGenSA$new(control = list(maxit = 100)), acq_function = AcqFunctionCB$new(lambda = 2) ) ) res = bayopt(op) res$surrogate_model$design res$surrogate_model$predict(res$surrogate_model$design) plot(res$surrogate_model$storage$model) curve(fun(x*10), add = TRUE, col = "green") # GP_fit does some scaling
op = OptProblem$new( target_fun = target_fun, design = design, opt_iterator = OptIteratorBO$new(), opt_terminator = OptTerminatorSteps$new(5), surrogate_model = SurrogateModelGPfit$new(design = design), proposal_generator = ProposalGeneratorMultiCL$new( acq_optimizer = AcqOptimizerGenSA$new(control = list(maxit = 100)), acq_function = AcqFunctionCB$new(lambda = 2), n = 2, lie = "min" ) ) res = bayopt(op)
Combining multiple ProposalGeneratorSingle
to a Multipoint Proposal.
acq_optimizer = AcqOptimizerGenSA$new(control = list(maxit = 100)) proposal_generators = lapply(c(1, 2, 4), function(x) { ProposalGeneratorSingle$new( acq_optimizer = acq_optimizer, acq_function = AcqFunctionCB$new(lambda = x) ) }) op = OptProblem$new( target_fun = target_fun, design = design, opt_iterator = OptIteratorBO$new(), opt_terminator = OptTerminatorSteps$new(5), surrogate_model = SurrogateModelGPfit$new(design = design), proposal_generator = ProposalGeneratorMultiEnsemble$new( proposal_generator_singles = proposal_generators ) ) res = bayopt(op)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.