如何解决为什么我没有通过 scipy.optimize 获得我想要的值 线性规划问题
import numpy as np
from scipy.optimize import linprog
b_ub = [74,40,36]
b_eq = [20,45,30]
A = np.array([[7,3,6],[4,8,2],[1,5,9]])
m,n = A.shape
c = list(np.reshape(A,n * m)) # Convert matrix A to list c.
A_ub = np.zeros([m,m * n])
for i in np.arange(0,m,1): # Filling in the matrix of conditions-inequalities.
for j in np.arange(0,n * m,1):
if i * n <= j <= n + i * n - 1:
A_ub[i,j] = 1
A_eq = np.zeros([m,1): # Filling in the matrix of conditions-equalities
k = 0
for j in np.arange(0,1):
if j == k * n + i:
A_eq[i,j] = 1
k = k + 1
print(linprog(c,A_ub,b_ub,A_eq,b_eq))
我明白了
代替
解决方法
我相信这是由于默认求解器造成的。交换求解器提供了您寻找的解决方案。请参阅 docs 并评估使用每个求解器的权衡,以确定您想要使用什么。
print(linprog(c,A_ub,b_ub,A_eq,b_eq,method='highs-ds'))
con: array([0.,0.,0.])
crossover_nit: 0
fun: 215.0
message: 'Optimization terminated successfully.'
nit: 3
slack: array([29.,10.,16.])
status: 0
success: True
x: array([ 0.,45.,30.,20.,0.])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。