Approximation of the (weighted) hypervolume by Monte-Carlo sampling (2D only)
Source:R/whv.R
whv_hype.Rd
Return an estimation of the hypervolume of the space dominated by the input data following the procedure described by Auger et al. (2009) . A weight distribution describing user preferences may be specified.
Usage
whv_hype(
data,
reference,
ideal,
maximise = FALSE,
dist = list(type = "uniform"),
nsamples = 100000L
)
Arguments
- data
(
matrix
|data.frame
)
Matrix or data frame of numerical values, where each row gives the coordinates of a point.- reference
(
numeric()
)
Reference point as a vector of numerical values.- ideal
(
numeric()
)
Ideal point as a vector of numerical values.- maximise
(
logical()
|logical(1)
)
Whether the objectives must be maximised instead of minimised. Either a single logical value that applies to all objectives or a vector of logical values, with one value per objective.- dist
(
list()
) weight distribution. See Details.- nsamples
(
integer(1)
) number of samples for Monte-Carlo sampling.
Details
The current implementation only supports 2 objectives.
A weight distribution (Auger et al. 2009)
can be provided via the dist
argument. The ones currently supported are:
type="uniform"
corresponds to the default hypervolume (unweighted).type="point"
describes a goal in the objective space, wheremu
gives the coordinates of the goal. The resulting weight distribution is a multivariate normal distribution centred at the goal.type="exponential"
describes an exponential distribution with rate parameter1/mu
, i.e., \(\lambda = \frac{1}{\mu}\).
References
Anne Auger, Johannes Bader, Dimo Brockhoff, Eckart Zitzler (2009). “Articulating User Preferences in Many-Objective Problems by Sampling the Weighted Hypervolume.” In Franz Rothlauf (ed.), Proceedings of the Genetic and Evolutionary Computation Conference, GECCO 2009, 555–562. ACM Press, New York, NY.
Examples
whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1)
#> [1] 3.99231
whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1)
#> [1] 2.99268
whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1,
dist = list(type="exponential", mu=0.2))
#> [1] 1.12887
whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1,
dist = list(type="exponential", mu=0.2))
#> [1] 1.6632
whv_hype (matrix(2, ncol=2), reference = 4, ideal = 1,
dist = list(type="point", mu=c(1,1)))
#> [1] 0.8289
whv_hype (matrix(c(3,1), ncol=2), reference = 4, ideal = 1,
dist = list(type="point", mu=c(1,1)))
#> [1] 0.03429