【運籌學學習筆記】單純形法(持續更新)

運籌學緒論

運籌學是一門應用於管理有組織系統的科學,根據問題的要求,通過數學分析與計算,做出綜合性的合理安排,以期達到資源的最優化利用。

運籌學考慮系統的整體優化、多學科的配合以及模型方法的應用,其研究可以分爲以下幾個步驟:

1.分析與表述問題。
2.建立模型
3.對問題求解
4.對模型和由模型導出的解進行檢驗
5.建立對解的有效控制
6.方案的實施。

其中,建模是運籌學方法的核心和精髓。

線性規劃與單純形法

線性規劃模型的組成要素和特徵

決策變量 指決策者爲實現規劃目標採取的方案、措施,是問題中要確定的未知量。

目標函數 指問題要達到目標的要求,表示爲決策變量的函數。

約束條件 指決策變量取值時受到的各種限制,表示爲決策變量的等式或不等式。

定義:目標決策變量爲可控的連續變量,目標函數和約束條件都是線性的,這類模型稱爲線性規劃模型。

線性規劃問題的一般形式

1.標量形式

決策變量 {xii=1,2,...,n}\{x_i|i=1,2,...,n\}

目標函數 max(min) z=c1x1+c2x2+...+cnxnmax(min)~z=c_1x_1+c_2x_2+...+c_nx_n

