作者 dylanfrank(滔滔)
這裡簡要總結一下線性規劃的單純形演算法,做如下幾個方面的總結,其餘以後再來填坑.
先看這樣乙個問題
我們很容易用下面的數學語言來描述這個問題ma
xzs.
t6x1
+4x2
x1+2
x2−x
1+x2
x2xi
=5x1
+4x2
≤24≤6
≤1≤2
≥0如果我們用幾何來描述這個問題的話則是這樣的
其中陰影部分表示可行域(feasible region)
黑色加粗的線條表示邊界
兩個邊界的交點稱為角點(corner-point cp)
在可行域上的角點稱謂角點可行解(cpf)
共享一邊的角點稱為角點鄰接角點(adj cpf)
我們在這裡不加證明的指出(以後有空再填坑),線性規劃的最優解一定在cpf,並且有優性測試 (optimal test),若某乙個cpf的相鄰角點的(目標函式)值都不比這個cpf優,則這個cpf就是最優解.
由此我們不難得到乙個簡單的演算法:
從乙個初始cpf開始,沿著比它更優的這就是單純形演算法,不過幾何表示畢竟不能讓計算機簡單執行,因此我們需要將其轉化為代數形式。adj cpf 前行,若找到乙個 cpf 這個cpf的所有 adj cpf不比 它優,則這就是最優解.比如上例中會在c點找到最優解
線性規劃的標準代數表達,(本文採用《introduction to operation research》清華大學影印版) 的表示.ma
xzs.
t∑i=
1naj
ixix
i=∑i
=1nc
ixi≤
bj(j
=1,2
,…,m
)≥0,
i=1,
2,3,
…,n
我們後面會發現其他的形式都可以很容易表示為標準形式.
我們看到,由上面幾何版的******x 演算法,我們首先需要乙個初始解,為了方便找到初始解,同時也為了能讓計算機好進行運算,需要把不等式轉化為等式,這裡我們引入鬆弛變數(slack variable),對每個函式約束我們都引入乙個鬆弛變數(slack variable) xn
+j,x
n+j≥
0 比如上面的例子
6x引入鬆弛變數(以後簡寫sv) x31+4x
2≤24
, 滿足 x3
≥0
6x可以發現這個式子和上面的約束是等價的(將x31+4x
2+x3
=24
≥0移到一邊)
引入sv 的形式成為增廣形式,(argument form),第乙個例子的增廣形式為ma
xzs.
t6x1
+4x2
+x3x
1+2x
2+x4
−x1+
x2+x
5x2+
x6xi
=5x1
+4x2
=24=6
=1=2
≥0這種形式的解稱為增廣解,需要說明的是這兩種解是一致的,增廣解的增廣變數恰好是用原式表示的,如最優解中一定有:
x3基解(basic solution):這個對應的是原始形式中的角點解的增廣.下面簡單說一下,基解的性質:=24−(
6x1+
4x2)
#basic var (基本變數的數目)=函式限制的數目。
# non-basic var = #var - #basic var = 線性規劃系統的自由度
non-basic var =0
如果 基本變數滿足非負限制,則基解稱為基本可行解(basic feasible solution bf),我們後面需要關注的就是這個基本可行解bf,這對應的是原始形式中的cpf的擴充。(非鬆弛變數為0是初始解)
下面介紹單純形演算法:
初始化,解除限制,引入鬆弛變數,將目標函式寫成(z結合具體的例子就好理解了,如上面的第乙個例子−(su
mni=
1cix
i)=0
) 記作第0行
最優性測試,選出第0行中係數最小的變數(負的最多),判斷係數是否小於0,若是結束輸出最優解,否則進入迭代,稱選中變數為進基變數(變數不為0,成為基本變數)
進入迭代,進基變數對應的列稱為軸列,pivot col,進行最優比率測試,判斷,進基變數能最大增加多少. 對於軸列中係數大於0的列,用等式右邊值除以係數得到每個等式的比率.,最小的乙個作為瓶頸行,稱為軸行(pivot row)
用軸行進行高斯肖元,回到第二步.
第一次迭代,x1
的係數最小,且為負,選為pivot col,對其進行最小比率測試,第一行最小,選做pivot row,用它進行高斯肖元,得到第二次迭代的**. x3
成為非基變數…依次下去得到第3次迭代結果.
需要注意的是第一列標明的變數對應的值為右邊的解值.第一行變數中為正的變數取0.
處理等式限制 ∑a
i∗xi
=b,有兩種方法,一種是大m 方法,引入人工變數,一種是將其表示為如下形式∑a
i∗xi
∑ai∗
xi≤b
≥b大m方法下面再介紹∑a
i∗xi
≤−b,
b>
0 ,乘乙個負號變為 ∑−
ai∗x
i≥b
如0.6x1
+0.4x2
≥6, 引入 x3
>
0 ,轉化為等式
0.6x1+
0.4x2−
x3=6
,這是等價的
目標函式乘-1即如x
i≥−l
,令x′
i=xi
−l 即
xi∈(
−inf
,inf
) , 令x
i=x+
i−x−
i,x+
i,x−
i>
0 ,需要注意的是若有很多變數均是無界限制,可以只取乙個變數代替x−
i ,而不必對每個無界變數都引入兩個變數.
未完待續…..
線性規劃 單純形演算法例項
例 解最優化問題 min x1 x2 2x1 x2 12 x1 2x2 9 xi 0 i 1,2,3,4 改寫成標準形式,引入鬆弛變數 2x1 x2 x3 12 x1 2x2 x4 9 xi 0,i 1,2,3,4 列出單純形表 x1x2 x3x4bx3 2110 12x412 019c 1100 ...
線性規劃 單純形法
線性規劃是求乙個線性多項式的最值。線性規劃有兩種形式 1.標準型 不等式型 2.鬆弛型 除了非負約束,其他都是等式變數名稱 在res x y z中。1.基本變數,基本變數是res。2.非基本變數,如x,y,z。單純形法 適用於鬆弛型。單純形法是不斷通過迭代來增大最大值。達到無法更新時,就是最大值。這...
線性規劃 單純形法
單純形法 x method 單純形法的思路總結 其它情況 參考文獻 目標函式是線性的,約束條件是線性等式或不等式,每個變數都取實數值.minimize ct xsubject to ax bx 0 begin text c x text a x b x geq 0 end minimize subj...