我想反复运行优化问题以进一步优化最终结果。使用scipy linprog进行优化的定点界限
本质上,目的是最大的一组变量(受不等式和等式约束),的最小化,然后最小化的最大的集不含最大值,,然后最大最小化设定排除最大的两个数等等...
算法我心目中的是:
- 运行
scipy.linprog(..., bounds=[(-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), ...])
与所有变量无界,以最大限度地减少数字的最大值。 - 假设优化问题是可行且成功解决的,通过设置
bounds=[..., (opt_val, opt_val), ...]
将最大值修改为opt_val
,其中所有其他变量的边界为(-numpy.inf, numpy.inf)
。 - 通过将
b_ub
的系数更改为numpy.inf
,使对应于该变量的不等式约束无效。 - 带有修改边界和不等式向量的重新运行模拟。
这可以运行没有错误,但它似乎是SciPy的/ numpy的明确忽略我放在变量的界限 - 我得到我已经“固定”不属于相应opt_val
变量的结果。
scipy可以处理将变量限制为单个浮点数的边界吗? 这是解决我的问题的最佳方法吗?
我开发的代码真的很广泛,这就是为什么我没有在这里发布,所以当然我不期望一个基于代码的解决方案。我在这里寻找的是一个是/否的答案,是否scipy能够处理限制为单个浮点的边界间隔,以及在更高层次上,我是否拥有正确的方法。
https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.optimize.linprog.html的文档没有明确说明是否可以指定定点界限。
尝试更好的LP解算器。 Scipy.optimize.linprog不是很健壮。 –
对于那些正在寻找一个来源,以verfiy @ ErwinKalvelagen的评论: http://stackoverflow.com/questions/43106053/why-does-scipy-optimize-linprog-return-a-solution-that-does-not-satisfy- constrai/43106433 – Charlie