Compute the dominated hypervolume of the Pareto front contained in an OptimizationResult. Hypervolume is a standard quality indicator for multi-objective optimization: larger values indicate a front that simultaneously improves on more objectives.

hypervolume(object, ref = NULL, ref_buffer = 0.05)

# S4 method for class 'OptimizationResult'
hypervolume(object, ref = NULL, ref_buffer = 0.05)

Arguments

object

An OptimizationResult.

ref

Optional numeric reference point in the user-facing direction (same scale as the columns in solutions(object)). If NULL, defaults to the front's nadir shifted by ref_buffer.

ref_buffer

Fractional outward shift applied per objective when ref is auto-computed. Default 0.05.

Value

A single numeric value: the dominated hypervolume in minimization form. The reference point used is attached as attr(., "ref") (still in user-facing direction).

Details

Objective values are converted to a common minimization form using the directions stored in control$objective_directions (i.e. "maximize" objectives are negated). The reference point must therefore strictly dominate every point in minimization form. By default the nadir of the observed front is used and shifted outward by ref_buffer * range per objective so all points contribute non-zero volume.

Requires the suggested emoa package.

Methods (by class)

  • hypervolume(OptimizationResult): Hypervolume of the final Pareto front.

See also

hypervolume_history() for HV trajectory across NSGA generations.