天天看點

一:【線性規劃】一:【線性規劃】

一:【線性規劃】

本節例題來自《數學模組化算法與應用-司守奎》。

普通的線性規劃問題

例題:

一:【線性規劃】一:【線性規劃】

目标函數和限制條件已知。

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即可。