Skip to main content

hypervolume_contribution

Function hypervolume_contribution 

Source
pub fn hypervolume_contribution(
    front: &[Vec<f64>],
    reference_point: &[f64],
    mc_samples: usize,
    seed: u64,
) -> Vec<f64>
Expand description

Hypervolume contribution of each point in a Pareto front.

The exclusive hypervolume contribution (HVC) of a point p is the reduction in total hypervolume when p is removed:

HVC(p) = HV(front) - HV(front \ {p})

Solutions with larger HVC are more critical for the overall coverage.

§Arguments

  • front - Non-dominated objective vectors.
  • reference_point - Upper bound (all objectives < reference for contribution > 0).
  • mc_samples - Monte Carlo samples for N-D hypervolume (≥ 3 objectives).
  • seed - RNG seed for Monte Carlo reproducibility.

§Returns

Vector of contribution values, one per front point. Uses exact sweep for 2-D, Monte Carlo for higher dimensions.

§Examples

use scirs2_optimize::multiobjective::indicators::hypervolume_contribution;
let front = vec![vec![0.0,1.0], vec![0.5,0.5], vec![1.0,0.0]];
let hvc = hypervolume_contribution(&front, &[2.0,2.0], 10_000, 42);
assert_eq!(hvc.len(), 3);
for v in &hvc { assert!(*v >= 0.0); }