Python SciPy linprog优化失败,状态为3

Python SciPy linprog优化失败,状态为3,python,scipy,Python,Scipy,尝试用linprog最小化一个简单的线性函数。系数是arr2的元素乘以-1。每个变量只有不等式约束,例如-1未正确形成constr_a列表。它是数组的数组,而不是标量数组。这可能会导致不正确的下限,从而导致优化失败 或许 constr_a.append(constr_default) 应该是 constr_a.append(constr_default[i]) 检查两个绑定数组,确保它们具有正确的形式和值。constr\u a是一个矩阵(2n,n),未知变量数组是(n,1),矩阵乘法结果是数

尝试用linprog最小化一个简单的线性函数。系数是
arr2
的元素乘以-1。每个变量只有不等式约束,例如-1未正确形成
constr_a
列表。它是数组的数组,而不是标量数组。这可能会导致不正确的下限,从而导致优化失败

或许

constr_a.append(constr_default)
应该是

constr_a.append(constr_default[i])

检查两个绑定数组,确保它们具有正确的形式和值。

constr\u a
是一个矩阵(2n,n),未知变量数组是(n,1),矩阵乘法结果是数组
constr\u b
,即(2n,1)。在我看来,这里没有错。@Inna打印并检查
constr\u a
的前几个元素,谢谢你的建议。在邮件中回答。
from scipy.optimize import linprog
import numpy as np
import pandas as pd

numdim = 2

arr1 = np.ones(numdim)
arr1 = - arr1

arr2 = np.array([
19.53,
128.97
])

constr_a = []

for i in range(numdim):

    constr_default = np.zeros(numdim)
    constr_default[i] = 1
    constr_a.append(constr_default)

for i in range(numdim):

    constr_default = np.zeros(numdim)
    constr_default[i] = -1
    constr_a.append(constr_default)

constr_a = np.asarray(constr_a)
constr_b = np.arange(1, 2*numdim + 1, 1)
constr_b[numdim:] = constr_b[:numdim]

print constr_a
print constr_b
print linprog(np.transpose(arr1 * arr2), constr_a, constr_b, bounds=(None, None))
constr_a.append(constr_default)
constr_a.append(constr_default[i])