| mlr_loop_functions_parego {mlr3mbo} | R Documentation | 
Multi-Objective Bayesian Optimization via ParEGO
Description
Loop function for multi-objective Bayesian Optimization via ParEGO. Normally used inside an OptimizerMbo.
In each iteration after the initial design, the observed objective function values are normalized and q candidates are
obtained by scalarizing these values via the augmented Tchebycheff function, updating the surrogate with respect to
these scalarized values and optimizing the acquisition function.
Usage
bayesopt_parego(
  instance,
  surrogate,
  acq_function,
  acq_optimizer,
  init_design_size = NULL,
  q = 1L,
  s = 100L,
  rho = 0.05,
  random_interleave_iter = 0L
)
Arguments
| instance | (bbotk::OptimInstanceBatchMultiCrit) | 
| surrogate | (SurrogateLearner) | 
| acq_function | (AcqFunction) | 
| acq_optimizer | (AcqOptimizer) | 
| init_design_size | ( | 
| q | ( | 
| s | ( | 
| rho | ( | 
| random_interleave_iter | ( | 
Value
invisible(instance)
The original instance is modified in-place and returned invisible.
Note
- The - acq_function$surrogate, even if already populated, will always be overwritten by the- surrogate.
- The - acq_optimizer$acq_function, even if already populated, will always be overwritten by- acq_function.
- The - surrogate$archive, even if already populated, will always be overwritten by the bbotk::Archive of the bbotk::OptimInstanceBatchMultiCrit.
- The scalarizations of the objective function values are stored as the - y_scalcolumn in the bbotk::Archive of the bbotk::OptimInstanceBatchMultiCrit.
- To make use of parallel evaluations in the case of 'q > 1, the objective function of the bbotk::OptimInstanceBatchMultiCrit must be implemented accordingly. 
References
- Knowles, Joshua (2006). “ParEGO: A Hybrid Algorithm With On-Line Landscape Approximation for Expensive Multiobjective Optimization Problems.” IEEE Transactions on Evolutionary Computation, 10(1), 50–66. 
See Also
Other Loop Function: 
loop_function,
mlr_loop_functions,
mlr_loop_functions_ego,
mlr_loop_functions_emo,
mlr_loop_functions_mpcl,
mlr_loop_functions_smsego
Examples
if (requireNamespace("mlr3learners") &
    requireNamespace("DiceKriging") &
    requireNamespace("rgenoud")) {
  library(bbotk)
  library(paradox)
  library(mlr3learners)
  fun = function(xs) {
    list(y1 = xs$x^2, y2 = (xs$x - 2) ^ 2)
  }
  domain = ps(x = p_dbl(lower = -10, upper = 10))
  codomain = ps(y1 = p_dbl(tags = "minimize"), y2 = p_dbl(tags = "minimize"))
  objective = ObjectiveRFun$new(fun = fun, domain = domain, codomain = codomain)
  instance = OptimInstanceBatchMultiCrit$new(
    objective = objective,
    terminator = trm("evals", n_evals = 5))
  surrogate = default_surrogate(instance, n_learner = 1)
  acq_function = acqf("ei")
  acq_optimizer = acqo(
    optimizer = opt("random_search", batch_size = 100),
    terminator = trm("evals", n_evals = 100))
  optimizer = opt("mbo",
    loop_function = bayesopt_parego,
    surrogate = surrogate,
    acq_function = acq_function,
    acq_optimizer = acq_optimizer)
  optimizer$optimize(instance)
}