S-Metric Selection Evolutionary Multi-Objective Optimization Algorithm Acquisition Function.
Parameters
"lambda"
(numeric(1)
)
\(\lambda\) value used for the confidence bound. Defaults to1
. Based onconfidence = (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 orNULL
(default). In the case of beingNULL
, an epsilon vector is maintained dynamically as described in Horn et al. (2015).
Note
This acquisition function always also returns its current epsilon values in a list column (
acq_epsilon
). These values will be logged into the bbotk::ArchiveBatch of the bbotk::OptimInstanceBatch of the AcqOptimizer and therefore also in the bbotk::Archive of the actual bbotk::OptimInstance that is to be optimized.
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.
See also
Other Acquisition Function:
AcqFunction
,
mlr_acqfunctions
,
mlr_acqfunctions_aei
,
mlr_acqfunctions_cb
,
mlr_acqfunctions_ehvi
,
mlr_acqfunctions_ehvigh
,
mlr_acqfunctions_ei
,
mlr_acqfunctions_eips
,
mlr_acqfunctions_mean
,
mlr_acqfunctions_multi
,
mlr_acqfunctions_pi
,
mlr_acqfunctions_sd
,
mlr_acqfunctions_stochastic_cb
,
mlr_acqfunctions_stochastic_ei
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
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
.
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