Takes a matrix
of fitness values and calculates the hypervolume improvement of individuals in that matrix
, one by one,
over the baseline
individuals.
The hypervolume improvement for each point 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.
Individuals in fitnesses
are considered independently of each other. A possible speedup is achieved because
baseline
individuals only need to be pre-filtered once.
domhv_improvement(fitnesses, baseline = NULL, nadir = 0)
(numeric matrix
)
fitness matrix, with one row per individual and one column per objective
(matrix
| NULL
)
Fitness-matrix with one column per objective, giving a population over which the hypervolume improvement should be calculated.
If NULL
, the hypervolume of each individual in fitnesses
is calculated.
(numeric
)
Lowest fitness point up to which to calculate dominated hypervolume. May be a scalar, in which case
it is used for all dimensions, or a vector, in which case its length must match the number of dimensions.
Default 0.
numeric
: The vector of dominated hypervolume contributions for each individual in fitnesses
.
(fitnesses = matrix(c(1, 5, 2, 3, 0, 3, 1, 0, 10, 8), ncol = 2))
#> [,1] [,2]
#> [1,] 1 3
#> [2,] 5 1
#> [3,] 2 0
#> [4,] 3 10
#> [5,] 0 8
# to see the fitness matrix, use:
## plot(fitnesses, pch = as.character(1:5))
domhv_improvement(fitnesses)
#> [1] 3 5 0 30 0
domhv_improvement(fitnesses, fitnesses[1, , drop = FALSE])
#> [1] 0 4 0 27 0