運籌學緒論
運籌學是一門應用於管理有組織系統的科學,根據問題的要求,通過數學分析與計算,做出綜合性的合理安排,以期達到資源的最優化利用。
運籌學考慮系統的整體優化、多學科的配合以及模型方法的應用,其研究可以分爲以下幾個步驟:
1.分析與表述問題。
2.建立模型
3.對問題求解
4.對模型和由模型導出的解進行檢驗
5.建立對解的有效控制
6.方案的實施。
其中,建模是運籌學方法的核心和精髓。
線性規劃與單純形法
線性規劃(Linear programming,簡稱LP),是運籌學中研究較早、發展較快、應用廣泛、方法較成熟的一個重要分支,它是輔助人們進行科學管理的一種數學方法。研究線性約束條件下線性目標函數的極值問題的數學理論和方法。
線性規劃模型的組成要素和特徵
決策變量 指決策者爲實現規劃目標採取的方案、措施,是問題中要確定的未知量。
目標函數 指問題要達到目標的要求,表示爲決策變量的函數。
約束條件 指決策變量取值時受到的各種限制,表示爲決策變量的等式或不等式。
定義:目標決策變量爲可控的連續變量,目標函數和約束條件都是線性的,這類模型稱爲線性規劃模型。
線性規劃問題的一般形式
1.標量形式
決策變量 {xi∣i=1,2,...,n}
目標函數 max(min) z=c1x1+c2x2+...+cnxn
約束條件 s.t.=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧a11x1+a12x2+...+a1nxn≤(=,≥)b1,a21x1+a22x2+...+a2nxn≤(=,≥)b2, ⋮am1x1+am2x2+...+amnxn≤(=,≥)bm,xj≥0 或 xj≤0 或 xj無約束
一般用 n 表示決策變量的個數, m 代表約束等式/不等式的個數
通常情況下要求 m<n ,否則可能導致沒有可行解
2.向量形式
決策變量 X=(x1 x2 … xn)T
目標函數 max(min) z=CX
約束條件 s.t.=⎩⎪⎨⎪⎧j=1∑nxjPj≤(=,≥)bX≥0
其中 C=(c1 c2 ... cn),Pj=(a1j a2j … amj)T,b=(b1 b2 ... bm)T.
注意列向量 P≥Q 意味着 ∀i Pi≥Qi,矩陣也類似
3.矩陣形式
max(min) z=CXs.t.={AX≤(=,≥)bX≥0其中 C=(c1 c2 ... cn),A=⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2………a1na2n⋮amn⎦⎥⎥⎥⎤,X=⎝⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎞,b=⎝⎜⎜⎜⎛b1b2⋮bn⎠⎟⎟⎟⎞
稱爲約束方程組變量的係數矩陣,簡稱爲約束變量的係數矩陣。
線性規劃問題的標準形式
對於一般的線性規劃模型缺乏統一的結構,這在問題的求解上無疑增加了一定的難度,因此,我們在定義線性規劃的標準形式如下:
決策變量 {xi∣i=1,2,...,n}
目標函數 max(min) z=c1x1+c2x2+...+cnxn
約束條件 s.t.=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧a11x1+a12x2+...+a1nxn=b1,a21x1+a22x2+...+a2nxn=b2, ⋮am1x1+am2x2+...+amnxn=bm,x1≥0,x2≥0,…xn≥0
其中 bj≥0,1≤j≤m.
矩陣形式
max z=CXs.t.={AX=bX≥0
其中A∈Rm×n是一個行滿秩矩陣
標準形式的轉化
1.目標函數
目標函數的極小值⇔目標函數相反數的最大值,即 min z=CX⇒max z′=−CX
2.約束條件
i=1∑naijxj≤bi ⇒ i=1∑naijxj+xn+i=bi (xn+i≥0),其中 xn+i 稱爲鬆弛變量
i=1∑naijxj≥bi ⇒ i=1∑naijxj−xn+i=bi (xn+i≥0),其中 xn+i 稱爲剩餘變量
鬆弛變量可以理解爲資源的剩餘,剩餘變量可以理解爲需求的溢出
bi≤0 ⇒ bi=−bi′,aij=−aij′ 其中 1≤j≤n , bi′≥0
3.決策變量
無約束決策變量:xj 無限制⇒xj=xj′−xj′′ ,其中xj′,xj′′≥0
非正變量:xj≤0⇒xj=−xj′,其中 xj′≥0
線性規劃問題的解
可行解:如果一個非負矩陣 X 滿足約束方程,則稱矩陣 X 爲可行解。
可行域:可行解組成的集合Ω={X∣AX=b,X≥0,X∈Rn}稱爲可行域,可行域中使得目標函數達到最大值的可行解稱爲最優解。
基:若 B 是 A 的一個 m×m 階的滿秩子矩陣,則稱 B 爲線性規劃問題的一個基。B 中的每一個列向量用 Pj 表示,注意這裏基是一組係數矩陣。
B=⎣⎢⎢⎢⎡b11b21⋮bm1b12b22⋮bm2………b1mb2m⋮bmm⎦⎥⎥⎥⎤=(P1,P2,…,Pm)
基解:假設 B 爲一個基,可知存在 x1,…,xm 使得 x1P1+…xmPm=b,則稱X=(x1,…,xm,0,…,0)T爲基 B 的基解,其中 x1,…,xm 稱爲基變量,其餘的決策變量稱爲非基變量。
基可行解:若滿足變量非負約束條件的基解稱爲基可行解。
可行基:假對應於基可行解的基稱爲可行基。
退化解:當基解中的非零分量小於 m 個時,該基解是退化解
解的維恩圖表示:
線性規劃問題的解法
1.圖解法(略) 2.單純形法
預備知識
凸集:假設 C⊂Rn.若對任意 X,Y∈C 和 0<λ<1 ,都有 λX+(1−λ)Y⊂C ,則稱 C 爲一個凸集(Convex set)。從直觀上講,凸集沒有凹入部分,其內部也沒有空洞。
凸組合:設向量 {xi},i=1,2,…,n,如果有實數λi≥0 且 i=1∑nλi=1,則稱 i=1∑nλixi 爲向量 {xi} 的凸組合(凸線性組合)
頂點:假設 C 是凸集,且 X∈C .若不存在 X1,X2∈C 使得 X=λX1+(1−λ)X2 ,其中0<λ<1,則 X 稱爲 C 的一個頂點.
凸集內點與其頂點的關係:若 C 是有界的凸集,則對任意 X∈C ,都可以表示成 D 的頂點的凸組合。
幾個基本定理(證明不考)
定理1:若線性規劃問題存在可行解,則其可行域是凸集。
證明:我們我們考察如下的標準形式的線性規劃問題:
max z=CXs.t.={AX=bX≥0
兩個不同的解是 X 和 Y 滿足 AX=AY=b,X≥0,Y≥0 ,則對於任意 0<λ<1,我們有 A(λX+(1−λ)Y)=b,λX+(1−λ)Y≥0 .所以可行域爲凸集。
定理2:線性規劃問題的基可行解對應線性規劃問題可行域的頂點。
引理 1:線性規劃問題的可行解 X 爲基可行解的充要條件是 X 的正分量所對應的係數列向量是線性無關的.(由基可行解的定義可知必要性是顯然的. )
證明:假設X爲一個基可行解,若 X 不是一個頂點,則可行域中存在兩個不同的點 Y,Z 使得 X=λY+(1−λ)Z,0<λ<1 ,不妨設 X 只有前 k 個分量大於0,顯然 Y,Z 後 n−k 個分量都爲0,我們有
i=1∑kxiPi=b, i=1∑kyiPi=b, i=1∑kziPi=b.
由於 P1,P2,…,Pk 線性無關(也就是方程只有一個解),我們得到 X=Y=Z ,與我們的假設矛盾,所以X一定是一個頂點。
如果假設X是一個頂點,並且假設其只有前 k 個分量大於0,若果 X 不是一個基可行解,則由引理可知 P1,P2,…,Pk 線性相關,說以存在 k 個不爲零的實數使得
d1P1+d2P2+⋯+dkPk=0D=(d1,d2,…,dk,0,…,0)T
顯然有 AX=0→A(X+sD)=A(X−sD)=b ,對任意實數 s 都成立,∃s>0,X+sD≥0 ∧ X−sD≥0,則 X 是可行域中 X+sD 和 X−sD 的中點,這與X是一個頂點矛盾,所以X一定是一個基可行解。
定理3:若線性規劃問題存在最優解,則一定存在一個基可行解是最優解。
引理2:若X是一個最優解,且 X=λY+(1−λ)Z ,其中 Y,Z 是兩個可行解,0<λ<1,則 CX=CY=CZ .(反證法易得)
證明:設X是一個最優解,且不妨假設其只有前k個分量大於0,若X是一個基可行解,則證畢;否則存在k個不全爲0的實數使得(5)式成立,且A(X+rD)=A(X−sD)=b 對任意實數 s,r 都成立,同時X+rD和X−sD至少有一個正分量的數量小於 k。則由上一個引理可知我們得到了一個新的最優解,且這個最優解的正分量的數量小於 k,若新的到的最優解依然不是基可行解,重複上面的過程,我們可以得到一個新的最優解,這個最優解的正分量的數量小於 k,以此類推,經過有限步之後,我們肯定可以得到一個基可行解. 證畢.
定理4:若線性規劃問題有可行解,則必有基可行解
定理5:若線性規劃問題有最優解,則必有最優基可行解
單純形法
確定初始基可行解
當線性規劃問題全部爲“≤”時,在化爲標準型時,加入的m個鬆弛變量所構成的單位矩陣就可以構成一組基:設給定線性規劃問題
max z=j−1∑ncjxjs.t.=⎩⎪⎨⎪⎧j=1∑nxjPj≤bxj≥0
在第 i 個約束條件上加上鬆弛變量 ssi,(i=1,…,m),化爲標準形式
max z=j−1∑ncjxj+0i=1∑mxsis.t.=⎩⎪⎨⎪⎧j=1∑naijxj+xsi=b,(i=1,2,…,m)xj≥0
其約束方程的係數矩陣爲
⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2………a1na2n⋮amn10⋮001⋮0………00⋮1⎦⎥⎥⎥⎤
這個係數矩陣中含有一個單位向量(Ps1,Ps2,…,Psm),只要以這個單位矩陣作爲基,就可以立即解出基變量值 xsi=bi ,因爲 bi≥0 ,因此 X=(0,…,0,b1,…,bm)T就是一個基可行解。
當線性規劃問題中約束條件包含"=“或”≥"時,化爲標準型後一般不包含單位矩陣,這時常用添加人工變量的方法人爲構造一個單位矩陣作爲基,稱爲人工基,具體方法在後面討論。
基可行解的轉換
不失一般性,設初始基可行解爲
X(0)=(x10,x20,…,xm0,0,…,0n−m個)T=(XBXN),A=(B N)
其中B是對應的可行基,相應的,設C=(CB,CN),我們有AX(0)=(B,N)(XBXN)=BXB=b,我們有XB=B−1b,XN=0,
此時目標函數值 z(0)=CX=(CB CN)(XBXN)=CBXB−CNXN=CBB−1b.
原始方程組的增廣形式爲:
P1 P2 … Pm Pm+1 … Pj… Pn b⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2……⋱…a1ma2m⋮amma1,m+1a2,m+1⋮am,m+1………a1ja2j⋮amj………a1na2n⋮amnb1b2⋮bm⎦⎥⎥⎥⎤
因爲 P1,P2,…,Pm 是 Rm 的一組基,所以其餘的Pj都可以用這個基來表示,我們可以將Pj替換爲BB−1Pj,所以有 B(XB−θB−1Pj)+θPj=b,我們假設XB−θB−1Pj≥0,那麼我們得到了一個新的可行解
X~=(XB−θB−1Pj0)+θej
其中,ej 爲第 j 個分量爲1其餘分量爲0的單位列向量,這個可行解的目標函數值爲
z=CX~=(CB CN)((XB−θB−1Pj0)+θej)=CBXB+θ(cj−CBB−1Pj)=z(0)+θ(cj−CBB−1Pj)
我們令 σj=cj−CBB−1Pj,則z~=z(0)+θσj,σj 被稱爲檢驗數。
如果 σj>0,則新的可行解可以使目標函數變大,且 θ 應該越大越好. 此時注意到爲了保證X~是一個可行解,應該有 XB−θB−1Pj≥0,這個(B−1Pj)很難處理,我們不妨在求解之前通過初等行變換把B化爲單位矩陣(想一想,爲什麼可以這麼做?),即化成
P1P2…PmPm+1…Pj… Pn b⎣⎢⎢⎢⎡10⋮001⋮0……⋱…00⋮1a1,m+1a2,m+1⋮am,m+1………a1ja2j⋮amj………a1na2n⋮amnb1b2⋮bm⎦⎥⎥⎥⎤
假設B是一個單位矩陣且b>0,那麼 θ 的最大值顯然是 θ∗=min{aijbi∣∣∣∣aij>0,1≤i≤m},不妨設θ∗=arjbr,則(P1,…,Pr−1,Pr+1,…,Pm,Pj)構成一組新的基,這個基的基解和目標函數值爲
X(1)=(XB−θ∗B−1Pj0)+θ∗ej,z(1)=z(0)+θ∗σj
最優性檢驗和解的判別
(1) 當 ∀ σj≤0時,表明現有頂點的目標函數的值比起相鄰各頂點的目標
函數值都大,現以頂點對應的基可行解即爲最優解。(爲什麼局部最優解等於全局最優解?)
(2)當 ∀ σj≤0∧∃ σr=0時,X~=(XB−θB−1Pj0)+θej 和 X(0)的線性組合都是最優解,因此有無限多個解
(3)當∃ σj>0∧(∀ θ>0) XB−θB−1Pj≥0時,目標函數值可以取到無限大,最優解無界。
單純性法的計算步驟
- 將問題化爲標準型
- 求出線性規劃的初始基可行解,列出初始單純形表
|
c |
c1 … … cm cm+1 … … cn |
|
|
CB |
XB |
x1 … … xm xm+1 … … xn |
b |
θ=aikbi |
c1 |
x1 |
1 … … 0 a1,m+1 …… a1n |
b1 |
θ1 |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
⋮ |
cm |
xm |
0 … … 1 am,m+1 …… amn |
bm |
θm |
|
σ |
0 … … 0 σj=cj−∑ciaij |
|
|
-
進行最優性檢驗
如果表中所有檢驗數 σj≤0,則表中的基可行解就是問題的最優解,計算停止。否則繼續下一步。
-
從一個基可行解轉換到另一個目標值更大的基可行解,列出新的單純形表
a. 確定換入基的變量。選擇 σin=max{σj ∣ σj>0} 對應的變量 xin 作爲換入變量。
b. 確定換出變量。選擇 θout=min{ajkbj ∣∣∣∣ ajk>0} 對應的變量 xout 作爲換出變量
c. 用 xin 替換基變量中的 xout ,得到一個新的基。對應新的基可以找出一個新的基可行解,將基變量對應的矩陣化爲單位矩陣,並相應地可以畫出一個新的單純形表。
單純形法的進一步討論
前面討論了在標準型中係數矩陣有單位矩陣,很容易確定一組基可行解。在實際問題中有些模型並不含有單位矩陣,爲了得到一組基向量和初基可行解,在約束條件的等式左端加一組虛擬變量,得到一組基變量。這種人爲加的變量稱爲人工變量,構成的可行基稱爲人工基,用大M法或兩階段法求解,這種用人工變量作橋樑的求解方法稱爲人工變量法。
比如如下線性規劃問題:
s.t.=max z=3x1+2x2−x3⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3≥4,x1−x2+2x3≤10,−2x1+2x2−x3=−1,x1≥0,x2≥0,x2≥0
首先我們將其化爲標準型:
s.t.=max z=3x1+2x2−x3⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3x1−x2+2x32x1−2x2+x3xj≥0,1≤j≤5−x4+x5=4,=10,=1,
係數矩陣中不存在單位矩陣,無法建立初始單純形表。
大M法
加若干個人工變量 x ,他們的目標函數決策係數是一個極小的負數(可以認爲負無窮),以致於人工變量的取值在最優解時不可能不是0,舉一個例子來理解:
解:首先將數學模型
故人爲添加兩個單位向量,得到人工變量單純形法數學模型:
s.t.=max z=3x1+2x2−x3−My6−My7 (M→+∞)⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3x1−x2+2x32x1−2x2+x3xj≥0,y6,y7>0−x4+x5+y6+x7=4,=10,=1,
M是一個很大的抽象的數,不需要給出具體的數值,可以理解爲它能大於給定的任何一個確定數值,再用前面介紹的單純形法求解該模型。如果最優解對應的基變量中包含人工變量,說明問題無可行解。
兩階段法
第一階段
加入人工變量,第一階段求解的目標函數是隻包含人工變量的輔助問題,令目標函數中其他變量的係數取零,人工變量的係數取某個正的常數(一般取1),在保持原問題約束不變的條件下求這個目標函數極小化的解:
s.t.=min z=y6+y7⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧−4x1+3x2+x3x1−x2+2x32x1−2x2+x3xj≥0,y6,y7>0−x4+x5+y6+x7=4,=10,=1,
人工變量是虛擬的,在最優時不該有取值,必須是0,第一階段的 z 必須是0。
-
如果第一階段求解結果爲 z=0,說明最優解的基變量中含有非零的人工變量,從而表明原問題無可行解,不必進行第二階段,計算終止。
-
如果第一階段求解結果 z=0,如果輔助問題的最優基變量中沒有人工變量,進入第二階段。
-
如果第一階段求解結果 z=0,如果輔助問題的最優基變量中仍有爲0的人工變量,這表明原問題有退化的情況,在輔助問題的最優的單純形表中有:
yr+j=r∑arjyj+j∈JN∑arjxj=0
其中 JN 爲非基變量下標集,這時又分兩種情況:
(i). 若 arj 全爲0,則人工變量所在行中有原變量(現在是非基變量)下的元素都是0,這表明原問題的約束方程中有多餘的,將其去掉,轉入第二階段。
(ii). 若 arj 不全爲0,則以 ars 爲主元,進行換基迭代,最後轉入轉入第二階段
第二階段
在原問題中去除人工變量,並由第一階段得到的最優解出發,繼續尋找原問題的最優解。即在第一階段的最優單純形表中去掉人工變量所在的行列,將價值係數改換成原問題的價值係數,進一步迭代,求解原問題。
例題
有空再補 to be continue