代码是这样的:
错误提示:A_eq必须正好有两个维度,A_eq中的列数必须等于c的大小
求解!
代码是这样的:
a_eq内应该是一个1-3的array,不应该是三个单值,即应该多套一层中括号
修改如下:
有帮助望采纳
import numpy as np
from scipy.optimize import linprog
c = np.array([2, 3, -5])
a_ub = np.array([[-2, 5, -1], [1, 3, 1]])
b_ub = np.array([-10, 12])
a_eq = np.array([[1, 1, 1]])#注意维度,要多加一个方括号
b_eq = np.array([7])
print(c, a_ub, b_ub, a_eq, b_eq)
ret = linprog(-c, A_ub=a_ub, b_ub=b_ub, A_eq=a_eq,
b_eq=b_eq, bounds=((0, None), (0, None),(0, None)))#变量有三个,bound要写三个
print(ret)
print(ret.x) # 表示最优解
print(ret.fun) # 表示最值