我正在使用scipy.optimize.linprog库使用单纯形方法计算最小化。我正在课本上写这个问题,我希望有人能给我指出正确的方向,因为我没有得到我期望的结果。问题是:Minimize w = 10*y1 + 15*y2 + 25*y3
Subject to: y1 + y2 + y3 >= 1000
y1 - 2*y2 >= 0
y3 >= 340
with y1 >= 0, y2 >= 0
我为此编写的代码是:import numpy as np
import pandas as pd
from scipy.optimize import linprog
A = np.array([
[1, 1, 1],
[1,-2, 0],
[0, 0, 1]])
b = np.array([1000,0,340])
c = np.array([-10,-15,-25])
res = linprog(c, A_ub=A, b_ub=b,
bounds=(0, None))
print('Optimal value:', res.fun, '\nX:', res.x)
它给出了输出:Optimal value: -18400.0
X: [ 0. 660. 340.]
我希望是:Optimal value: -15100.0
X: [ 660. 0. 340.]
我似乎找不到这个函数的一致性,但也许这就是我使用它的方式。