在将 NLOPTR 的 ISRES 算法应用于具有不等式约束的非线性问题时,我陷入了困境。我是这样制定的:
library(nloptr)
fn <- function(x) {
(x[1]-10)^2 + 5*(x[2]-12)^2 + x[3]^4 + 3*(x[4]-11)^2 + 10*x[5]^6 + 7*x[6]^2 + x[7]^4 - 4*x[6]*x[7] - 10*x[6] - 8*x[7]
}
hin <- function(x) {
h <- numeric(4)
h[1] <- 127 - 2*x[1]^2 - 3*x[2]^4 - x[3] - 4*x[4]^2 - 5*x[5]
h[2] <- 282 - 7*x[1] - 3*x[2] - 10*x[3]^2 - x[4] + x[5]
h[3] <- 196 - 23*x[1] - x[2]^2 - 6*x[6]^2 + 8*x[7]
h[4] <- -4*x[1]^2 - x[2]^2 + 3*x[1]*x[2] -2*x[3]^2 - 5*x[6] +11*x[7]
return(h)
}
x0 <- c(1, 2, 0, 4, 0, 1, 1)
isres(x0 = x0, fn = fn, hin = hin)
我收到一条消息,上面写着“匹配错误(hin):缺少参数“表”,没有默认值”
我想我在不等式约束下做的不对。你能告诉我如何解决这个问题吗?非常感谢!