Я новичок в R и должен решить многоцелевую задачу оптимизации (MOOP).Я импортировал пакет mco, определил свои функции и проверил функцию nsga2.Дело в том, что я не нашел правильного способа связать параметры в определениях функций (формальные параметры) и в вызовах (фактических параметрах), когда первый совпадает с числовой переменной.
У меня естьследующий код:
funct_set <- function (x1,x2,x3) {
f <- numeric(2)
f[1] <- min(-5*x1 - 2*x2 - 8*x3)
f[2] <- min(1000*x1 + 8000*x2 + 12000*x3)
return (f);
}
restrictions <- function (x1,x2,x3) {
restrictions <- numeric(3)
restrictions[1] <- (x1 + x2 + x3 <= 30)
restrictions[2] <- (x1 + x2 + x3 > 0)
restrictions[3] <- (2*x1 + 3*x2 + 1.5*x3 <= 45)
return (restrictions);
}
optimization <- nsga2(funct_set('x1', 'x2', 'x3'),
constraints = restrictions('x1', 'x2', 'x3'),
2, 2,
NULL,
generations=150,
popsize=100,
cprob=0.7,
cdist=20,
mprob=0.2,
mdist=20,
lower.bounds=rep(-5, 2),
upper.bounds=rep(10, 2)
);
Однако это привело к тому, что R, учитывая, что «x1», «x2» и «x3» не являются числами: Error in x1 + x2 : non-numeric argument to binary operator
Как правильнопередать эти параметры?