Spread metrics
Γ and Δ measure how well a front of $N$ points spreads between extreme values that are the same for all solvers [2] (Section 5.3.3). The extremes come from the reference front R, the non-dominated points of all solvers: for each objective $j$, $f_{0,j} = \min_{y \in R} y_j$ (ideal) and $f_{N+1,j} = \max_{y \in R} y_j$ (nadir). Let $f_{1,j} \le \dots \le f_{N,j}$ be the sorted values of objective $j$ in the front and $\delta_{i,j} = f_{i+1,j} - f_{i,j}$, $i = 0, \dots, N$.
Γ-spread
The largest gap, eq. (5.1) of [2]:
\[\Gamma = \max_{j \in \{1,\dots,m\}} \ \max_{i \in \{0,\dots,N\}} \delta_{i,j}.\]
For two objectives this is the largest distance, in the infinity norm, between consecutive points, counting the extremes.
Δ-spread
The extension to $m$ objectives, eq. (5.2) of [2], of the Δ of [3]:
\[\Delta = \max_{j \in \{1,\dots,m\}} \frac{\delta_{0,j} + \delta_{N,j} + \sum_{i=1}^{N-1} |\delta_{i,j} - \bar\delta_j|} {\delta_{0,j} + \delta_{N,j} + (N-1)\,\bar\delta_j}, \qquad \bar\delta_j = \frac{1}{N-1}\sum_{i=1}^{N-1} \delta_{i,j}.\]
The original Δ of [3] is defined for two objectives with Euclidean distances between consecutive points and extremes of the true front; [2] uses per-objective differences and extremes from the merged fronts, which extends it to any $m$.
Both are lower-is-better. Δ is zero for equally spaced points that reach both extremes. See Conventions for single points, degenerate objectives and points outside the extremes.
julia> using MultiObjectiveMetrics
julia> R = [[0.0, 1.0], [0.5, 0.5], [1.0, 0.0]];
julia> A = [[0.0, 1.0], [0.25, 0.75], [1.0, 0.0]];
julia> gamma_spread(A, R), delta_spread(A, R)
(0.75, 0.5)MultiObjectiveMetrics.gamma_spread — Function
gamma_spread(A, R; tol = Tolerance())
gamma_spread(A, ideal, nadir; tol = Tolerance())Γ-spread of the front A [2] (eq. 5.1): the largest gap between consecutive values of any objective, with the extreme values ideal[j] and nadir[j] added at both ends,
Γ = max_j max_{i = 0,…,N} (f_{i+1,j} - f_{i,j}),where f_{1,j} ≤ … ≤ f_{N,j} are the sorted values of objective j in A, f_{0,j} = ideal[j] and f_{N+1,j} = nadir[j]. With a reference front R, ideal = ideal_point(R) and nadir = nadir_point(R). Lower is better.
Conventions (see Conventions):
- values of
Aoutside[ideal[j], nadir[j]]are clipped to that interval; - an objective with
ideal[j] ≈ nadir[j](undertol) is skipped; NaNifAis empty or every objective is skipped;InfifAhas one point.
A is used as given: pass the non-dominated front of the solver. Repeated points are not removed.
Examples
julia> R = [[0.0, 1.0], [0.5, 0.5], [1.0, 0.0]];
julia> gamma_spread(R, R)
0.5
julia> gamma_spread([[0.0, 1.0], [1.0, 0.0]], R)
1.0MultiObjectiveMetrics.delta_spread — Function
delta_spread(A, R; tol = Tolerance())
delta_spread(A, ideal, nadir; tol = Tolerance())Δ-spread of the front A [2] (eq. 5.2), the extension to m objectives of the Δ of [3]:
Δ = max_j (δ_{0,j} + δ_{N,j} + Σ_{i=1}^{N-1} |δ_{i,j} - δ̄_j|) / (δ_{0,j} + δ_{N,j} + (N - 1) δ̄_j),with δ_{i,j} = f_{i+1,j} - f_{i,j} as in gamma_spread and δ̄_j the mean of δ_{i,j}, i = 1, …, N-1. Lower is better; Δ = 0 for equally spaced points that reach both extremes.
Conventions (see Conventions): the same as gamma_spread. An objective in which all points of A coincide gives Δ_j = 1.
Examples
julia> R = [[0.0, 1.0], [0.5, 0.5], [1.0, 0.0]];
julia> delta_spread(R, R)
0.0
julia> delta_spread([[0.0, 1.0], [0.25, 0.75], [1.0, 0.0]], R)
0.5