線性規劃問題
線性規劃的標準形
將一個線性規劃問題化爲標準形的方法再也不敘述(求\(\max\)改求\(\min\),不等號補鬆弛變量和剩餘變量變等號)。算法
標準形能夠寫爲以下的矩陣形式:函數
\[A=\left[ \begin{matrix} a_{11} &a_{12} &\cdots &a_{1n} \\ a_{21} &a_{22} &\cdots &a_{2n}\\ &\cdots&\cdots \\ a_{m1} &a_{m2} &\cdots &a_{mn} \end{matrix}\right]\quad b=\left[ \begin{matrix} b_1\\ b_2 \\ \vdots\\ b_m \end{matrix}\right]\quad c=\left[ \begin{matrix} c_1\\ c_2 \\ \vdots\\ c_n \end{matrix}\right]\quad X=\left[ \begin{matrix} x_1\\ x_2 \\ \vdots\\ x_n \end{matrix}\right] \]
例如如下這個標準形線性規劃問題:spa
\[\min z=-12x_1-15x_2\\{\rm s.t.}\ \ \ 0.25x_1+0.5x_2+x_3=120\\0.5x_1+0.5x_2+x_4=150\\0.25x_1+x_5=50\\(x_1\ge 0,x_2\ge 0,x_3\ge 0,x_4\ge 0,x_5\ge 0) \]
將它寫成矩陣乘法:class
\[\left[ \begin{matrix} 0.25 &0.50 &1 &0 &0 \\ 0.50 &0.50 &0 &1 &0\\ 0.25 &0 &0 &0 &1\\ \end{matrix}\right]\left[ \begin{matrix} x_1\\ x_2 \\ x_3\\ x_4\\ x_5 \end{matrix}\right]=\left[ \begin{matrix} 120\\150\\50 \end{matrix}\right] \]
令:變量
\[A=\left[ \begin{matrix} 0.25 &0.50 &1 &0 &0 \\ 0.50 &0.50 &0 &1 &0\\ 0.25 &0 &0 &0 &1\\ \end{matrix}\right]\quad b=\left[ \begin{matrix} 120\\150\\50 \end{matrix}\right]\quad X=\left[ \begin{matrix} x_1\\ x_2 \\ x_3\\ x_4\\ x_5 \end{matrix}\right]\quad c=\left[ \begin{matrix} -12\\ -15 \\ 0\\ 0\\ 0 \end{matrix}\right] \]
那麼原來的線性規劃標準形可簡寫爲如下的矩陣乘法形式:lambda
\[\min z=c^TX\\{\rm s.t.}\ \ AX=b\\X\ge {\bf 0} \]
這裏的\(X\ge {\bf 0}\)表示向量\(X\)的每一個份量非負,之後再也不贅述。方法
線性規劃標準形的可行解性質
定義
設\(rank(A)=m\),\(A\)的\(m\)個線性無關的列向量組成的線性極大無關組稱做標準形的基(列空間的一個基底)。給定一個基:\(B=(P_{i_1},P_{i_2},\cdots,P_{i_m})\),對應基中列向量的變量\(x_{i_1},x_{i_2},\cdots,x_{i_m}\)稱做基變量(在矩陣乘法中與標準形基底列向量相乘的\(X\)的份量),其他變量稱做非基變量。im
將基變量構成的向量記做\(X_B\),非基變量構成的向量記做\(X_N\),令\(X_N={\bf 0}\),則等式約束條件變爲di
\[BX_B=b \]
解得\(X_B=B^{-1}b\).該向量知足約束\(AX=b\)且非基變量全爲0,稱做關於基\(B\)的基本解,若是\(X\)是一個基本解且\(X\ge {\bf 0}\),則稱\(X\)是一個基本可行解,對應的基\(B\)成爲可行基。display
(注:關於爲什麼矩陣\(B\)必定是可逆的?咱們在這裏假設線性規劃的幾個約束條件是線性無關的,即矩陣\(A\)行滿秩。如若否則,\(A\)中存在一行可被其餘行線性表出,則這個約束條件是冗餘的。又矩陣的行秩等於列秩,\(B\)的列向量組是\(A\)列向量的線性極大無關組,那麼\(B\)必定爲滿秩方陣,故\(B\)可逆。 實際上咱們能夠進一步推出,\(A\)的行數嚴格小於列數,如若否則,因爲\(A\)行滿秩,矩陣行秩等於列秩,因此列數大於等於列秩。若列數等於列秩,則線性方程組\(AX=b\)的解是惟一肯定的,線性規劃問題就沒有意義了。)
基本可行解的性質
引理
\(AX=b\)的解\(\alpha\)是基本解\(\Leftrightarrow\alpha\)中非零份量對應列向量線性無關。
定理1
若是標準形有可行解,則必有基本可行解。
定理2
若是標準形有最優解,則必存在一個基本可行解是最優解。
單純形法
基本步驟
(1).肯定初始的基本可行解
(2).檢查當前的基本可行解:若當前基本可行解是最優解,或者判斷該標準形無最優解,則計算結束;不然做基變換:用一個非基變量替換基變量,獲得一個新的可行基和對應基本可行解,且使目標函數值降低(或不升)。
(3).重複(2).
如何選擇初始基本可行解
通常引入\(m\)個鬆弛變量\(x_{n+i}\ge0(i=1,2,\cdots,m)\),將這\(m\)個鬆弛變量取爲基變量,則初始基本可行解對應基變量部分:
\[X_B={\bf 0} \]
非基變量部分:
\[X_N=(b_1,b_2,\cdots,b_m)^T \]
初始基本可行解:
\[X^{(0)}={\left(\begin{array}{c}X_B\\X_N \end{array} \right)}=(0,0,\cdots,0,b_1,b_2,\cdots,b_m)^T \]
最優性檢驗
給定可行基\(B=(P_{k_1},P_{k_2},\cdots,P_{k_m})\),將\(AX=b\)兩邊同時乘以\(B^{-1}\),得\(B^{-1}AX=B^{-1}b\).記\(A\)中對應非基變量得列向量構成矩陣爲\(N\).
不妨設(矩陣分塊):
\[A=(B \ N)\\X=\left( \begin{array}{c} X_B\\X_N\end{array} \right) \]
則:
\[\begin{aligned}AX&=b\\\Rightarrow \ (B\ N)\left( \begin{array}{c} X_B\\X_N\end{array} \right)&=b\\BX_B+NX_N&=b\\B^{-1}BX_B+B^{-1}NX_N&=B^{-1}b\\X_B&=B^{-1}b-B^{-1}NX_N\end{aligned} \]
代入目標函數
\[\begin{aligned}z&=c^TX\\&=c_B^TX_B+c_N^TX_N\\&=c_B^T(B^{-1}b-B^{-1}NX_N)+c_N^TX_N\\&=c_B^TB^{-1}b+(c_N^T-c_B^TB^{-1}N)X_N\end{aligned} \]
基本可行解\(X_B^{(0)}=B^{-1}b,X_N^{(0)}=0\),目標函數值爲\(z_0=c_B^TB^{-1}b\)
\[\begin{aligned}z&=c^TX\\&=z_0+(c_N^T-c_B^TB^{-1}N)X_N\\&=z_0+(c_B^T-c_B^TB^{-1}B)X_B+(c_N^T-c_B^TB^{-1}N)X_N\\&=z_0+(c^T-c_B^TB^{-1}A)X\end{aligned} \]
記\(\Lambda^T=c^T-c_B^TB^{-1}A=(\lambda_1,\lambda_2,\cdots,\lambda _n)^T\)爲檢驗數,則目標函數能夠簡化爲:
\[z=z_0+\Lambda^TX \]
記\(B^{-1}A=(\alpha_{ij})_{m\times n},P_j'=B^{-1}P_j(1\le j \le n),\beta =B^{-1}b\)
定理3
給定基本可行解\(X^{(0)}\),若全部檢驗數非負,則\(X^{(0)}\)是最優解。若存在檢驗數\(\lambda_k<0\)且全部\(\alpha_{ik}\le 0(1\le i \le m)\),則無最優解。
基變換
給定可行基\(B=(P_{\pi(1)},P_{\pi(2)},\cdots,P_{\pi(m)})\),設\(\lambda_k<0\)且\(\alpha _{lk}>0\),\(x_k\)必是非基變量。
用非基變量\(x_k\)替換基變量\(x_{\pi(l)}\),用\(P_k\)替換\(B\)中的\(P_{\pi(l)}\),新的基爲
\[B'=(P_{\pi(1)},\cdots,P_{\pi(l-1)},P_k,P_{\pi(l+1)}\cdots,P_{\pi(m)}) \]
稱\(x_k\)爲換入變量,\(x_{\pi(l)}\)爲換出變量。選取\(l\)的方法:使得
\[\frac{\beta_l}{\alpha_{lk}}=\min \{\frac{\beta_i}{\alpha_{ik}}|\alpha_{ik}>0,1\le i \le m \} \]
針對最小化的單純形法算法步驟
1.設初始可行基
\[B=(P_{\pi(1)},P_{\pi(2)},\cdots,P_{\pi(m)})\\(\alpha_{ij})_{m\times n}=B^{-1}A\\\beta=B^{-1}b\\\Lambda^T=c^T-B^{-1}A\\z_0=B^{-1}b \]
2.若全部\(\lambda_j\ge0(1\le j\le n)\),則\(X_B=\beta,X_N={\bf 0}\)是最優解,計算結束。
3.取\(\lambda_k<0\),若全部\(\alpha_{ik}\le 0 (1\le i \le m)\),則無最優解,計算結束。
4.取\(1\le l\le m\)使得
\[\frac{\beta_l}{\alpha_{lk}}=\min \{\frac{\beta_i}{\alpha_{ik}}|\alpha_{ik}>0,1\le i \le m \} \]
5.以\(x_k\)爲換入變量,\(x_{\pi(i)}\)爲換出變量作基變換。
6.轉第2步判斷。