Pareto sınırını bulmam gereken bir 3B boşluğa sahip bir dizi noktam var. Burada icra etme hızı çok önemlidir ve test etmek için puan ekledikçe zaman çok hızlı artar.Python'daki Pareto önünün hızlı hesaplanması
noktaları kümesi aşağıdaki gibidir:
def dominates(row, candidateRow):
return sum([row[x] >= candidateRow[x] for x in range(len(row))]) == len(row)
def simple_cull(inputPoints, dominates):
paretoPoints = set()
candidateRowNr = 0
dominatedPoints = set()
while True:
candidateRow = inputPoints[candidateRowNr]
inputPoints.remove(candidateRow)
rowNr = 0
nonDominated = True
while len(inputPoints) != 0 and rowNr < len(inputPoints):
row = inputPoints[rowNr]
if dominates(candidateRow, row):
# If it is worse on all features remove the row from the array
inputPoints.remove(row)
dominatedPoints.add(tuple(row))
elif dominates(row, candidateRow):
nonDominated = False
dominatedPoints.add(tuple(candidateRow))
rowNr += 1
else:
rowNr += 1
if nonDominated:
# add the non-dominated point to the Pareto frontier
paretoPoints.add(tuple(candidateRow))
if len(inputPoints) == 0:
break
return paretoPoints, dominatedPoints
burada Bulunan: http://code.activestate.com/recipes/578287-multidimensional-pareto-front/
ulaşmanın en kısa yolu nedir, bu algoritmayı kullanıyorum Şu anda
[[0.3296170319979843, 0.0, 0.44472108843537406], [0.3296170319979843,0.0, 0.44472108843537406], [0.32920760896951373, 0.0, 0.4440408163265306], [0.32920760896951373, 0.0, 0.4440408163265306], [0.33815192743764166, 0.0, 0.44356462585034007]]
Bir çözüm grubu içinde dominant olmayan çözümler kümesi? Ya da kısaca Python bu algoritmadan daha iyisini yapabilir mi?
Vay canına, onu özledim, teşekkürler Peter! Maliyet dizisini aldığımdan emin değilim, kısa bir örnek verebilir misiniz? Teşekkür bir kez daha, bu harika görünüyor. – Rodolphe
Maliyet dizisi maliyet [i, j] j'th olduğu bir 2-d dizisidir i.th veri noktasının bedeli.FirmaPoints diziniz ile aynı olduğunu düşünüyorum. [testleri burada görebilirsiniz] (https://github.com/QUVA-Lab/artemis/blob/master/artemis/general/ kullanımını gösteren test_pareto_efficiency.py). – Peter