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 AugBadBroZit2009gecco. A weight distribution describing user preferences may be specified.
Usage
whv_hype(
x,
reference,
ideal,
maximise = FALSE,
dist = "uniform",
nsamples = 100000L,
seed = NULL,
mu = NULL
)
Arguments
- x
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()
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
character(1)
weight distribution type. See Details.- nsamples
integer(1)
number of samples for Monte-Carlo sampling.- seed
integer(1)
random seed.- mu
numeric()
parameter of the weight distribution. See Details.
Details
The current implementation only supports 2 objectives.
A weight distribution AugBadBroZit2009gecco can be provided via the dist
argument. The ones currently supported are:
"uniform"
corresponds to the default hypervolume (unweighted)."point"
describes a goal in the objective space, where the parametermu
gives the coordinates of the goal. The resulting weight distribution is a multivariate normal distribution centred at the goal."exponential"
describes an exponential distribution with rate parameter1/mu
, i.e., \(\lambda = \frac{1}{\mu}\).
Examples
whv_hype(matrix(2, ncol=2), reference = 4, ideal = 1, seed = 42)
#> [1] 3.99807
whv_hype(matrix(c(3,1), ncol=2), reference = 4, ideal = 1, seed = 42)
#> [1] 3.00555
whv_hype(matrix(2, ncol=2), reference = 4, ideal = 1, seed = 42,
dist = "exponential", mu=0.2)
#> [1] 1.14624
whv_hype(matrix(c(3,1), ncol=2), reference = 4, ideal = 1, seed = 42,
dist = "exponential", mu=0.2)
#> [1] 1.66815
whv_hype(matrix(2, ncol=2), reference = 4, ideal = 1, seed = 42,
dist = "point", mu=c(2.9,0.9))
#> [1] 0.64485
whv_hype(matrix(c(3,1), ncol=2), reference = 4, ideal = 1, seed = 42,
dist = "point", mu=c(2.9,0.9))
#> [1] 4.03632