一:【線性規劃】
本節例題來自《數學模組化算法與應用-司守奎》。
普通的線性規劃問題
例題:
目标函數和限制條件已知。
python代碼如下:
from scipy import optimize
import numpy as np
z = np.array([4, 3])
A = np.array([ [2, 1],
[1, 1],
[0, 1] ])
b = np.array([10, 8, 7])
# 決策變量
x1 = x2 = [0, None]
# 求解,注意是-z
ans = optimize.linprog(-z, A_ub=A, b_ub=b,bounds=(x1, x2))
print(ans)
輸出:
PS:scipy.optimize.linprog的使用
官網:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linprog.html
其預設的格式為:
可見其預設求的是最小值,而且限制條件Aup是小于等于。是以,我們在實際的求解時要考慮實際的目标函數和限制條件。在例題中,目标函數是求最大值。通過将目标函數矩陣加一個負号,求最小值和求原來的最大值就等價了。
如果限制條件中存在等式,添加一個Aeq即可。