Skip to main content

hypervolume_indicator

Function hypervolume_indicator 

Source
pub fn hypervolume_indicator(front: &[Vec<f64>], reference: &[f64]) -> f64
Expand description

Compute the exact hypervolume indicator using the WFG algorithm.

Calculates the volume of objective space dominated by front and bounded by reference. Works for any number of objectives ≥ 1.

For 2-D problems the call delegates to the exact O(N log N) sweep. For higher dimensions the recursive WFG slicing algorithm is used, which has worst-case complexity O(N^(M-1) log N) where M is the number of objectives.

§Arguments

  • front - Objective vectors (each of equal length M). May contain points that do not strictly dominate the reference; these are filtered.
  • reference - Reference point of length M; should dominate all front points to get a non-zero result.

§Returns

The exact hypervolume value ≥ 0.

§Examples

use scirs2_optimize::multiobjective::pareto::hypervolume_indicator;
// 3-D: single point (1,1,1) with reference (2,2,2) => volume = 1
let front = vec![vec![1.0_f64, 1.0, 1.0]];
let hv = hypervolume_indicator(&front, &[2.0, 2.0, 2.0]);
assert!((hv - 1.0).abs() < 1e-10);