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.

Configuration Parameters

  • 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.

Supported Operand Types

Supported Param classes are: ParamLgl, ParamInt, ParamDbl, ParamFct

Dictionary

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:

# preferred:
scl("hypervolume")
scls("hypervolume")  # takes vector IDs, returns list of Scalors

# long form:
dict_scalors$get("hypervolume")

Super classes

miesmuschel::MiesOperator -> miesmuschel::Scalor -> ScalorHypervolume

Methods

Inherited methods


Method new()

Initialize the ScalorHypervolume object.

Usage


Method clone()

The objects of this class are cloneable with this method.

Usage

ScalorHypervolume$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

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