Python 使用scipy linprog进行优化的不动点界限

Python 使用scipy linprog进行优化的不动点界限,python,optimization,scipy,linear-programming,Python,Optimization,Scipy,Linear Programming,我想反复运行优化问题,以进一步优化最终结果 本质上,目标是最小化一组变量的最大值(受不等式和等式约束),然后最小化该组变量的最大值,排除最大值,然后最小化该组变量的最大值,排除两个最大值,以此类推 我想到的算法是: 运行scipy.linprog(…,bounds=[(-numpy.inf,numpy.inf),(-numpy.inf,numpy.inf),(-numpy.inf,numpy.inf),…]),所有变量都是无界的,以最小化数字集的最大值 假设优化问题可行并成功解决,通过设置边界=

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

本质上,目标是最小化一组变量的最大值(受不等式和等式约束),然后最小化该组变量的最大值,排除最大值,然后最小化该组变量的最大值,排除两个最大值,以此类推

我想到的算法是:

  • 运行
    scipy.linprog(…,bounds=[(-numpy.inf,numpy.inf),(-numpy.inf,numpy.inf),(-numpy.inf,numpy.inf),…])
    ,所有变量都是无界的,以最小化数字集的最大值
  • 假设优化问题可行并成功解决,通过设置
    边界=[…,(opt\u val,opt\u val),…]
    将最大值固定为
    opt\u val
    ,其中所有其他变量的边界均为
    (-numpy.inf,numpy.inf)
  • 通过将
    b_ub
    的系数更改为
    numpy.inf
    ,使与该变量对应的不等式约束无效
  • 使用修改的边界和不等式向量重新运行模拟
  • 这可以毫无错误地运行,但似乎scipy/numpy显式地忽略了我对变量设置的边界-我得到了我“修复”的变量的结果,这些变量不是对应的
    opt\u val

    scipy能否处理将变量限制为单个浮点数的边界? 这是解决我问题的最好办法吗

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


    上的文档没有明确说明是否可以指定定点边界。

    结果表明,放宽不等式约束是个问题。我错误地放松了关于固定变量的所有约束,而我需要放松一些约束


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

    尝试更好的LP解算器。Scipy.optimize.linprog不是很健壮。对于那些寻找verfiy@ErwinKalvelagen评论来源的人: