#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. эй, ты когда-нибудь в конечном итоге выяснял это?