Bir noktanın mesafesini (4 boyutta, sadece 2 gösterilmektedir) (şekildeki herhangi bir renkli haç) sözde bir Pareto sınırına (siyah çizgi) bulmaya çalışıyorum. Bu çizgi, bir optimizasyon işlemi sırasında en iyi Pareto sınır temsilini temsil eder. Ben siyah çizginin her noktasına mesafeyi hesaplamak veDüzeltilmiş çizgiye olan uzaklığı hesaplayın
def dominates(row, rowCandidate):
return all(r >= rc for r, rc in zip(row, rowCandidate))
def dist2Pareto(pareto,candidate):
listDist = []
dominateN = 0
dominatePoss = 0
if len(pareto) >= 2:
for i in pareto:
if i != candidate:
dominatePoss += 1
dominate = dominates(candidate,i)
if dominate == True:
dominateN += 1
listDist.append(np.linalg.norm(np.array(i)-np.array(candidate)))
listDist.sort()
if dominateN == len(pareto):
print "beyond"
return listDist[0]
else:
return listDist[0]
(kısa mesafeyi almak:
Pareto = [[0.3875575798354123, -2.4122340425531914], [0.37707675586149786, -2.398936170212766], [0.38176077842761763, -2.4069148936170213], [0.4080534133844003, -2.4914285714285715], [0.35963459448268725, -2.3631532329495126], [0.34395217638838566, -2.3579931972789114], [0.32203302106516224, -2.344858156028369], [0.36742404637441123, -2.3886054421768708], [0.40461156254852226, -2.4141156462585034], [0.36387868122767975, -2.375], [0.3393199109776927, -2.348404255319149]]
Şu anda, böyle Pareto sınıra herhangi bir noktadan mesafeyi hesaplamak bilinen Sınırın en yakın noktasına olan mesafe). Ancak, bunun yerine en yakın satır parçasına olan mesafeyi hesaplamam gerektiğini hissediyorum. Buna ulaşmak için nasıl giderim?
Bu bir algoritma sorusudur ve muhtemelen diğer GD sitelerden birine daha iyi taşınacaktır ... ama hangisi? Math.SE, "point spline distance" için çok sayıda isabet aldı. – smci
Peki, pareto sınırındaki en yakın iki noktayı bulabildiğinizde, bu iki nokta arasındaki doğrusal bağlantı muhtemelen en yakın satır elemanıdır, değil mi? Böylece, ikinci adım olarak çizgi ve nokta arasındaki mesafeyi hesaplayabilirsiniz. – jkalden
Bunu, parçalı doğrusal bir yaklaşım mı, gerçek bir spline değil mi? – smci