Skip to main content

igd_plus

Function igd_plus 

Source
pub fn igd_plus(true_front: &[Vec<f64>], approx_front: &[Vec<f64>]) -> f64
Expand description

Inverted Generational Distance Plus (IGD+).

IGD+ is a Pareto-compliant variant of IGD. It uses a modified distance d+(p, q) = sqrt(Σ_i max(q_i - p_i, 0)²) that only penalises objectives where the approximation point q is worse (larger) than the true point p.

For each point p ∈ true_front: IGD+(p, A) = min_{q ∈ A} d+(p, q)

IGD+ = (1/|true_front|) Σ_{p ∈ true_front} IGD+(p, A)

§Returns

IGD+ ∈ [0, ∞). Returns f64::INFINITY if either input is empty. A value of 0 means the approximation set weakly dominates the entire true front.

§References

  • Ishibuchi et al. (2015). Evolutionary Computation, 26(3):411-440.

§Examples

use scirs2_optimize::multiobjective::indicators::igd_plus;
let tf = vec![vec![0.0,1.0], vec![1.0,0.0]];
let af = tf.clone();
assert!(igd_plus(&tf, &af) < 1e-10);