Acquisition Function Expected Hypervolume Improvement
Source:R/AcqFunctionEHVI.R
mlr_acqfunctions_ehvi.Rd
Exact Expected Hypervolume Improvement. Calculates the exact expected hypervolume improvement in the case of two objectives. In the case of optimizing more than two objective functions, AcqFunctionEHVIGH can be used. See Emmerich et al. (2016) for details.
References
Emmerich, Michael, Yang, Kaifeng, Deutz, André, Wang, Hao, Fonseca, M. C (2016). “A Multicriteria Generalization of Bayesian Global Optimization.” In Pardalos, M. P, Zhigljavsky, Anatoly, Žilinskas, Julius (eds.), Advances in Stochastic and Deterministic Global Optimization, 229–242. Springer International Publishing, Cham.
Super classes
bbotk::Objective
-> mlr3mbo::AcqFunction
-> AcqFunctionEHVI
Public fields
ys_front
(
matrix()
)
Approximated Pareto front. Sorted by the first objective. 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.ys_front_augmented
(
matrix()
)
Augmented approximated Pareto front. Sorted by the first objective. Signs are corrected with respect to assuming minimization of objectives.
Methods
Method new()
Creates a new instance of this R6 class.
Usage
AcqFunctionEHVI$new(surrogate = NULL)
Arguments
surrogate
(
NULL
| SurrogateLearnerCollection).
Method update()
Update the acquisition function and set ys_front
and ref_point
.
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("ehvi", surrogate = surrogate)
acq_function$surrogate$update()
acq_function$update()
acq_function$eval_dt(data.table(x = c(-1, 0, 1)))
}
#> acq_ehvi
#> <num>
#> 1: 206.4260
#> 2: 264.3261
#> 3: 376.3486