Generally, I would also recommend using pymoo [1] if you have multi-objective optimization problems. They also have an implementation of Non-dominated Sorting [2], which should serve the same purpose.<p>[1]: <a href="https://pymoo.org/" rel="nofollow">https://pymoo.org/</a><p>[2]: <a href="https://github.com/msu-coinlab/pymoo/blob/master/pymoo/util/nds/fast_non_dominated_sort.py" rel="nofollow">https://github.com/msu-coinlab/pymoo/blob/master/pymoo/util/...</a>
For low dimensions, it might be useful to look at the convex properties of the Pareto front. If a point P is on Pareto front, it is not in the interior of the convex hull of undominated points. In two dimensions, one can compute the convex hull of N points in O(N log N) time. This typically allows for faster Pareto front computation, but not in the worst case.