16. 對偶理論(三)對偶單純形法


兒童節快樂呀!!!

這一部分我們考慮原問題是標准型的問題,並且介紹對偶單純形法。

在上一節的強對偶定理的證明中,對標准型問題使用單純形法,定義了對偶變量\(p\)\(p^T=c^T_BB^{-1}\)。然后由原問題最優性條件\(c^T-c^T_BB^{-1}A\geq 0^T\)得到了等價表達的對偶可行性條件\(p^TA\leq c^T\)。那么我們之前介紹的單純形法可以看作是在保證原問題可行的前提下去尋找對偶可行的解。那么反過來,我們也可以從對偶可行的前提下去尋找原問題可行的解,這種算法稱為對偶算法。在接下來,將介紹對偶單純形法。並且說明這個算法事實上求解了對偶問題,更近一步,它是從對偶問題的一個基本可行解移動到另一個。

對偶單純形法

考慮一個標准型的線性規划問題,假設矩陣\(A\)是行滿秩(為什么這個假設具有一般性,可參考線性規划中的幾何(三))。記\(B\)為基本矩陣,它包含了矩陣\(A\)的m個線性無關的列。考慮下表(與之前介紹的單純形法中的表一樣)


更詳細的有

不過,在這里不再要求\(B^{-1}b\)是非負的,那就說明此時的解是一個原問題的基本解但不一定是可行解。但是,我們要求\(\bar c\geq 0\)成立,也相當於\(p^TA\leq c^T\)成立(具體見上一節強對偶定理證明)。 這說明現在有了一個對偶問題的可行解,並且對偶問題的目標函數值為\(p^Tb=c^T_BB^{-1}b=c^T_Bx_B\),這恰好就是上表中的左上角元素的相反數。如果不等式\(B^{-1}b\geq 0\)也成立,那么這個解也將是一個原問題的可行解,並且目標函數值相同,這說明我們找到了原問題和對偶問題的最優解。如果不等式\(B^{-1}b\geq 0\)並不成立,那么我們將尋找下一個基矩陣。

找到滿足\(x_{B(l)}<0\)\(l\),考慮表中的第\(l\)行為pivot 行\((x_{B(l))},v_1,\cdots,v_n)\),其中\(v_i\)\(B^{-1}A_i\)的第\(l\)個元素。對於滿足\(v_i<0\)的所有\(i\)(如果存在的話),我們計算比率\(\bar c_i/|v_i|\),然后記\(j\)為這些比率中最小的那個的下標(為什么這么選呢,后面會說),也就是說\(v_j<0\)

\[\frac{\bar c_j}{|v_j|}=\min_{\{i\mid v_i<0\}}\frac{\bar c_i}{|v_i|}. \]

\(v_j\)為pivot 元素。注意,\(x_j\)一定是一個非基本解,因為\(v_j<0\)(如果是基本解,那么\(B^{-1}A_j\)中除一個元素為1外全為0)。然后就可以進行基變換了,列\(A_j\)進基而列\(A_{B(l)}\)出基。這里進行基變換的方式與之前介紹的單純形法完全一樣:將pivot行的一定倍數加到其他行,使得其他行中pivot列的元素均為0。需要注意的是,為了使得判斷數中pivot列所對應的元素為0,我們需要對pivot行乘以\(\bar c_j/|v_j|\),然后將其加到第零行。那么對於每一個\(i\),新的判斷數將變為

\[\bar c_i+v_i\frac{\bar c_j}{|v_j|}, \]

注意這個值是非負的,對於\(v_i\geq 0\)\(i\),顯然成立,而對於\(v_i<0\),有

\[\begin{align*} &\bar c_i+v_i\bar c_j/|v_j| \\ \leq &\bar c_i+v_i\bar c_i/|v_i| \\ = &\bar c_i-\bar c_i \\ = & 0. \end{align*} \]

這說明了在新的表中,判斷數維持非負,也即對偶問題的可行性仍然成立。

例:

由於\(x_{B(2)}<0\),則選擇第2行為pivot行,其中\(x_2\)\(x_3\)所在的列的元素為負值,然后比較比值\(6/|-2|\)\(10/|-3|\),其中較小的是\(6/|-2|\)。因此進基變量為\(x_2\),然后進行初等行變換得到下面的表:

目標函數值增加到了3,同時\(B^{-1}b\geq 0\),說明已經找到了一個最優解。

