我想在 r 中的 isres 函数中传递约束和目标函数的参数值。因为我可能需要使用非线性函数,所以我正在使用 isres 函数。我的代码如下。
############## DATA PREPARETION ##########
per1 <- c(50,24,100,12,33,80,120,75,54,32)
per2 <- c(100,241,141,124,130,102,451,141,471,121)
############## CONSTRAIN FUNCTION DEFINATION ##########
constfunction <- function (per1,per2,x) {
total <- 0
for (i in 1:length(per2)) {
total <- per2[i]*x[i] + total
}
total <- total - 1000
return (total)
}
############## OBJECTIVE FUNCTION DEFINATION ##########
objfunction <- function(per1, per2,x) {
solution <- 0
for (i in 1:length(per1)) {
solution <- per1[i]*x[i] + solution
}
return(solution)
}
############## OPTIMIZATION ##########
n <- length(per1)
res0 <- isres ( x0=c(rep(0,n)),
fn = objfunction,
lower = c(rep(0,n)),
upper = c(rep(1,n)),
hin = NULL,
heq = constfunction,
maxeval = 100000,
xtol_rel = 1e-06,
nl.info = TRUE,
)
这会产生错误,因为缺少以下参数“x”,没有默认值。
由于 x 是可变的,我如何在代码中提供 x ?另外如何提供per1和per2?即如何在R中的isres中为目标函数和约束函数提供参数?