Skip to contents

Compute the hypervolume metric with respect to a given reference point assuming minimization of all objectives. For 2D and 3D, the algorithm used FonPaqLop06:hypervolume,BeuFonLopPaqVah09:tec has \(O(n \log n)\) complexity. For 4D or higher, it uses a recursive algorithm that has the 3D algorithm as a base case algorithm FonPaqLop06:hypervolume, which has \(O(n^{d-2} \log n)\) time and linear space complexity in the worst-case, but experimental results show that the pruning techniques used may reduce the time complexity even further. Andreia P. Guerreiro improved the integration of the 3D case with the recursive algorithm, which leads to significant reduction of computation time. She has also enhanced the numerical stability of the algorithm by avoiding floating-point comparisons of partial hypervolumes.

Usage

hypervolume(x, reference, maximise = FALSE)

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.

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.

Value

numeric(1)
A single numerical value.

References

Author

Manuel López-Ibáñez

Examples


data(SPEA2minstoptimeRichmond)
# The second objective must be maximized
# We calculate the hypervolume of the union of all sets.
hypervolume(SPEA2minstoptimeRichmond[, 1:2], reference = c(250, 0),
            maximise = c(FALSE, TRUE))
#> [1] 7911376