使用scipy linprog进行优化的定点界限

时间:2017-05-08 06:02:01

标签: python optimization scipy linear-programming

我想反复运行优化问题以进一步细化最终结果。

基本上,目标是最小化一组变量的最大值(受不等式和等式约束),然后最小化集合的最大值排除最大值,然后最小化集合的最大值,不包括两个最大数字等等......

我想到的算法是:

  1. 在所有变量无限制的情况下运行scipy.linprog(..., bounds=[(-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), ...]),以最大限度地减少数字集的最大值。
  2. 假设优化问题可行且成功解决,请通过设置opt_val将最大值修正为bounds=[..., (opt_val, opt_val), ...],其中所有其他变量都具有范围(-numpy.inf, numpy.inf)
  3. 通过将b_ub的系数更改为numpy.inf,使与该变量相对应的不等式约束无效。
  4. 使用修改的边界和不等式向量重新运行模拟。
  5. 这可以毫无错误地运行,但似乎scipy / numpy明确地忽略了我对变量的限制 - 我得到的结果是我已经'固定'而不是相应的opt_val

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

    我开发的代码非常广泛,这就是为什么我没有在这里发布它,所以当然我不希望基于代码的解决方案。我在这里寻找的是关于scipy是否可以处理限制为单个浮点数的边界区间的是/否答案,并且在更高的层次上,我是否有正确的方法。

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

1 个答案:

答案 0 :(得分:0)

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

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