Skip to contents

S-Metric Selection Evolutionary Multi-Objective Optimization Algorithm Acquisition Function.

Parameters

  • "lambda" (numeric(1))
    \(\lambda\) value used for the confidence bound. Defaults to 1. Based on confidence = (1 - 2 * dnorm(lambda)) ^ m you can calculate a lambda for a given confidence level, see Ponweiser et al. (2008).

  • "epsilon" (numeric(1))
    \(\epsilon\) used for the additive epsilon dominance. Can either be a single numeric value > 0 or NULL (default). In the case of being NULL, an epsilon vector is maintained dynamically as described in Horn et al. (2015).

Note

References

  • Ponweiser, Wolfgang, Wagner, Tobias, Biermann, Dirk, Vincze, Markus (2008). “Multiobjective Optimization on a Limited Budget of Evaluations Using Model-Assisted S-Metric Selection.” In Proceedings of the 10th International Conference on Parallel Problem Solving from Nature, 784–794.

  • Horn, Daniel, Wagner, Tobias, Biermann, Dirk, Weihs, Claus, Bischl, Bernd (2015). “Model-Based Multi-objective Optimization: Taxonomy, Multi-Point Proposal, Toolbox and Benchmark.” In International Conference on Evolutionary Multi-Criterion Optimization, 64–78.

Super classes

bbotk::Objective -> mlr3mbo::AcqFunction -> AcqFunctionSmsEgo

Public fields

ys_front

(matrix())
Approximated Pareto front. Signs are corrected with respect to assuming minimization of objectives.

ref_point

(numeric())
Reference point. Signs are corrected with respect to assuming minimization of objectives.

epsilon

(numeric())
Epsilon used for the additive epsilon dominance.

progress

(numeric(1))
Optimization progress (typically, the number of function evaluations left). Note that this requires the bbotk::OptimInstanceBatch to be terminated via a bbotk::TerminatorEvals.

Methods

Inherited methods


Method new()

Creates a new instance of this R6 class.

Usage

AcqFunctionSmsEgo$new(surrogate = NULL, lambda = 1, epsilon = NULL)

Arguments

surrogate

(NULL | SurrogateLearnerCollection).

lambda

(numeric(1)).

epsilon

(NULL | numeric(1)).


Method update()

Update the acquisition function and set ys_front, ref_point and epsilon.

Usage

AcqFunctionSmsEgo$update()


Method reset()

Reset the acquisition function. Resets epsilon.

Usage

AcqFunctionSmsEgo$reset()


Method clone()

The objects of this class are cloneable with this method.

Usage

AcqFunctionSmsEgo$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

if (requireNamespace("mlr3learners") &
    requireNamespace("DiceKriging") &
    requireNamespace("rgenoud")) {
  library(bbotk)
  library(paradox)
  library(mlr3learners)
  library(data.table)

  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))

  instance$eval_batch(data.table(x = c(-6, -5, 3, 9)))

  learner = default_gp()

  surrogate = srlrn(list(learner, learner$clone(deep = TRUE)), archive = instance$archive)

  acq_function = acqf("smsego", surrogate = surrogate)

  acq_function$surrogate$update()
  acq_function$progress = 5 - 4 # n_evals = 5 and 4 points already evaluated
  acq_function$update()
  acq_function$eval_dt(data.table(x = c(-1, 0, 1)))
}
#>    acq_smsego acq_epsilon
#>         <num>      <list>
#> 1:  -581.3330         0,0
#> 2:  -730.5685         0,0
#> 3: -1132.3435         0,0