# The Porcupine Measure for Comparing the Performance of Multi-Objective Optimization Algorithms
## 6 \(M\)-Dimensional Attainment Surfaces
### Stability Analysis
```
1:Input: The found POP
2:Output: The porcupine attainment surface
3: Let \(\vec{q}_{\max}\) be the _nadir_ vector defined as \((\max\left\{q_{s1}\right\},\max\left\{q_{s2}\right\},\ldots,\max\left\{q_{sM} \right\})\) for each of the known Pareto-optimal points, \(\vec{q}_{s}\), of dimension \(M\)
4:for each of the objective space basis vectors, \(m_{c}\), do
5: Project the attainment surface parallel to the basis vector, \(m_{c}\), onto the orthogonal \((M-1)\)-dimensional subspace
6:for each of the Pareto-optimal points, \(\vec{q}_{s}\)do,
7: Let \(\vec{q}\) be the vector with dimensional values set to the minimum dimensional values that are dominated or the corresponding \(q_{\max}\) value if no minimum exists
8: Let \(\vec{Q}\) be the set of all points that dominate \(\vec{q}\) but not \(\vec{q}_{s}\), filtered for non-dominance
9:for each dimension \(m\)do,
10: Let \(Q_{m}\) be the set of all the \(m\)'th dimensional values of the points in \(\vec{Q}\) that fall inside the range \([q_{sm},\hat{q}_{m}]\)
11:endfor
12: Let \(Q_{min}\) be the set of all the minimum points that will affect the calculation of \(\vec{p}\)
13: Let \(Q_{max}\) be the set of all the maximum points that will affect the calculation of \(\vec{p}\)
14: Add all dimensional values of the points in \(Q_{\min}\) and \(Q_{\max}\) that fall inside the range \([q_{sm},\hat{q}_{m}]\) to the corresponding \(Q_{m}\) set
15: Add additional values to the \(Q_{m}\) sets to limit the side lengths to \(\Delta_{\max}\)
16: Subdivide the projected attainment surface in each of the \(m\) dimensions at every value in the \(Q_{m}\) set into hyper-rectangles
17:for each hyper-rectangle do,
18: Let \(\vec{c}\) be the center point of the hyper-rectangle
19: Let \(w\) be the weight of the hyper-rectangle, equal to the product of the hyper-rectangle's edge lengths
20:for each dimension \(m\)do
21: Let \(\min_{m}\) be the smallest of the \(m\)th-dimensional values of all the Pareto-optimal points where at least one other dimensional value is less than or equal to that of the corresponding center vector's dimensional value
22: Let \(\max_{m}\) is the largest of the \(m\)th-dimensional values of all the Pareto-optimal points
23:endfor
24: Let \(\vec{p}\) be the intersection vector, calculated as \(p_{m}=\frac{c_{m}-\min_{m}}{\max_{m}-\min_{m}}\), where \(p_{m}\) is the \(m\)th component of the vector \(\vec{p}\)
25: drawIntersectionLineWithWeight (from \(\mathbf{=c-p}\), to \(\mathbf{=c+p}\), weight \(\mathbf{=}\)\(w\))
26:endfor
27:endfor
```  
**Algorithm 6** Porcupine measure (optimized implementation). The mean standard deviation was 2.743, and the maximum standard deviation was 7.022. The conclusion that can be drawn from the data is that the optimized implementation of the porcupine measure is very robust because measurement values for each of the samples were close to the average. For the experimentation that was carried out for this study, the runtime of the optimized implementation was notably faster than that of the naive implementation. A difference on the orders of a few magnitudes was noticeable. The computational complexity of the naive implementation is directly proportional to the size of the \(Q_{m}\) sets. It should be noted that, for the tested algorithms with an approximated POF size of 50 points tested over 30 independent samples, the optimal POF had a typical size of 1250 points. The size of the \(Q_{m}\) sets were thus approximately 1250 points. For three dimensions, this resulted in a minimum computational complexity of at least 12503, or rather 1,953,125,000 (almost two billion). The optimized implementation resulted in much-reduced computational complexity because only the necessary subdivisions were made. The size of the \(Q_{m}\) sets were much smaller. For the three-dimensional case, the maximum edge length leads to a minimum complexity of at least \((\frac{1}{0.1})^{3}\), or rather 1000 times lower than that of the naive version.