首页 > 解决方案 > Scipy.Optimize Linprog 中的 ValueError

问题描述

我正在尝试使用 scipy 的 linprog 函数解决问题,但运行程序时出现以下错误:

File "C:\...\anaconda3\lib\site-packages\scipy\optimize\_linprog_util.py", line 339, in _clean_inputs elif (len(bounds) == 2 and np.isreal(bounds[0])

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我的疑问是,对于我在 MATLAB 中的矩阵配置,我确实得到了结果,所以我不知道这个错误的根源。

我调用 linprog 函数的代码行如下所示:

from scipy.optimize import linprog
res = linprog(c=f,A_ub=Aineq,b_ub=Bineq,A_eq=Aeq,b_eq=Beq,bounds=[lb,ub],method='interior-point')

如果您能提供有关错误可能原因的任何信息,我将不胜感激。

优化问题的所有矩阵如下所示:

f= matrix([[7.8, 7.8, 6.4, 6.4, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])

Aineq= matrix([[  0.        ,   0.        ,   0.        ,   0.        ,-6.66666667,   6.66666667,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        ],
           [  0.        ,   0.        ,   0.        ,   0.        ,-5.        ,   0.        ,   5.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        ,  0.        ,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        , 0.        ,  -4.        ,   4.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,0.        ,   0.        ,   0.        ,  -6.66666667, 6.66666667,   0.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,  -5.        ,0.        ,   5.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,0.        ,   0.        ,   0.        ,   0.        , -4.        ,   4.        ,   0.        ,   0.        ,0.        ,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        , -13.33333333,   0.        , 0.        ,   0.        ,  13.33333333,   0.        , 0.        ,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,0.        ,   0.        ,   0.        ,   0.        ,0.        , -13.33333333,   0.        ,  13.33333333,0.        ,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,   0.        ,   0.        ,   0.        ,   0.        ,0.        ,   0.        , -13.33333333,   0.        ,13.33333333,   0.        ,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        , -13.33333333, 0.        ,  13.33333333,   0.        ,   0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        , -15.98721023,  15.98721023],
            [  0.        ,   0.        ,   0.        ,   0.        ,6.66666667,  -6.66666667,  -0.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,5.        ,  -0.        ,  -5.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        , -0.        ,   4.        ,  -4.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  -0.        ,   6.66666667,-6.66666667,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  -0.        ,   5.        ,-0.        ,  -5.        ,  -0.        ,  -0.        ,  -0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ,  4.        ,  -4.        ,  -0.        ,  -0.        , -0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  13.33333333,  -0.        , -0.        ,  -0.        , -13.33333333,  -0.        , -0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        , -0.        ,  -0.        ,  -0.        ,  -0.        ,  -0.        ,  13.33333333,  -0.        , -13.33333333, -0.        ,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  13.33333333,  -0.        ,-13.33333333,  -0.        ,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        , -0.        ,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  13.33333333, -0.        , -13.33333333,  -0.        ,  -0.        ],
            [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        ,-0.        ,  -0.        ,  15.98721023, -15.98721023]])
  
 
Bineq= matrix([[2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5,2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]])

Aeq= matrix([[  1.        ,   0.        ,   0.        ,   0.        , 11.66666667,  -6.66666667,  -5.        ,  -0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        , -0.        ,  -0.        ,   0.        ,   0.        ],
          [  0.        ,   1.        ,   0.        ,   0.        , -6.66666667,  10.66666667,  -4.        ,  -0.        , -0.        ,  -0.        ,  -0.        ,  -0.        ,  -0.        ,  -0.        ,   0.        ,   0.        ],
          [  0.        ,   0.        ,   0.        ,   0.        ,  -5.        ,  -4.        ,  22.33333333,  -0.        ,  -0.        ,  -0.        , -13.33333333,  -0.        ,  -0.        ,  -0.        ,   0.        ,   0.        ],
          [  0.        ,   0.        ,   1.        ,   0.        , -0.        ,  -0.        ,  -0.        ,  11.66666667, -6.66666667,  -5.        ,  -0.        ,  -0.        , -0.        ,  -0.        ,   0.        ,   0.        ],
          [  0.        ,   0.        ,   0.        ,   1.        , -0.        ,  -0.        ,  -0.        ,  -6.66666667, 10.66666667,  -4.        ,  -0.        ,  -0.        , -0.        ,  -0.        ,   0.        ,   0.        ],
          [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  -0.        ,  -5.        , -4.        ,  22.33333333,  -0.        , -13.33333333, -0.        ,  -0.        ,   0.        ,   0.        ],
           [  0.        ,   0.        ,   0.        ,   0.        ,  -0.        ,  -0.        , -13.33333333,  -0.        ,  -0.        ,  -0.        ,  26.66666667,  -0.        , -13.33333333,  -0.        ,   0.        ,   0.        ],
           [  0.        ,   0.        ,   0.        ,   0.        , -0.        ,  -0.        ,  -0.        ,  -0.        , -0.        , -13.33333333,  -0.        ,  26.66666667, -0.        , -13.33333333,   0.        ,   0.        ],
           [  0.        ,   0.        ,   0.        ,   0.        , -0.        ,  -0.        ,  -0.        ,  -0.        , -0.        ,  -0.        , -13.33333333,  -0.        , 13.33333333,  -0.        ,  15.98721023, -15.98721023],
           [  0.        ,   0.        ,   0.        ,   0.        ,-0.        ,  -0.        ,  -0.        ,  -0.        , -0.        ,  -0.        ,  -0.        , -13.33333333,  -0.        ,  13.33333333, -15.98721023,  15.98721023],
           [  0.        ,   0.        ,   0.        ,   0.        ,0.        ,   0.        ,   0.        ,   0.        , 0.        ,   0.        ,   0.        ,  13.33333333, 0.        , -13.33333333,   0.        ,   0.        ]])

Beq= matrix([[ 0. ,  0. ,  1.5,  0. ,  0. ,  1.5,  0. ,  0. ,  0. ,  0. ,-1. ]])

lb= matrix([[ 0.1       ,  0.1       ,  0.1       ,  0.1       ,  0.        ,-6.28318531, -6.28318531,  0.        , -6.28318531, -6.28318531, -6.28318531, -6.28318531, -6.28318531, -6.28318531,  2.        ,0.        ]]
 
ub= matrix([[2.5       , 2.5       , 2.5       , 2.5       , 0.        ,6.28318531, 6.28318531, 0.        , 6.28318531, 6.28318531, 6.28318531, 6.28318531, 6.28318531, 6.28318531, 2.        ,inf]])

标签: pythonscipyscipy-optimizescipy-optimize-minimize

解决方案


推荐阅读