2017-05-08 25 views
0

我想反复运行优化问题以进一步优化最终结果。使用scipy linprog进行优化的定点界限

本质上,目的是最大的一组变量(受不等式和等式约束),的最小化,然后最小化的最大的集不含最大值,,然后最大最小化设定排除最大的两个数等等...

算法我心目中的是:

  1. 运行scipy.linprog(..., bounds=[(-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), ...])与所有变量无界,以最大限度地减少数字的最大值。
  2. 假设优化问题是可行且成功解决的,通过设置bounds=[..., (opt_val, opt_val), ...]将最大值修改为opt_val,其中所有其他变量的边界为(-numpy.inf, numpy.inf)
  3. 通过将b_ub的系数更改为numpy.inf,使对应于该变量的不等式约束无效。
  4. 带有修改边界和不等式向量的重新运行模拟。

这可以运行没有错误,但它似乎是SciPy的/ numpy的明确忽略我放在变量的界限 - 我得到我已经“固定”不属于相应opt_val变量的结果。

scipy可以处理将变量限制为单个浮点数的边界吗? 这是解决我的问题的最佳方法吗?

我开发的代码真的很广泛,这就是为什么我没有在这里发布,所以当然我不期望一个基于代码的解决方案。我在这里寻找的是一个是/否的答案,是否scipy能够处理限制为单个浮点的边界间隔,以及在更高层次上,我是否拥有正确的方法。

https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.optimize.linprog.html的文档没有明确说明是否可以指定定点界限。

+0

尝试更好的LP解算器。 Scipy.optimize.linprog不是很健壮。 –

+0

对于那些正在寻找一个来源,以verfiy @ ErwinKalvelagen的评论: http://stackoverflow.com/questions/43106053/why-does-scipy-optimize-linprog-return-a-solution-that-does-not-satisfy- constrai/43106433 – Charlie

回答

0

事实证明,这是放宽不平等约束的问题。我错误地放宽了所有的关于固定变量的限制,反而我需要放宽的一些的限制。

@ ErwinKalvelagen的评论仍然值得注意。