注意,pivot元素\(v_j\)總是選擇負值的,而判斷數\(\bar c_j\)總是非負的。我們不妨先暫時假設\(\bar c_j\)是正值,為了用0替換掉\(\bar c_j\),需要將pivot行的一個正數倍加到第零行。由於\(x_{B(l)}\)是負的,那么這將會加一個負值給左上角,也即對偶問題的目標函數值增加。因此,只要每個非基本變量的判斷數都不是0,那么對偶問題的目標函數值將會隨着每一次變基而增加。如果不存在循環出現,那么算法最終停止將會有如下的兩種可能:

  1. 得到\(B^{-1}b\geq 0\),與此同時得到了最優解。
  2. pivot行的所有\(v_1,\cdots,v_n\)都是非負的。這說明對偶問題的最優值是\(+\infty\)而原問題是不可行的(若pivot行所有值都是正值,那么我們可以將這一行的盡可能大的倍數加到第零行,使得第零行中的\(\bar c^T\)都為正值,這說明滿足對偶問題的可行域。現在來關注表的左上角變為了什么,由於\(x_{B(l)}<0\),它的盡可能大的倍數加到第零行后左上角將會變為\(-\infty\),這說明對偶問題的目標函數值為\(+\infty\),由上一節的推論可得原問題是不可行的)。

對偶單純形法一次迭代的步驟:

  1. 存在基本矩陣\(B\),並且所有的判斷數都是非負的。
  2. 觀察\(B^{-1}b\),若所有值都非負,則得到一個最優基本可行解,算法結束;反之,選擇一個滿足\(x_{B(l)}<0\)\(l\)
  3. 考慮表中的第\(l\)\((x_{B(l)}),v_1,\cdots,v_n\)。若所有\(v_i\geq 0\),則對偶問題的最優值為\(+\infty\),算法結束。
  4. 對滿足\(v_i<0\)的所有\(i\),計算比率\(\bar c_i/|v_i|\),找到比率最小的那一個並且記下標為\(j\)。進行基變換\(A_{B(l)}\)出基而\(A_j\)進基。
  5. 將第\(l\)行的一定倍數加到其他行,使得pivot列對應的元素變為0,同時第\(l\)行除以\(v_j\)使得pivot行所對應的元素變為1。

下來我們考慮pivot列的判斷數\(\bar c_j=0\)的情形。在這種情況,第零行將不會產生變化,對偶問題的目標函數值也會保持不變。這時候算法就可能產生循環,但是我們可以通關使用一定的pivot規則避免循環,比如:

對偶單純形的 Lexicographic pivot 規則:

  1. 選擇任意一個滿足\(x_{B(l)}<0\)\(l\),令第\(l\)行為pivot行。
  2. 對於所有滿足\(v_i<0\)的列,每列的所有元素分別除以\(|v_i|\),然后選擇 lexicographic最小的列(lexicographic的定義可參考單純形法(四))。如果有多個最小的列,選擇下標最小的那個。

如果在最初的單純形表中,除第零列以外每一列都是lexicographically 正的,並且在對偶單純形法中使用了上述的pivot規則,那么算法在有限步內停止(still thinking about how to prove it??)。

什么時候用對偶單純形法

很直觀的一種情形是,我們已經知道了一個對偶問題的基本可行解。例如,假設我們已經有一些線性規划問題的最優基矩陣,然后我們想要求解另一些只是\(b\)不同的線性規划問題。但是由於\(b\)不同,我們已知的那些基本矩陣可能不會使原問題的約束成立。但是對於對偶問題,改變\(b\)並不會影響對偶的可行性(因為改變\(b\)並不改變\(\bar c\))。因此,在這種情況,相比於重新求解一個新問題,選擇使用對偶單純形法計算一個已知一個基矩陣的問題會更方便。

對偶單純形法的幾何表示

假設現在有一個標准型的問題,並且矩陣\(A\)是行滿秩的。記\(B=[A_{B(1)}\,\cdots\,A_{B(m)}]\)為基矩陣,它確定了原問題的基本解\(x_B=B^{-1}b\)。同樣的,這個\(B\)確定了對偶問題的變量\(p\)

\[p^TA_{B(i)}=c_{B(i)},\quad i=1,\cdots,m. \]

m個未知變量以及m個線性相關的等式,因此\(p\)的值是唯一的。對於對偶問題,由於只有不等式約束,因此對偶問題有效的約束的個數將等於對偶變量的個數。這說明我們現在得到了一個對偶問題的基本解。如果\(p\)還滿足\(p^TA\leq c^T\),那么\(p\)就是對偶問題的一個基本可行解。

