我在包nloptr中遇到了auglag函数的问题。我有一个多元可微分非线性函数,以最小化框约束和等式约束。因此我想到了函数nloptr :: auglag。下面你可以看到出了什么问题(这不是我的功能,但很好地显示了问题):
x0 <- c(1, 1)
fn <- function(x, b) return(b * sum(x^2))
gr <- function(x, b) return(2 * b * x)
lb <- c(-1, -0.5)
ub <- c(2, 1.5)
sol <- nloptr::auglag(x0 = x0, fn = fn, gr = gr,
lower = lb, upper = ub, b = 2)
然后我得到以下错误:
Error in .checkfunargs(eval_grad_f, arglist, "eval_grad_f") :
eval_grad_f requires argument 'b' but this has not been passed to
the 'nloptr' function.
即使没有添加等式约束,也是如此。
我是以错误的方式传递论据吗?