Проблема с ограничениями многоцелевой оптимизации: R

#r #constraints #genetic-algorithm #pareto-optimality

#r #ограничения #генетический алгоритм #оптимальность по Парето

Вопрос:

У меня есть следующий код, который определяет два ограничения, которые я хочу использовать в моей задаче многоцелевой оптимизации, учитывая, что model1 model2 они model3 уже проверяемы и работают раньше.

 restrictions <- function (var) {
  x <- var[1]; y <- var[2]
  restrictions <- logical(2)
  restrictions[1] <- (predict(get(model1), data.frame(x, y), type = "response") < 500)
  restrictions[2] <- (predict(get(model1), data.frame(x, y), type = "response") > 0)
  return (restrictions);
}
 

Построение многоцелевой функции генетического алгоритма в следующем коде:

 fn <- function (var) {
  x <- var[1]; y <- var[2]
  f <- numeric(3)
  f[1] <- predict(get(model1), data.frame(x, y), type = "response")
  f[2] <- predict(get(model2), data.frame(x, y), type = "response")
  f[3] <- predict(get(model3), data.frame(x, y), type = "response")
  return (f);
}
 

И, наконец, процесс оптимизации здесь с использованием библиотеки mco

 library (mco)
optimum <- mco::nsga2 (fn = fn, idim = 2, odim=3,
                                constraints = restrictions, cdim = 2,
                           generations = 100,
                           popsize= 40,
                           cprob = 0.5,
                           cdist = 20,
                           mprob = 0.5,
                           mdist = 20, 
                           lower.bounds = c(-80, 50),
                           upper.bounds = c(-70, 60)
)
 

Основная проблема заключается в том, что решение не соответствует указанному ограничению. Есть мысли по этому поводу?

Комментарии:

1. эй, ты когда-нибудь в конечном итоге выяснял это?