在解决R中的优化问题时,我遇到约束不一致无解决方案错误。所使用的软件包-NlcOptim。我将其范围缩小到我的目标函数,并且怀疑数值/精度问题。下面是代码:
library(NlcOptim)
objective_function1 <- function(x) {
return((-1) * (10*x[1]*x[2]*(-300*x[2] + 400) + 10*x[3]*x[4]*(-300*x[4] + 400)))
}
objective_function2 <- function(x) {
return((-10) * (x[1]*x[2]*(-300*x[2] + 400) + x[3]*x[4]*(-300*x[4] + 400)))
}
res1 = solnl(X=c(1, 0, 1, 0), objfun=objective_function1,
Aeq = matrix(c(1,0,1,0), nrow = 1), Beq=2,
lb=c(1,0,1,0), ub=c(2,1,2,1))
res2 = solnl(X=c(1, 0, 1, 0), objfun=objective_function2,
Aeq = matrix(c(1,0,1,0), nrow = 1), Beq=2,
lb=c(1,0,1,0), ub=c(2,1,2,1))
肉眼看,这两个目标函数之间没有区别。但是,objective_function1会引发以下错误:
Error in solve.QP(HESS, -ggf, -t(tgc), c, meq = eq) :
constraints are inconsistent, no solution!
对此有什么可能的解决方法?