我是R语言优化和R语言的新手, 尝试实施以下方程组-找出最大,最小和相交点以及相交点的最大值和最小值。该函数的特定形式是:
P = 1.8X+2.55Y+3.2Z
其中的约束是:
X + Y + Z = 1
X, Y, Z =>0
1.8X = 2.55Y = 3.2Z
我正在使用nlcoptim尝试通过以下方式实现它: 库(NlcOptim)
目标功能
obj = function(x){
return(1.8 * x[1] + 2.55 * x[2] + 3.2 * x[3])
}
约束功能:
con = function(x){
f = NULL
f = rbind(f, x[1] + x[2] + x[3] - 1)
f = rbind(f, x[1] >= 0)
f = rbind(f, x[1] <= 1)
f = rbind(f, x[2] >= 0)
f = rbind(f, x[2] <= 1)
f = rbind(f, x[3] >= 0)
f = rbind(f, x[3] <= 1)
return(list(ceq = NULL, c = f))
}
设置x的初始值:
x0 = c(0, 0, 0)
使用solnl解决:
solnl(x0, objfun = obj, confun = con)
我一直遇到错误。我在做什么错了?