解决R

时间:2019-05-23 12:44:29

标签: r convex-optimization cvxr

我有一个简单的经济订单数量(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个变量也是如此),因此进行一些研究后,我发现问题是凸的,并尝试实现凸的求解器。

我找到了此链接:

Error in nonlinear optimization problem : infinite or missing values in '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

我希望求解器可以更快地解决此类“简单”的优化问题... 我对第二个选项做错了吗? 还是对于具有非线性约束的凸非线性优化问题有更好的求解器?

谢谢

1 个答案:

答案 0 :(得分:2)

尝试

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

由于您未提供可复制的代码,因此我没有尝试过。