0

我有一个简单的经济订货量 (EOQ) 优化问题,涉及许多变量和一些约束。

广义目标函数为 sum(ai*x[i]+bi/[xi]),限制条件为:

  • x[i] >=1 对于所有“i”(至少 1 个订单)
  • x[i] <=24 对于所有“i”(最多 24 个订单)
  • sum(x[i]) <= 2000(最多合并 2000 个订单)
  • sum(ci/x[i]) <= 2000(循环库存最多 2000 个单位)

使用 auglag() 需要很长时间(即使是 100 个变量),所以做了一些研究,我发现问题是凸的,并试图实现一个凸求解器。

我找到了这个链接:

非线性优化问题中的错误:“x”中的值无限或缺失

但是,CVXR 似乎不允许分母中包含“x”,因为它会提示以下错误消息:

as.Constant(e1)/e2 中的错误:只能除以标量常数

  ans2 <- auglag(par=rep(2,1000), fn=objfun, hin=confun) ##takes too long

  p <- Variable(1000)
  obj <- Minimize(sum(a*p+b/p)) ##prompts error

我希望求解器能够更快地解决这样一个“简单”的优化问题......我对第二个选项做错了吗?或者对于具有非线性约束的凸非线性优化问题是否有更好的求解器?

谢谢

4

1 回答 1

2

尝试

Minimize(sum(a*p+b*inv_pos(p)))

由于您不提供可重现的代码,因此我没有尝试过。

于 2019-05-23T12:55:31.637 回答