Pareto Front和Skyline排名-Python

时间:2018-08-23 09:46:11

标签: python python-3.x algorithm numpy optimization

我有以下Python代码计算特定二维向量列表的Pareto Front:

def pareto_frontier(Xs, Ys, maxX = True, maxY = True):
myList = sorted([[Xs[i], Ys[i]] for i in range(len(Xs))], reverse=maxX)
p_front = [myList[0]]    
for pair in myList[1:]:
    if maxY: 
        if pair[1] >= p_front[-1][1]:
            p_front.append(pair)
    else:
        if pair[1] <= p_front[-1][1]:
            p_front.append(pair)
p_frontX = [pair[0] for pair in p_front]
p_frontY = [pair[1] for pair in p_front]
return p_frontX, p_frontY

我的目标是将此功能转换为排名问题。我已经了解了天际线排名,并且希望将此排名算法应用于100个5维向量的列表(通过最小化所有变量)。由于这是向量的一小部分,因此我对效率并不真正感兴趣。作为参考,这些论文似乎提出了我期望的目标:

https://www.sciencedirect.com/science/article/pii/S0169023X10000480

http://cgi.di.uoa.gr/~gvalk/pubs/dp-idp.pdf

https://www.sciencedirect.com/science/article/pii/S0306437911000421

0 个答案:

没有答案