Pareto-Optimierung - nicht dominierte Punkte

Ich habe einen Algorithmus geschrieben, der eine Liste zurückgibt, die der von nsga2 ähnelt. (nsga2 des Pakets "mco" pdf))

Der Algorithmus kann selbst nicht erkennen, ob ein Punkt nicht dominiert ist. Einige der zurückgegebenen Punkte sind dominiert und enthalten nur die Punkte und ihre Werte, nicht den von nsga2 zurückgegebenen Logikvektor.

Ich versuche, die nicht dominierten Punkte zu erhalten (nicht deren Werte).

Mit dem Ergebnis von nsga2 können Sie paretoSet () verwenden, um die Werte abzurufen. Dies hängt jedoch davon ab, ob der Logikvektor während nsga2 vorberechnet wurde.

Ich habe auch paretoFront () / paretoFilter () von "mco" und nondominated_points () des Pakets "emoa" pdf), obwohl sie nur mit den Werten arbeiten, gibt es keine Möglichkeit, die Punkte zu erhalten.

Eine Möglichkeit, dies zu lösen, besteht darin, die Werte zu akzeptieren und dann für jeden Wert die Punkte durchzugehen, zu prüfen, ob dieser Wert vorhanden ist, und ihn gegebenenfalls einer Liste hinzuzufügen. Aber ich denke, es muss eine Funktion geben, die die Punkte zurückgibt.

Um dies zu reproduzieren, könnten Sie Folgendes verwenden:

res = nsga2(func, 3, 2, lower.bounds=rep(0, 5), upper.bounds=rep(1, 5))
res$pareto.optimal = NULL
points = paretoSet(res) # points will be empty because res does 
                        # not have the logic vector

Antworten auf die Frage(2)

Ihre Antwort auf die Frage