約束條件 s.t.={a11x1+a12x2+...+a1nxn(=,)b1,a21x1+a22x2+...+a2nxn(=,)b2,  am1x1+am2x2+...+amnxn(=,)bm,xj0  xj0  xjs.t.=\left\{ \begin{matrix} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n \le(=,\ge)b_1,\\ a_{21}x_1+a_{22}x_2+...+a_{2n}x_n \le(=,\ge)b_2,\\ ~~\vdots\\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n \le(=,\ge)b_m,\\ x_j\ge0~或~x_j\le0~或~x_j無約束 \end{matrix} \right.

一般用 n ~n~表示決策變量的個數, m ~m~代表約束等式/不等式的個數

通常情況下要求 m<n ~m<n~,否則可能導致沒有可行解

2.向量形式

決策變量 X=(x1 x2  xn)TX=(x_1~x_2~\ldots~x_n)^T

目標函數 max(min) z=CXmax(min)~z=CX

約束條件 s.t.={j=1nxjPj(=,)bX0s.t.=\left\{ \begin{matrix} \displaystyle\sum_{j=1}^{n}x_jP_j\le(=,\ge)b\\ X\ge 0 \end{matrix} \right.

其中 C=(c1 c2 ... cn),Pj=(a1j a2j  amj)T,b=(b1 b2 ... bm)TC=(c_1~c_2~...~c_n),P_j=(a_{1j}~a_{2j}~\ldots~a_{mj})^T,b=(b_1~b_2~...~b_m)^T.

注意列向量 PQ ~P\ge Q~意味着 i  PiQi\forall i~~P_i\ge Q_i,矩陣也類似

3.矩陣形式

max(min) z=CXs.t.={AX(=,)bX0 C=(c1 c2 ... cn),A=[a11a12a1na21a22a2nam1am2amn],X=(x1x2xn),b=(b1b2bn) max(min)~z=CX\\ s.t.=\left\{ \begin{matrix} AX\le(=,\ge)b\\ X\ge 0 \end{matrix} \right.\\ 其中~C=(c_1~c_2~...~c_n),\\ A=\left[\begin{matrix} a_{11}&a_{12}&\ldots&a_{1n}\\ a_{21}&a_{22}&\ldots&a_{2n}\\ \vdots&\vdots&&\vdots\\ a_{m1}&a_{m2}&\ldots&a_{mn}\\ \end{matrix} \right],X=\left(\begin{matrix}x_1\\x_2\\\vdots\\x_n\\\end{matrix}\right),b=\left(\begin{matrix}b_1\\b_2\\\vdots\\b_n\\\end{matrix}\right)

稱爲約束方程組變量的係數矩陣,簡稱爲約束變量的係數矩陣。

線性規劃問題的標準形式

對於一般的線性規劃模型缺乏統一的結構,這在問題的求解上無疑增加了一定的難度,因此,我們在定義線性規劃的標準形式如下:

決策變量 {xii=1,2,...,n}\{x_i|i=1,2,...,n\}

目標函數 max(min) z=c1x1+c2x2+...+cnxnmax(min)~z=c_1x_1+c_2x_2+...+c_nx_n

約束條件 s.t.={a11x1+a12x2+...+a1nxn=b1,a21x1+a22x2+...+a2nxn=b2,  am1x1+am2x2+...+amnxn=bm,x10,x20,xn0s.t.=\left\{ \begin{matrix} a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1,\\ a_{21}x_1+a_{22}x_2+...+a_{2n}x_n=b_2,\\ ~~\vdots\\ a_{m1}x_1+a_{m2}x_2+...+a_{mn}x_n=b_m,\\ x_1\ge0,x_2\ge0,\dots x_n\ge0 \end{matrix} \right.

其中 bj0,1jm.~b_j\ge0,1\le j\le m.

矩陣形式
max z=CXs.t.={AX=bX0 max~z=CX\\ s.t.=\left\{ \begin{matrix} AX=b\\ X\ge 0 \end{matrix} \right.

其中ARm×nA\in \mathbb{R}^{m\times n}是一個行滿秩矩陣

標準形式的轉化

1.目標函數

目標函數的極小值\Leftrightarrow目標函數相反數的最大值,即 min z=CXmax z=CX~min~z=CX \Rightarrow max~z'=-CX

2.約束條件

i=1naijxjbi    i=1naijxj+xn+i=bi  (xn+i0)\displaystyle\sum_{i=1}^{n} a_{ij}x_j\le b_i~~\Rightarrow~~\sum_{i=1}^{n} a_{ij}x_j+x_{n+i}=b_i~~(x_{n+i}\ge0),其中 xn+i ~x_{n+i}~稱爲鬆弛變量

i=1naijxjbi    i=1naijxjxn+i=bi  (xn+i0)\displaystyle\sum_{i=1}^{n} a_{ij}x_j\ge b_i~~\Rightarrow~~\sum_{i=1}^{n} a_{ij}x_j-x_{n+i}=b_i~~(x_{n+i}\ge0),其中 xn+i ~x_{n+i}~稱爲剩餘變量

鬆弛變量可以理解爲資源的剩餘,剩餘變量可以理解爲需求的溢出

bi0    bi=bi,aij=aij b_i\le0~~\Rightarrow~~b_i=-b'_i,a_{ij}=-a'_{ij}~其中 1jn , bi0~1\le j\le n~,~b'_i\ge0

3.決策變量

無約束決策變量:xj x_j~無限制xj=xjxj \Rightarrow x_j=x'_j-x''_j~,其中xj,xj0x'_j,x''_j\ge0

非正變量:xj0xj=xjx_j\le0\Rightarrow x_j=-x'_j,其中 xj0~x'_j\ge0

線性規劃問題的解

可行解:如果一個非負矩陣 X ~X~滿足約束方程,則稱矩陣 X ~X~爲可行解。

可行域:可行解組成的集合Ω={XAX=b,X0,XRn}\Omega=\{X\mid AX=b,X\ge0,X\in\mathbb{R}^n\}稱爲可行域,可行域中使得目標函數達到最大值的可行解稱爲最優解

:若 B ~B~ A ~A~的一個 m×m ~m\times m~階的滿秩子矩陣,則稱 B ~B~爲線性規劃問題的一個基。B B~中的每一個列向量用 Pj ~P_j~表示,注意這裏基是一組係數矩陣
B=[b11b12b1mb21b22b2mbm1bm2bmm]=(P1,P2,,Pm) B=\left[\begin{matrix} b_{11}&b_{12}&\ldots&b_{1m}\\ b_{21}&b_{22}&\ldots&b_{2m}\\ \vdots&\vdots&&\vdots\\ b_{m1}&b_{m2}&\ldots&b_{mm}\\ \end{matrix}\right]=(P_1,P_2,\dots,P_m)
基解:假設 B ~B~爲一個基,可知存在 x1,,xm ~x_1,\ldots,x_m~使得 x1P1+xmPm=b~x_1P_1+\ldots x_mP_m=b,則稱X=(x1,,xm,0,,0)TX=(x_1,\ldots,x_m,0,\ldots,0)^T爲基 B ~B~的基解,其中 x1,,xm ~x_1,\dots,x_m~稱爲基變量,其餘的決策變量稱爲非基變量。

基可行解:若滿足變量非負約束條件的基解稱爲基可行解。

可行基:假對應於基可行解的基稱爲可行基。

退化解:當基解中的非零分量小於 m ~m~個時,該基解是退化解

解的維恩圖表示:
在這裏插入圖片描述

線性規劃問題的解法

1.圖解法(略) 2.單純形法

預備知識

凸集:假設 CRn~C\subset\mathbb{R}^n.若對任意 X,YC ~X,Y\in C~ 0<λ<1 ~0<\lambda<1~,都有 λX+(1λ)YC ~\lambda X+(1-\lambda)Y\subset C~,則稱 C ~C~爲一個凸集(Convex set)。從直觀上講,凸集沒有凹入部分,其內部也沒有空洞。

凸組合:設向量 {xi},i=1,2,,n~\{x_i\},i=1,2,\dots,n,如果有實數λi0 \lambda_i\ge0~ i=1nλi=1~ \displaystyle\sum_{i=1}^n \lambda_i=1,則稱 i=1nλixi ~\displaystyle\sum_{i=1}^n\lambda_ix_i~爲向量 {xi} ~\{x_i\}~的凸組合(凸線性組合)

頂點:假設 C ~C~是凸集,且 XC ~X\in C~.若不存在 X1,X2C ~X_1,X_2\in C~使得 X=λX1+(1λ)X2 ~X=\lambda X_1+(1-\lambda)X_2~,其中0<λ<10<\lambda<1,則 X ~X~稱爲 C ~C~的一個頂點.

凸集內點與其頂點的關係:若 C ~C~是有界的凸集,則對任意 XC ~X\in C~,都可以表示成 D ~D~的頂點的凸組合。

幾個基本定理(證明不考)

定理1:若線性規劃問題存在可行解,則其可行域是凸集。
證明:我們我們考察如下的標準形式的線性規劃問題:
max z=CXs.t.={AX=bX0 max~z=CX\\ s.t.=\left\{ \begin{matrix} AX=b\\ X\ge 0 \end{matrix} \right.
兩個不同的解是 X ~X~ Y ~Y~滿足 AX=BX=b,X0,Y0 ~AX=BX=b,X\ge0,Y\ge0~,則對於任意 0<λ<1~0<\lambda<1,我們有 A(λX+(1λ)Y)=b,λX+(1λ)Y0 ~A(\lambda X+(1-\lambda)Y)=b,\lambda X+(1-\lambda)Y\ge0~.所以可行域爲凸集。

定理2:線性規劃問題的基可行解對應線性規劃問題可行域的頂點。

引理 1:線性規劃問題的可行解 X 爲基可行解的充要條件是 X 的正分量所對應的係數列向量是線性無關的.(由基可行解的定義可知必要性是顯然的. )

證明:假設XX爲一個基可行解,若 X ~X~不是一個頂點,則可行域中存在兩個不同的點 Y,Z ~Y,Z~使得 X=λY+(1λ)Z,0<λ<1 ~X=\lambda Y+(1-\lambda)Z,0<\lambda<1~,不妨設 X ~X~只有前 k ~k~個分量大於0,顯然 Y,Z ~Y,Z~ nk ~n-k~個分量都爲0,我們有
i=1kxiPi=b, i=1kyiPi=b, i=1kziPi=b. \sum_{i=1}^kx_iP_i=b,~\sum_{i=1}^ky_iP_i=b,~\sum_{i=1}^kz_iP_i=b.

由於 P1,P2,,Pk ~P_1,P_2,\dots,P_k~線性無關(也就是方程只有一個解),我們得到 X=Y=Z ~X=Y=Z~,與我們的假設矛盾,所以XX一定是一個頂點。

如果假設XX是一個頂點,並且假設其只有前 k ~k~個分量大於0,若果 X ~X~不是一個基可行解,則由引理可知 P1,P2,,Pk ~P_1,P_2,\dots,P_k~線性相關,說以存在 k ~k~個不爲零的實數使得
d1P1+d2P2++dkPk=0D=(d1,d2,,dk,0,,0)T d_1P_1+d_2P_2+\dots+d_kP_k=0\\ D=(d_1,d_2,\dots,d_k,0,\dots,0)^T
顯然有 AX=0A(X+sD)=A(XsD)=b ~AX=0\rightarrow A(X+sD)=A(X-sD)=b~,對任意實數 s ~s~都成立,s>0,X+sD0  XsD0\exist s>0, X+sD\ge0~\wedge~X-sD\ge0,則 X ~X~是可行域中 X+sD ~X+sD~ XsD ~X-sD~的中點,這與XX是一個頂點矛盾,所以XX一定是一個基可行解。

定理3:若線性規劃問題存在最優解,則一定存在一個基可行解是最優解。

引理2:若XX是一個最優解,且 X=λY+(1λ)Z ~X=\lambda Y+(1-\lambda)Z~,其中 Y,Z ~Y,Z~是兩個可行解,0<λ<10<\lambda<1,則 CX=CY=CZ ~CX=CY=CZ~.(反證法易得)

證明:設XX是一個最優解,且不妨假設其只有前kk個分量大於0,若XX是一個基可行解,則證畢;否則存在kk個不全爲0的實數使得(5)式成立,且A(X+rD)=A(XsD)=b A(X+rD)=A(X-sD)=b~對任意實數 s,r ~s,r~都成立,同時X+rDX+rDXsDX-sD至少有一個正分量的數量小於 k~k。則由上一個引理可知我們得到了一個新的最優解,且這個最優解的正分量的數量小於 k~k,若新的到的最優解依然不是基可行解,重複上面的過程,我們可以得到一個新的最優解,這個最優解的正分量的數量小於 k~k,以此類推,經過有限步之後,我們肯定可以得到一個基可行解. 證畢.

定理4:若線性規劃問題有可行解,則必有基可行解

定理5:若線性規劃問題有最優解,則必有最優基可行解

單純形法

確定初始基可行解

當線性規劃問題全部爲“\le”時,在化爲標準型時,加入的m個鬆弛變量所構成的單位矩陣就可以構成一組基:設給定線性規劃問題
max z=j1ncjxjs.t.={j=1nxjPjbxj0 max~z=\sum_{j-1}^n c_jx_j\\ s.t.=\left\{ \begin{matrix} \displaystyle\sum_{j=1}^{n}x_jP_j\le b\\ x_j\ge 0 \end{matrix} \right.
在第 i ~i~個約束條件上加上鬆弛變量 ssi,(i=1,,m)~s_{si},(i=1,\dots,m),化爲標準形式
max z=j1ncjxj+0i=1mxsis.t.={j=1naijxj+xsi=b,(i=1,2,,m)xj0 max~z=\sum_{j-1}^n c_jx_j+0\sum_{i=1}^m x_{si}\\ s.t.=\left\{ \begin{matrix} \displaystyle\sum_{j=1}^{n}a_{ij}x_j+x_{si}=b,(i=1,2,\dots,m)\\ x_j\ge 0 \end{matrix} \right.
其約束方程的係數矩陣爲
[a11a12a1n100a21a22a2n010am1am2amn001] \left[\begin{matrix} a_{11}&a_{12}&\dots&a_{1n}&1&0&\dots&0\\ a_{21}&a_{22}&\dots&a_{2n}&0&1&\dots&0\\ \vdots&\vdots& &\vdots&\vdots&\vdots& &\vdots\\ a_{m1}&a_{m2}&\dots&a_{mn}&0&0&\dots&1\\ \end{matrix}\right]
這個係數矩陣中含有一個單位向量(Ps1,Ps2,,Psm)(P_{s1},P_{s2},\dots,P_{sm}),只要以這個單位矩陣作爲基,就可以立即解出基變量值 xsi=bi ~x_{si}=b_i~,因爲 bi0 ~b_i\ge0~,因此 X=(0,,0,b1,,bm)T~X=(0,\dots,0,b_1,\dots,b_m)^T就是一個基可行解。

當線性規劃問題中約束條件包含"==“或”\ge"時,化爲標準型後一般不包含單位矩陣,這時常用添加人工變量的方法人爲構造一個單位矩陣作爲基,稱爲人工基,具體方法在第五章討論。

基可行解的轉換

不失一般性,設初始基可行解爲
 X(0)=(x10,x20,,xm0,0,,0nm)T=(XBXN),A=(B N) ~X^{(0)}=(x^0_1,x^0_2,\dots,x^0_m,\overbrace{0,\dots,0}^{n-m個})^T=\left(\begin{matrix}X_B\\X_N\end{matrix}\right),A=(B~N)
其中BB是對應的可行基,相應的,設C=(CB,CN)C=(C_B,C_N),我們有AX(0)=(B,N)(XBXN)=BXB=bAX^{(0)}=(B,N)\left(\begin{matrix}X_B\\X_N\end{matrix}\right)=BX_B=b,我們有XB=B1b,XN=0X_B=B^{-1}b,X_N=0

此時目標函數值 z(0)=CX=(CB CN)(XBXN)=CBXBCNXN=CBB1b.~z^{(0)}=CX=(C_B~C_N)\left(\begin{matrix}X_B\\X_N\end{matrix}\right)=C_BX_B-C_NX_N=C_BB^{-1}b.

原始方程組的增廣形式爲:

P1 P2    Pm Pm+1    Pj Pn  b[a11a12a1ma1,m+1a1ja1nb1a21a22a2ma2,m+1a2ja2nb2am1am2ammam,m+1amjamnbm] \left.\begin{matrix}\\ P_1~&P_2&~~\dots&~~P_m&~P_{m+1}~~&\dots&~~P_j&\dots~&P_n&~~b\\ \end{matrix}\right.\\ \left[\begin{array}{ccccccccc|c} a_{11}&a_{12}&\dots&a_{1m}&a_{1,m+1}&\dots&a_{1j}&\dots&a_{1n}&b_1\\ a_{21}&a_{22}&\dots&a_{2m}&a_{2,m+1}&\dots&a_{2j}&\dots&a_{2n}&b_2\\ \vdots&\vdots&\ddots&\vdots&\vdots&&\vdots&&\vdots&\vdots\\ a_{m1}&a_{m2}&\dots&a_{mm}&a_{m,m+1}&\dots&a_{mj}&\dots&a_{mn}&b_m\\ \end{array}\right]

因爲 P1,P2,,Pm ~P_1,P_2,\dots,P_m~ Rm ~\mathbb{R^m}~的一組基,所以其餘的PjP_j都可以用這個基來表示,我們可以將PjP_j替換爲BB1PjBB^{-1}P_j,所以有 B(XBθB1Pj)+θPj=b~B(X_B-\theta B^{-1}P_j)+\theta P_j=b,我們假設XBθB1Pj0X_B-\theta B^{-1}P_j\ge0,那麼我們得到了一個新的可行解
X~=(XBθB1Pj0)+θej \tilde{X}=\left(\begin{matrix}X_B-\theta B^{-1}P_j\\0\end{matrix}\right)+\theta e_j
其中,ej e_j~爲第 j ~j~個分量爲1其餘分量爲0的單位列向量,這個可行解的目標函數值爲
z~=CX~=(CB CN)((XBθB1Pj0)+θej)=CBXB+θ(cjCBB1Pj)=z(0)+θ(cjCBB1Pj) \begin{aligned} \widetilde{z}&=C\tilde{X}\\ &=(C_B~C_N)\left(\left(\begin{matrix}X_B-\theta B^{-1}P_j\\0\end{matrix}\right)+\theta e_j\right)\\ &=C_BX_B+\theta(c_j-C_BB^{-1}P_j)\\ &=z^{(0)}+\theta(c_j-C_BB^{-1}P_j) \end{aligned}

我們令 σj=cjCBB1Pj~\sigma_j=c_j-C_BB^{-1}P_j,則z~=z(0)+θσj\tilde{z}=z^{(0)}+\theta\sigma_jσj \sigma_j~被稱爲檢驗數

​ 如果 θj>0~\theta_j>0,則新的可行解可以使目標函數變大,且 θ ~\theta~應該越大越好. 此時注意到爲了保證X~\tilde{X}是一個可行解,應該有 XBθB1Pj0~X_B-\theta B^{-1}P_j\ge0,顯然這個(B1Pj)(B^{-1}P_j)很難處理,我們不妨在求解之前通過初等行變換把BB化爲單位矩陣(想一想,爲什麼可以這麼做?),即化成

P1P2PmPm+1Pj  Pn  b[100a1,m+1a1ja1nb1010a2,m+1a2ja2nb2001am,m+1amjamnbm] \left.\begin{matrix}\\ P_1&P_2&\dots&P_m&P_{m+1}&\dots&P_j&\dots&~~P_n&~~b&\\ \end{matrix}\right.\\ \left[\begin{array}{ccccccccc|c} 1&0&\dots&0&a_{1,m+1}&\dots&a_{1j}&\dots&a_{1n}&b_1\\ 0&1&\dots&0&a_{2,m+1}&\dots&a_{2j}&\dots&a_{2n}&b_2\\ \vdots&\vdots&\ddots&\vdots&\vdots&&\vdots&&\vdots&\vdots\\ 0&0&\dots&1&a_{m,m+1}&\dots&a_{mj}&\dots&a_{mn}&b_m\\ \end{array}\right]

假設BB是一個單位矩陣且b>0b>0,那麼 θ ~\theta~的最大值顯然是θ=min{biaij:aij>0,1im}\displaystyle\theta^*=min\{\frac{b_i}{a_{ij}}:a_{ij}>0,1\le i\le m\},不妨設θ=brarj\displaystyle\theta^*=\frac{b_r}{a_{rj}},則(P1,,Pr1,Pr+1,,Pm,Pj)(P_1,\dots,P_{r-1},P_{r+1},\dots,P_m,P_j)構成一組新的基,這個基的基解和目標函數值爲

X(1)=(XBθB1Pj0)+θej,z(1)=z(0)+θσj X^{(1)}=\left(\begin{matrix}X_B-\theta^* B^{-1}P_j\\0\end{matrix}\right)+\theta^* e_j,z^{(1)}=z^{(0)}+\theta^*\sigma_j

最優性檢驗和解的判別

(1) 當  σj0~\forall~\sigma_j\le0時,表明現有頂點的目標函數的值比起相鄰各頂點的目標

函數值都大,現以頂點對應的基可行解即爲最優解。(爲什麼局部最優解等於全局最優解?)

(2)當  σj0 σr=0~\forall~\sigma_j\le0\wedge\exist~ \sigma_r=0時,X~=(XBθB1Pj0)+θej \tilde{X}=\left(\begin{matrix}X_B-\theta B^{-1}P_j\\0\end{matrix}\right)+\theta e_j~ X(0)~X^{(0)}的線性組合都是最優解,因此有無限多個解

(3)當 σj>0( θ>0) XBθB1Pj0\exist~\sigma_j>0\wedge(\forall~\theta>0)~X_B-\theta B^{-1}P_j\ge0時,目標函數值可以取到無限大,最優解無界。

單純性法的計算步驟

to be continue...to~be~continue...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章