微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我没有通过 scipy.optimize 获得我想要的值 线性规划问题

如何解决为什么我没有通过 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))

我明白了

enter image description here

代替

enter image description here

解决方法

我相信这是由于默认求解器造成的。交换求解器提供了您寻找的解决方案。请参阅 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 举报,一经查实,本站将立刻删除。