Acquisition Function Expected Hypervolume Improvement via Gauss-Hermite Quadrature
Source:R/AcqFunctionEHVIGH.R
mlr_acqfunctions_ehvigh.Rd
Expected Hypervolume Improvement. Computed via Gauss-Hermite quadrature.
In the case of optimizing only two objective functions AcqFunctionEHVI is to be preferred.
Parameters
"k"
(integer(1)
)
Number of nodes per objective used for the numerical integration via Gauss-Hermite quadrature. Defaults to15
. For example, if two objectives are to be optimized, the total number of nodes will therefore be 225 per default. Changing this value after construction requires a call to$update()
to update the$gh_data
field."r"
(numeric(1)
)
Pruning rate between 0 and 1 that determines the fraction of nodes of the Gauss-Hermite quadrature rule that are ignored based on their weight value (the nodes with the lowest weights being ignored). Default is0.2
. Changing this value after construction does not require a call to$update()
.
References
Rahat, Alma, Chugh, Tinkle, Fieldsend, Jonathan, Allmendinger, Richard, Miettinen, Kaisa (2022). “Efficient Approximation of Expected Hypervolume Improvement using Gauss-Hermit Quadrature.” In Rudolph, Günter, Kononova, V. A, Aguirre, Hernán, Kerschke, Pascal, Ochoa, Gabriela, Tušar, Tea (eds.), Parallel Problem Solving from Nature – PPSN XVII, 90–103.
See also
Other Acquisition Function:
AcqFunction
,
mlr_acqfunctions
,
mlr_acqfunctions_aei
,
mlr_acqfunctions_cb
,
mlr_acqfunctions_ehvi
,
mlr_acqfunctions_ei
,
mlr_acqfunctions_eips
,
mlr_acqfunctions_mean
,
mlr_acqfunctions_multi
,
mlr_acqfunctions_pi
,
mlr_acqfunctions_sd
,
mlr_acqfunctions_smsego
,
mlr_acqfunctions_stochastic_cb
,
mlr_acqfunctions_stochastic_ei
Super classes
bbotk::Objective
-> mlr3mbo::AcqFunction
-> AcqFunctionEHVIGH
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.hypervolume
(
numeric(1)
). Current hypervolume of the approximated Pareto front with respect to the reference point.gh_data
(
matrix()
)
Data required for the Gauss-Hermite quadrature rule in the form of a matrix of dimension (k x 2). Each row corresponds to one Gauss-Hermite node (column"x"
) and corresponding weight (column"w"
). Computed via fastGHQuad::gaussHermiteData. Nodes are scaled by a factor ofsqrt(2)
and weights are normalized under a sum to one constraint.
Methods
Method new()
Creates a new instance of this R6 class.
Usage
AcqFunctionEHVIGH$new(surrogate = NULL, k = 15L, r = 0.2)
Arguments
surrogate
(
NULL
| SurrogateLearnerCollection).k
(
integer(1)
).r
(
numeric(1)
).
Method update()
Update the acquisition function and set ys_front
, ref_point
, hypervolume
and gh_data
.
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("ehvigh", surrogate = surrogate)
acq_function$surrogate$update()
acq_function$update()
acq_function$eval_dt(data.table(x = c(-1, 0, 1)))
}
#> acq_ehvigh
#> <num>
#> 1: 136.3082
#> 2: 152.4999
#> 3: 166.7487