pub fn igd_plus(true_front: &[Vec<f64>], approx_front: &[Vec<f64>]) -> f64Expand 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);