綜上,一個基本矩陣\(B\)不僅與原問題的基本解相關也與對偶問題的基本解相關,如果解還是可行的,那么這個解就是一個基本可行解。下來說一下對偶單純形法的幾何解釋:在每一次迭代,我們有一個對偶問題的基本可行解,並且每兩個相鄰的迭代都有相同的\(m-1\)個線性無關的約束有效(\(m-1\)個變量的判斷數也是相同的且同為0)。因此,兩次連續迭代的基本可行解要么是毗鄰的要么是相同的(基改變但解不變的可行性存在)。

例:
考慮如下的原問題(左)及它的對偶問題(右):

原問題的解的維度是4維,如果消去變量\(x_3\)\(x_4\),那么將得到原問題的一個等價問題:

這個等價問題(左)以及對偶問題(右)的可行域如下圖:

原問題共有5個不同的基本解(也就有5個不同的基矩陣),分別為點\(A,B,C,D,E\)。同樣的與這些基矩陣相關的對偶問題的5個基本解,分別為右圖的\(A,B,C,D,E\)

例如,若選擇\(A_3\)\(A_4\)為基本矩陣的列,那么得到原問題的一個不可行的基本解\(x=(0,0,-2,-1)\)(點A)。那么對應的對偶問題的基本解可以通過求解\(p^TA_3=c_3\)\(p^TA_4=c_4\)得到\(p=(0,0)\)。這是對偶問題的一個基本可行解,並且可以被當作初始可行解。那么最初的單純形表為

然后使用對偶單純形法迭代兩次得到如下的表

上述的三個表的基本解的變化路徑是\(A\to B\to C\)如兩個圖中箭頭所示。

我們發現對偶單純形法是從一個對偶問題的基本可行解移動到下一個基本可行解。這是否能說對偶單純形法就是相當於對對偶問題應用單純形法?然而,事實並不是。准確來說對偶單純形法是單純形法的一個專門用來處理線性不等式約束的變形。

對偶問題的退化性

假設我們仍然處理的是標准型的問題且矩陣\(A\)是行滿秩的。任意的基本矩陣\(B\)對應的對偶基本解為\(p^T=c^T_BB^{-1}\)。在這個解下,對偶問題的約束\(p^TA_j=c_j\)成立當且僅當\(c^T_BB^{-1}A_j=c_j\)成立,也即判斷數\(\bar c_j=0\)。由於\(p\)是m維的,對偶退化意味着有超過m個判斷數為0。由於m個基本變量的判斷數必然為0,那么得到對偶退化說明存在非基本變量的判斷數為0。

下面的例子將給出基矩陣和原問題的解和對偶退化解的情形。

例:
考慮原問題(左)和它的對偶問題(右):

消去\(x_3\)\(x_4\)之后,得到與原問題等價的一個問題:

等價問題(左)和對偶問題(右)的可行域如下圖:

原問題共有6個不同的基矩陣,但是僅有4個不同的基本解。而對於對偶問題,6個不同的基矩陣對應了6個不同的基本解。例如,令\(A_3\)\(A_4\)組成基矩陣,對於原問題有\(x_1=x_2=0\),而對應的對偶問題通過求解\(p^TA_3=c_3\)\(p^TA_4=c_4\)得到\(p=(0,0)\),這是對偶問題的一個基本可行解。如果現在基矩陣的列變為\(A_1\)\(A_3\),對於原問題仍然有\(x_1=x_2=0\),而對於對偶問題通過求解\(p^TA_1=c_1\)\(p^TA_3=c_3\)得到\(p=(0,3/2)\),它仍然是一個基本可行解(圖中的點\(A'\))。如果基矩陣的列變為\(A_2\)\(A_3\),原問題的解不變,而對偶問題的解變為\(p=(0,-1)\),這不是一個可行解(圖中的點\(A''\))。

上面的例子說明了不同的基矩陣對應的原問題的基本解可能是相同的,但是對應的對偶問題的解是不同的,這些解可能是可行的也可能是不可行的。

總結

總結一下這一節說明的基矩陣和標准型問題基本解的一些性質:

  1. 每個基矩陣確定一個原問題的基本解以及對偶問題的一個基本解\(p^T=c^T_BB^{-1}\)
  2. 對偶問題的基本解是可行的當且僅當所有判斷數都是非負的。
  3. 判斷數為0對應着對偶問題的約束是有效的。
  4. 對偶問題是退化的當且僅當存在一些非基本變量的判斷數為0。

參考文獻: Introduction to Linear Optimization by Dimitris Bertsimas & John N. Tsitsiklis.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM