# The Porcupine Measure for Comparing the Performance of Multi-Objective Optimization Algorithms
## 6 \(M\)-Dimensional Attainment Surfaces
### Porcupine Measure (Naive Implementation)  
This section presents the naive implementation for the \(n\)-dimensional attainment-surface-based quantitative measurement named the porcupine measure. The naive implementation uses each of the \(n\)-dimensional values from each Pareto-optimal point to subdivide the attainment surface in each of the dimensions. Figure 11 depicts an example of the subdivision approach for each of the three dimensions, considering all intersection lines. Figure 12 depicts the attainment surface, in 3-dimensional space, with the subdivisions visible.  
Figure 11: Top, front, and side view of attainment surface with naive subdivisions. (**a**) Top. (**b**) Front. (**c**) Side.  
In addition to the calculation of the hyper-rectangles, the center point and intersection vector need to be calculated. The naive implementation of the porcupine measure is summarized in Algorithm 5. For a more detailed algorithm listing, please refer to Appendix A.  
Using the intersection lines generated by the above algorithm, two algorithms can now be compared using a nonparametric statistical test, such as the Mann-Whitney U test [9]. The porcupine measure is defined, similar to the weighted KC measure, as the weighted sum of the intersection lines where a statistically significant difference exists over the sum of all the weights (i.e., the percentage of the surface area of the attainment surface, as determined by the weights, where one algorithm statistically performs superior to another).  
```
1:Input: The found POF
2:Output: The porcupine attainment surface
3:for each of the objective space basis vectors, \(m_{c}\), do
4: Project the attainment surface parallel to the basis vector, \(m_{c}\), onto the orthogonal \((M-1)\)-dimensional subspace
5: Subdivide the projected attainment surface, in each dimension at every Pareto-optimal point's dimensional value, into hyper-rectangles
6:for each hyper-rectangle do
7: Let \(\vec{c}\) be the center point of the hyper-rectangle
8: Let \(w\) be the weight of the hyper-rectangle, equal to the product of the hyper-rectangle's edge lengths
9:for each dimension in objective space \(m\in\{1,\ldots,M\}\)do
10: 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
11: Let \(\max_{m}\) be the largest of the \(m\)th-dimensional values of all the Pareto-optimal points
12:endfor
13: 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}\), corresponding to the \(m\)th objective function
14: drawIntersectionLineWithWeight (from \(=\mathbf{c}-\mathbf{p}\), to \(=\mathbf{c}+\mathbf{p}\), weight \(=w\))
15:endfor
16:endfor
```  
**Algorithm 5** Porcupine measure (naive implementation).  
Figure 12: A 3-dimensional attainment surface with naive subdivisions.  
Figure 13 depicts an attainment surface with subdivisions and intersection vectors generated using the naive approach. The porcupine measure's name is derived from the fact that the intersection vectors resembles the spikes of a porcupine.