0
我正在使用scipy.optimize.linprog庫來計算使用simplex方法的最小化。我在我的教科書中正在處理這個問題,我希望有人能夠指出我正確的方向,因爲我沒有得到我期望的輸出。問題是:Python 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.]
我似乎無法找到與此功能一致但也許這是我使用它的方式。
這是一個很好的解釋 - 謝謝!我希望這些文檔有更多的例子,並且這樣解釋得更好一些。我本來有向量c的正確標誌,但切換它們,因爲我沒有得到任何輸出。就向量b和矩陣A而言,我應該知道反轉符號 - 更重要的是,我應該已經意識到所有示例都顯示小於或等於,並且我需要進行切換。我完全錯過了最後兩個限制。 –