Scalor
that returns the hypervolume of each individual, relative to nadir
and as a contribution over baseline
.
The returned scalar value is the measure of all points that have fitnesses that are
greater than the respective value in nadir
in all dimensions, and
smaller than the respective value in the given point in all dimensions, and
greater than all points in baseline
in at least one dimension.
baseline
should probably be a paradox::ContextPV
and generate fitness values from the Archive
in the context using mies_get_fitnesses
.
scale_output
:: logical(1)
Whether to scale output to lie between 0 and 1.
nadir
:: numeric
Nadir of fitness values relative to which hypervolume ution is calculated.
baseline
:: matrix
Fitness-matrix with one column per objective, giving a population over which the hypervolume improvement should be calculated.
This Scalor
can be created with the short access form scl()
(scls()
to get a list), or through the the dictionary
dict_scalors
in the following way:
miesmuschel::MiesOperator
-> miesmuschel::Scalor
-> ScalorHypervolume
sv = scl("hypervolume")
p = ps(x = p_dbl(-5, 5))
# dummy data; note that ScalorHV does not depend on data content
data = data.frame(x = rep(0, 5))
fitnesses = matrix(c(1, 5, 2, 3, 0, 3, 1, 0, 10, 8), ncol = 2)
sv$param_set$values$baseline = matrix(c(1, 1), ncol = 2)
sv$param_set$values$nadir = c(0, -1)
sv$prime(p)
sv$operate(data, fitnesses)
#> [1] 2 8 1 31 0