TypeError:linprog的无效输入:A_ub必须是数字2D数组,每行代表一个上限不等式约束

时间:2018-11-10 06:55:18

标签: python optimization scipy

我正在使用内点法进行线性优化。 我的优化代码如下

z=scipy.optimize.linprog(c, A_ub, b_ub, bounds=bounds,method='interior-point',
                         options = {"maxiter":10000})

我有34K数据。使用以下代码检查A_ub的形状

A_ub.shape
Out[7]: (37439, 74878)

最初为8K数据运行了相同的代码,但现在抛出错误

TypeError: Invalid input for linprog: A_ub must be a numerical 2D array with each row representing an upper bound inequality constraint

您能帮助我解决此问题吗?

1 个答案:

答案 0 :(得分:-1)

我从旧代码中找到了这个示例

from scipy import optimize
    optimize.linprog(
...     c = [1, 3], 
...     A_ub=[[1, 1]], 
...     b_ub=[4],
...     bounds=(1, 6),
...     method='interior-point'
... )
     con: array([], dtype=float64)
     fun: 4.00000000831602
 message: 'Optimization terminated successfully.'
     nit: 4
   slack: array([2.])
  status: 0
 success: True
       x: array([1., 1.])

您当然可以使用简单的方法或任何其他方法。可能是您应该检查内存,正在处理大型数组。