我想反复运行优化问题以进一步细化最终结果。
基本上,目标是最小化一组变量的最大值(受不等式和等式约束),然后最小化集合的最大值排除最大值,然后最小化集合的最大值,不包括两个最大数字等等......
我想到的算法是:
scipy.linprog(..., bounds=[(-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), (-numpy.inf, numpy.inf), ...])
,以最大限度地减少数字集的最大值。opt_val
将最大值修正为bounds=[..., (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处的文档没有明确说明是否可以指定定点界限。
答案 0 :(得分:0)
事实证明这是放松不平等约束的问题。我错误地放宽了关于固定变量的所有约束,而当我需要放松某些约束时。
@ ErwinKalvelagen的评论仍然值得注意。