Оптимизация Парето - недоминируемые точки

Я написал алгоритм, который возвращает список, аналогичный тому, который возвращает nsga2. (nsga2 пакета "mco" (PDF))

Алгоритм не может сам распознать, если точка не доминирует. Некоторые из возвращаемых им точек являются доминирующими и содержат только точки и их значения, а не логический вектор, который возвращает nsga2.

Я пытаюсь получить недоминируемые баллы (а не их значения).

С результатом nsga2 вы можете использовать paretoSet () для получения значений, однако это зависит от того, что логический вектор был предварительно вычислен во время nsga2.

Я также посмотрел на paretoFront () / paretoFilter () "mco" и nondominated_points () пакета "emoa" (PDF), однако они работают только со значениями, нет способа получить очки.

Один из способов решить эту проблему - принять значения, а затем для каждого значения пройти через точки, посмотреть, имеет ли оно это значение, и, если да, добавить его в список. Но я думаю, что должна существовать функция, которая возвращает очки.

Чтобы воспроизвести это, вы можете использовать:

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

Ответы на вопрос(2)

Ваш ответ на вопрос