Pareto frontier graphic via python

Pareto frontiers are not strictly dominated by any others. An element is dominated if there exists an other element in the set of elements having a better score on one criterion and at least the same score on the others. Here a little example Python Pareto frontier code.

import matplotlib.pyplot as plt

def plot_pareto_frontier(Xs, Ys, maxX=True, maxY=True):
'''Pareto frontier selection process'''
sorted_list = sorted([[Xs[i], Ys[i]] for i in range(len(Xs))], reverse=maxY)
pareto_front = [sorted_list[0]]
for pair in sorted_list[1:]:
if maxY:
if pair[1] >= pareto_front[-1][1]:
pareto_front.append(pair)
else:
if pair[1] <= pareto_front[-1][1]:
pareto_front.append(pair)

'''Plotting process'''
plt.scatter(Xs,Ys)
pf_X = [pair[0] for pair in pareto_front]
pf_Y = [pair[1] for pair in pareto_front]
plt.plot(pf_X, pf_Y)
plt.xlabel("Objective 1")
plt.ylabel("Objective 2")
plt.show()

An example Pareto frontier graphic is produced by above python function.

Reference 1. http://code.activestate.com/recipes/578230-pareto-front/

Advertisements