1

我完全是 R 和 R 优化的新手,试图实现以下一组方程 - 找到最大、最小和交叉点以及交叉点的最大值和最小值。该函数的一种具体形式是:

P = 1.8X+2.55Y+3.2Z

其中的约束是:

X + Y + Z = 1 
X, Y, Z =>0
1.8X = 2.55Y = 3.2Z

我正在使用 nlcoptim 尝试通过以下方式实现它: library(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)

我不断收到错误消息。我究竟做错了什么?

4

0 回答 0