首页 > 解决方案 > 替换的长度为零:来自 R 中阿拉巴马州包的 auglag 函数

问题描述

(已编辑)我试图重复在 Internet 上找到的示例(代码如下)。不幸的是,我遇到了一个错误:“h[1] <- x[1] - 900 中的错误:替换的长度为零” 任务是在给定相等和不等约束的情况下最小化函数:

# To minimize:  -(0.653*x[1] + 0.234*x[1]*x[1]+ 0.437*x[2]
# + 0.769*x[3] + 0.453*x[4] + 0.744*x[5] + 0.476*x[5]*x[5])

# Equality constraint: x[1] + x[2] + x[3] + x[4] + x[5] = 2600

# Inequality constraints:
# x[1] > 900      # x[4] > 175
# x[1] < 1100     # x[4] < 225
# x[2] > 400      # x[5] > 295
# x[2] < 600      # x[5] < 305
# x[3] > 250
# x[3] < 350

fn <- function(x) {
  -(0.653 * x[1]+ 0.234 * x[1] * x[1]+ 0.437 * x[2] + 0.769 * x[3] +
      0.453 * x[4] + 0.744 * x[5] + 0.476 * x[5] * x[5])
}

heq <- function(x) {
  h <- rep(NA, 1)
  h[1] <- x[1] + x[2] + x[3] + x[4] +x[5] - 2600
  h
  }

hin <- function(x) {
  h <- rep(NA, 1)
  h[1] <- x[1] - 900
  h[2] <- 1100 - x[1]
  h[3] <- x[2] - 400
  h[4] <- 600 - x[2]
  h[5] <- x[3] - 250
  h[6] <- 350 - x[3]
  h[7] <- x[4] - 175
  h[8] <- 225 - x[4]
  h[9] <- x[5] - 295
  h[10] <- 305 - x[5]
  h
}

ans <- auglag(par=NULL,fn=fn, gr=NULL,hin=hin, heq=heq)

标签: roptimization

解决方案


问题是您没有输入初始起点。

auglag(par = 1:5, fn = fn, hin = hin, heq = heq)


推荐阅读