【運籌學筆記】 第一章 線性規劃與單純形法

運籌學緒論

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

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

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

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

線性規劃與單純形法

線性規劃(Linear programming,簡稱LP),是運籌學中研究較早、發展較快、應用廣泛、方法較成熟的一個重要分支,它是輔助人們進行科學管理的一種數學方法。研究線性約束條件下線性目標函數的極值問題的數學理論和方法。

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

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

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

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

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

線性規劃問題的一般形式

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=AY=b,X0,Y0 ~AX=AY=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~\sigma_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{biaijaij>0,1im}\displaystyle\theta^*=min\left\{\left.\frac{b_i}{a_{ij}}\right|a_{ij}>0,1\le i\le m\right\},不妨設θ=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時,目標函數值可以取到無限大,最優解無界。

單純性法的計算步驟

在這裏插入圖片描述

  1. 將問題化爲標準型
  2. 求出線性規劃的初始基可行解,列出初始單純形表
cc c1   cm   cm+1   cnc_1~\dots~\dots~c_m~~~c_{m+1}~\dots~\dots~ c_n
CBC_B XBX_B x1   xm   xm+1   xnx_1~\dots~\dots~x_m~~~x_{m+1}~\dots~\dots~ x_n bb θ=biaik\displaystyle\theta=\frac{b_i}{a_{ik}}
c1c_1 x1x_1 1     0   a1,m+1  a1n1~~\dots~\dots~~0~~~a_{1,m+1}~\dots\dots~ a_{1n} b1b_1 θ1\theta_1
\vdots \vdots \vdots \vdots \vdots
\vdots \vdots \vdots \vdots \vdots
cmc_m xmx_m 0     1   am,m+1  amn0~~\dots~\dots~~1~~~a_{m,m+1}~\dots\dots~ a_{mn} bmb_m θm\theta_m
σ\sigma 0     0    σj=cjciaij0~~\dots~\dots~~0~~~~\sigma_j=c_j-\sum c_ia_{ij}
  1. 進行最優性檢驗

    如果表中所有檢驗數 σj0~\sigma_j\le0,則表中的基可行解就是問題的最優解,計算停止。否則繼續下一步。

  2. 從一個基可行解轉換到另一個目標值更大的基可行解,列出新的單純形表

    a. 確定換入基的變量。選擇 σin=max{σj  σj>0} ~\displaystyle\sigma_{in}=max\{\sigma_j~|~\sigma_j>0\}~對應的變量 xin ~x_{in}~作爲換入變量。

    b. 確定換出變量。選擇 θout=min{bjajk  ajk>0} ~\displaystyle\theta_{out}=min\left\{\left.\frac{b_j}{a_{jk}}~\right|~a_{jk}>0\right\}~對應的變量 xout ~x_{out}~作爲換出變量

    c. 用 xin ~x_{in}~替換基變量中的 xout ~x_{out}~,得到一個新的基。對應新的基可以找出一個新的基可行解,將基變量對應的矩陣化爲單位矩陣,並相應地可以畫出一個新的單純形表。

單純形法的進一步討論

