| mlr_acqfunctions_ehvigh {mlr3mbo} | R Documentation | 
Acquisition Function Expected Hypervolume Improvement via Gauss-Hermite Quadrature
Description
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_datafield.
-  "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().
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 of- sqrt(2)and weights are normalized under a sum to one constraint.
Methods
Public methods
Inherited 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()
Updates acquisition function and sets ys_front, ref_point, hypervolume, gh_data.
Usage
AcqFunctionEHVIGH$update()
Method clone()
The objects of this class are cloneable with this method.
Usage
AcqFunctionEHVIGH$clone(deep = FALSE)
Arguments
- deep
- Whether to make a deep clone. 
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_pi,
mlr_acqfunctions_sd,
mlr_acqfunctions_smsego
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)))
}