前面討論了在標準型中係數矩陣有單位矩陣,很容易確定一組基可行解。在實際問題中有些模型並不含有單位矩陣,爲了得到一組基向量和初基可行解,在約束條件的等式左端加一組虛擬變量,得到一組基變量。這種人爲加的變量稱爲人工變量,構成的可行基稱爲人工基,用大M法或兩階段法求解,這種用人工變量作橋樑的求解方法稱爲人工變量法。
比如如下線性規劃問題:
max z=3x1+2x2x3s.t.={4x1+3x2+x34,x1x2+2x310,2x1+2x2x3=1,x10,x20,x20 \begin{aligned} &max~z=3x_1+2x_2-x_3\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3\ge4,\\ x_1-x_2+2x_3\le10,\\ -2x_1+2x_2-x_3=-1,\\ x1\ge0,x_2\ge0,x2\ge0 \end{aligned}\right. \end{aligned}

首先我們將其化爲標準型:

max z=3x1+2x2x3s.t.={4x1+3x2+x3x4=4,x1x2+2x3+x5=10,2x12x2+x3=1,xj0,1j5 \begin{aligned} &max~z=3x_1+2x_2-x_3\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3&-x_4&&=4,\\ x_1-x_2+2x_3&&+x_5&=10,\\ 2x_1-2x_2+x_3&&&=1,\\ x_j\ge0,1\le j\le 5 \end{aligned}\right. \end{aligned}

係數矩陣中不存在單位矩陣,無法建立初始單純形表。

大M法

加若干個人工變量 x ~x~,他們的目標函數決策係數是一個極小的負數(可以認爲負無窮),以致於人工變量的取值在最優解時不可能不是0,舉一個例子來理解:

解:首先將數學模型

故人爲添加兩個單位向量,得到人工變量單純形法數學模型:

max z=3x1+2x2x3My6My7   (M+)s.t.={4x1+3x2+x3x4+y6=4,x1x2+2x3+x5=10,2x12x2+x3+x7=1,xj0,y6,y7>0 \begin{aligned} &max~z=3x_1+2x_2-x_3-My_6-My_7~~~(M\rightarrow+\infin)\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3&-x_4&&+y_6&&=4,\\ x_1-x_2+2x_3&&+x_5&&&=10,\\ 2x_1-2x_2+x_3&&&&+x_7&=1,\\ x_j\ge0,y_6,y_7>0 \end{aligned}\right. \end{aligned}
M是一個很大的抽象的數,不需要給出具體的數值,可以理解爲它能大於給定的任何一個確定數值,再用前面介紹的單純形法求解該模型。如果最優解對應的基變量中包含人工變量,說明問題無可行解。

兩階段法

第一階段

加入人工變量,第一階段求解的目標函數是隻包含人工變量的輔助問題,令目標函數中其他變量的係數取零,人工變量的係數取某個正的常數(一般取1),在保持原問題約束不變的條件下求這個目標函數極小化的解:
min z=y6+y7s.t.={4x1+3x2+x3x4+y6=4,x1x2+2x3+x5=10,2x12x2+x3+x7=1,xj0,y6,y7>0 \begin{aligned} &min~z=y_6+y_7\\\\ s.t.=&\left\{\begin{aligned} -4x_1+3x_2+x_3&-x_4&&+y_6&&=4,\\ x_1-x_2+2x_3&&+x_5&&&=10,\\ 2x_1-2x_2+x_3&&&&+x_7&=1,\\ x_j\ge0,y_6,y_7>0 \end{aligned}\right. \end{aligned}

人工變量是虛擬的,在最優時不該有取值,必須是0,第一階段的 z ~z~必須是0。

  1. 如果第一階段求解結果爲 z0~z\neq0,說明最優解的基變量中含有非零的人工變量,從而表明原問題無可行解,不必進行第二階段,計算終止。

  2. 如果第一階段求解結果 z=0~z=0,如果輔助問題的最優基變量中沒有人工變量,進入第二階段。

  3. 如果第一階段求解結果 z=0~z=0,如果輔助問題的最優基變量中仍有爲0的人工變量,這表明原問題有退化的情況,在輔助問題的最優的單純形表中有:
    yr+jrarjyj+jJNarjxj=0 y_r+\sum_{j\neq r}a_{rj}y_j+\sum_{j\in J_N}a_{rj}x_j=0
    其中 JN ~J_N~爲非基變量下標集,這時又分兩種情況:

    (i). 若 arj ~a_{rj}~全爲0,則人工變量所在行中有原變量(現在是非基變量)下的元素都是0,這表明原問題的約束方程中有多餘的,將其去掉,轉入第二階段。

    (ii). 若 arj ~a_{rj}~不全爲0,則以 ars ~a_{rs}~爲主元,進行換基迭代,最後轉入轉入第二階段

第二階段

在原問題中去除人工變量,並由第一階段得到的最優解出發,繼續尋找原問題的最優解。即在第一階段的最優單純形表中去掉人工變量所在的行列,將價值係數改換成原問題的價值係數,進一步迭代,求解原問題。

例題

有空再補 to be continue~to~be~continue

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