應用運籌學基礎:線性規划 (4) - 對偶與對偶單純形法


這一節課講解了線性規划的對偶問題及其性質。

 

引入對偶問題

考慮一個線性規划問題:$$\begin{matrix}\max\limits_x & 4x_1 + 3x_2 \\ \text{s.t.} & 2x_1 + 3x_2 \le 24 \\ & 5x_1 + 2x_2 \le 26 \\ & x \ge 0\end{matrix}$$ 我們可以把這個問題看作一個生產模型:一份產品 A 可以獲利 4 單位價格,生產一份需要 2 單位原料 C 和 5 單位原料 D;一份產品 B 可以獲利 3 單位價格,生產一份需要 3 單位原料 C 和 2 單位原料 D。現有 24 單位原料 C,26 單位原料 D,問如何分配生產方式才能讓獲利最大。

但假如現在我們不生產產品,而是要把原料都賣掉。設 1 單位原料 C 的價格為 $y_1$,1 單位原料 D 的價格為 $y_2$,每種原料制定怎樣的價格才合理呢?

首先,原料的價格應該不低於產出的產品價格(不然還不如自己生產...),所以我們有如下限制:$$2y_1 + 5y_2 \ge 4 \\ 3y_1 + 2y_2 \ge 3$$ 當然也不能漫天要價(也要保護消費者利益嘛- -),所以我們制定如下目標函數:$$\min_y \quad 24y_1 + 26y_2$$ 合起來就是下面這個線性規划問題:$$\begin{matrix} \min\limits_y & 24y_1 + 26y_2 \\ \text{s.t.} & 2y_1 + 5y_2 \ge 4 \\ & 3y_1 + 2y_2 \ge 3 \\ & y \ge 0 \end{matrix}$$ 這個問題就是原問題的對偶問題。

 

對偶問題

對於一個線性規划問題(稱為原問題,primal,記為 P) $$\begin{matrix} \max\limits_x & c^Tx \\ \text{s.t.} & Ax \le b \\ & x \ge 0 \end{matrix}$$ 我們定義它的對偶問題(dual,記為 D)為 $$\begin{matrix} \min\limits_x & b^Ty \\ \text{s.t.} & A^Ty \ge c \\ & y \ge 0 \end{matrix}$$ 這里的對偶變量 $y$,可以看作是對原問題的每個限制,都用一個變量來表示。

原問題限制條件的不等號,和對偶問題限制條件的不等號,是相互關聯的。假設原問題是一個最大化問題,設 $a_i^T$ 表示 $A$ 中的第 $i$ 行,我們有以下結論:

1. 若限制條件為 $a_i^Tx \le b_i$,那么對偶問題中有 $y_i \ge 0$

證明略,根據對偶問題的定義即可獲得。

2. 若限制條件為 $a_i^Tx \ge b_i$,那么對偶問題中有 $y_i \le 0$

把不等式轉換為標准形式顯然有 $-a_i^Tx \le -b_i$。令 $\bar{y}_i = -y_i$,用 $\bar{y}_i$ 表示原問題的第 $i$ 個限制,令 $y' = \begin{bmatrix} y_1 & \dots & y_{i-1} & \bar{y}_i & y_{i+1} & \dots & y_m \end{bmatrix}^T$,那么對偶問題可以寫為 $$\begin{matrix} \min\limits_{y'} & \begin{bmatrix} b_1 & \dots & b_{i-1} & -b_i & b_{i+1} & \dots & b_m \end{bmatrix} y' \\ \text{s.t.} & \begin{bmatrix} a_1 & \dots & a_{i-1} & -a_i & a_{i+1} & \dots & a_m \end{bmatrix} y' \ge c \\ & y' \ge 0 \end{matrix}$$ 將 $y_i = -\bar{y}_i$ 代回式中即可獲得。

3. 若限制條件為 $a_i^Tx = b_i$,那么對偶問題中對 $y_i$ 無限制

$a_i^Tx = b_i$ 可以看作 $a_i^Tx \ge b_i$ 與 $a_i^Tx \le b_i$,用 $\bar{y}_i$ 和 $\tilde{y}_i$ 表示這兩個限制,並令 $y' = \begin{bmatrix} y_1 & \dots & \bar{y}_i & \tilde{y}_i & \dots & y_m \end{bmatrix}^T$,那么對偶問題可以寫為 $$\begin{matrix} \min\limits_{y'} & \begin{bmatrix} b_1 & \dots & b_i & -b_i & \dots & b_m \end{bmatrix} y' \\ \text{s.t.} & \begin{bmatrix} a_1 & \dots & a_i & -a_i & \dots & a_m \end{bmatrix} y' \ge c \\ & y' \ge 0 \end{matrix}$$ 令 $y_i = \bar{y}_i - \tilde{y}_i$,代回上面的式子中即可獲得原來的對偶問題的形式。容易看出 $y_i$ 是可正可負的,沒有限制。

4. 若 $x_i \ge 0$,那么對偶問題中有 $A_i^Ty \ge c_i$
5. 若 $x_i \le 0$,那么對偶問題中有 $A_i^Ty \le c_i$
6. 若 $x_i$ 無限制,那么對偶問題中有 $A_i^Ty = c_i$

這三條的推導和前三條類似,這里不再贅述。

 

對偶問題的性質

這一部分講解線性規划中對偶問題的若干性質。

對稱性

P 的對偶是 D,那么 D 的對偶也是 P。如果我們把對偶問題變成標准形式,有 $$\begin{matrix} \max\limits_y & y^T(-b) \\ \text{s.t.} & (-A^T)y \le -c \\ & y \ge 0 \end{matrix}$$ 它的對偶問題是 $$\begin{matrix} \min\limits_x & -c^Tx \\ \text{s.t.} & -Ax \ge -b \\ & x \ge 0 \end{matrix}$$ 把目標函數和限制都乘以 -1 之后就是原問題。

弱對偶定理 (weak duality)

設 $x$ 和 $y$ 分別是原問題和對偶問題的可行解,我們有 $c^Tx \le b^Ty$。這是因為,由 $y$ 的可行性我們有 $A^Ty \ge c$,即 $y^TA \ge c^T$,兩邊同乘以 $x$ 有 $y^TAx \ge c^Tx$;由 $x$ 的可行性我們還有 $Ax \le b$,那么 $y^TAx \le y^Tb$,合起來就是 $c^Tx \le b^Ty$。

由弱對偶定理我們馬上獲得以下兩條性質。

最優性

若 $x$ 和 $y$ 分別是原問題和對偶問題的可行解,而且 $c^Tx = b^Ty$,那么 $x$ 和 $y$ 分別是原問題和對偶問題的最優解。

無界性

若原問題有可行解無最優解(就是目標函數值可以取無窮大),那么對偶問題無可行解;若對偶問題有可行解無最優解,那么原問題無可行解。

當然啦,也有兩個問題都無解的情況發生,比如下面這個線性規划 $$\begin{matrix} \max\limits_x & x_1 + x_2 \\ \text{s.t.} & x_1 - x_2 \le 1 \\ & -x_1 + x_2 \le -2 \\ & x \ge 0 \end{matrix}$$ 它的對偶問題是 $$\begin{matrix} \min\limits_y & y_1 - 2y_2 \\ \text{s.t.} & y_1 - y_2 \ge 1 \\ & -y_1 + y_2 \ge 1 \\ & y \ge 0 \end{matrix}$$

強對偶定理 (strong duality)

若原問題(或對偶問題)有有限最優解,那么對偶問題(或原問題)也有有限最優解,且二者最優解相等。

可以通過單純形法的計算過程來輔助證明。

假設引入松弛變量之后,原問題變為 $$\begin{matrix} \max\limits_x & c^Tx \\ \text{s.t.} & \bar{A}x = b \\ & x \ge 0 \end{matrix}$$ 畫出初始的單純形表 $$\begin{array}{c|cc|c} & c^T & 0 & 0 \\ \hline x^*_B & A & I & b \end{array}$$ 最終的單純形表為 $$\begin{array}{c|cc|c} & c^T - c^T_B\bar{A}_B^{-1}A & -c^T_B\bar{A}_B^{-1} & -c^T_B\bar{A}_B^{-1}b \\ \hline x^*_B & \bar{A}_B^{-1}A & \bar{A}_B^{-1} & \bar{A}_B^{-1}b \end{array}$$ 由於 $x^*_B$ 是原問題最優的基變量組合,那么檢驗數均非正,即 $$c^T \le c^T_B\bar{A}_B^{-1}A \\ -c^T_B\bar{A}_B^{-1} \le 0$$ 不妨取 $y^{*T} = c^T_B\bar{A}_B^{-1}$,根據上面兩個式子,我們有 $A^Ty^* \ge c$ 以及 $y^* \ge 0$,即 $y^*$ 是一個可行解。根據單純形法,我們知道 $x^*_B = \bar{A}_B^{-1}b$,$x^*_N = 0$,那么對偶問題的目標函數值為 $b^Ty^* = y^{*T}b = c^T_B\bar{A}_B^{-1}b = c^T_Bx^*_B = c^Tx^*$,即我們找到了一對可行的 $x$ 和 $y$,使得原問題和對偶問題的目標函數值相等,那么根據弱對偶定理,這兩個可行解分別是原問題和對偶問題的最優解。

互補松弛定理 (complementary slackness)

若 $x^*$ 與 $y^*$ 分別是原問題和對偶問題的可行解,那么以下兩點等價:

1. $x^*$ 和 $y^*$ 分別是原問題和對偶問題的最優解;

2. $(y^{*T}A - c^T)x^* = 0$ 且 $y^{*T}(Ax^*-b) = 0$。

由 2 推出 1 很簡單,把括號都打開后有 $y^{*T}b = y^{*T}Ax^* = c^Tx^*$,根據弱對偶定理得 $x^*$ 和 $y^*$ 分別是原問題和對偶問題的最優解。

由 1 推出 2 也不難,根據弱對偶定理中的推導,我們有 $y^{*T}b \ge y^{*T}Ax^* \ge c^Tx^*$。而 $x^*$ 和 $y^*$ 分別是原問題和對偶問題的最優解,那么 $y^{*T}b = c^Tx^*$,不等式就會全部取等,即  $y^{*T}b = y^{*T}Ax^* = c^Tx^*$,加上括號就行了。

這個定理揭示了原始問題的最優解和對偶問題的最優解之間的關系,它們對限制條件的滿足是“一緊一松”的。

 

對偶單純形法

利用強對偶定理,我們可以為單純形法作出另一種解釋。

我們知道,單純形法的停止條件是所有檢驗數非正(如果是 min 問題就是所有檢驗數非負)。而從強對偶定理的推導中我們可以看到,所有檢驗數非正時,我們就能構造一個對偶問題的可行解,使得原問題和對偶問題的目標函數值相等,那么它們分別是原問題和對偶問題的最優解。也就是說,單純形法是在保證原問題可行解的情況下,嘗試構造對偶問題的可行解(這個可行解讓目標函數值與原問題相同),如果構造成功,那么兩個都是最優解。這種單純形法又稱為原始單純形法。

相應地,我們可以設計對偶單純形法:在保證對偶問題可行解(所有檢驗數非正,如果是 min 問題就是所有檢驗數非負)的情況下,嘗試構造原始問題的可行解(這個可行解讓目標函數值與對偶問題相同),如果構造成功,那么兩個都是最優解。

 

下面以 min 問題為例,簡要說明對偶單純形法的計算步驟:

1. 找到一組基,使得所有檢驗數非負;

2. 如果單純形表中 b 的那一列出現負數,說明當前基不可行(因為有 $x \ge 0$ 的限制),選擇負數中 b 的絕對值最大的那一行(設為第 $i$ 行),對應的變量 $x_i$ 作為出基變量(要把該變量從負數調到 0);

3. 假設第 $i$ 行中,$x_j$ 的系數為 $a_j$,檢驗數為 $d_j$,那么在所有 $a_j < 0$ 的變量中,選擇 $d_j/a_j$ 絕對值最小的那一列,對應的變量 $x_k$ 作為入基變量,回到 2。如果所有 $a_j \ge 0$,那么原問題無可行解;

4. 如果單純形表中 b 的那一列均非負,說明構造出了一個原問題的可行解,算法結束。

為什么要選擇 $a_k < 0$ 的變量呢?我們寫出出基變量和非基變量之間的關系式 $$\sum_{j \in N} a_jx_j + x_i = b_i$$ 如果 $a_k > 0$,那么為了把 $x_i$ 從負數調到 0,又要保證等式成立,$x_k$ 只能從 0 變成負數,就不能入基了;相反,如果 $a_k < 0$,那么為了讓等式成立,$x_k$ 會從 0 變成正數,就可以入基,向原始問題的可行解靠近一步。

為什么要選擇 $d_j/a_j$ 絕對值最小的變量呢?我們寫出 $x_k$ 和其它變量的關系式,以及目標函數和檢驗數的關系式 :$$x_k = \frac{b_i - x_i}{a_k} - \sum_{j \in N, j \ne k} \frac{a_j}{a_k}x_j \\ z = v + \sum_{j \in N}d_jx_j = \sum_{j \in N, j \ne k}(d_j - \frac{d_k}{a_k}a_j)x_j - \frac{d_k}{a_k}x_i + (v+ \frac{d_k}{a_k}b_i)$$ 為了保持對偶問題的可行解,我們需要保證變量替換之后,檢驗數仍然非負,即 $$-\frac{d_k}{a_k} \ge 0 \\ d_j-\frac{d_k}{a_k}a_j \ge 0$$ 第一個式子顯然滿足,因為原檢驗數 $d_k \ge 0$,且 $a_k < 0$。第二個式子在 $a_j$ 為正數時顯然滿足,$a_j$ 為負數時,需要 $\frac{d_j}{a_j} \le \frac{d_k}{a_k}$ 才能滿足,這就是選擇 $d_j/a_j$ 絕對值最小的變量的原因。

 

舉一個例子 $$\begin{matrix}\min\limits_{x} & 9x_1 + 5x_2 + 3x_3 \\ \text{s.t.} & 3x_1 + 2x_2 - 3x_3 \ge 3 \\ & 2x_1 + x_3 \ge 5 \\ & x \ge 0\end{matrix}$$ 加入松弛變量后,問題轉化為 $$\begin{matrix}\min\limits_{x} & 9x_1 + 5x_2 + 3x_3 \\ \text{s.t.} & 3x_1 + 2x_2 - 3x_3 - x_4 = 3 \\ & 2x_1 + x_3 - x_5 = 5 \\ & x \ge 0\end{matrix}$$ 繪制單純形表,第一次迭代:$$\begin{array}{c|ccccc|c} & 9 & 5 & 3 & 0 & 0 & 0 \\ \hline x_4 & -3 & -2 & 3 & 1 & 0 & -3 \\ x_5 & -2 & 0 & -1 & 0 & 1 & -5 \end{array}$$ 選擇 $x_5$ 出基. 由於 $3/1 < 9/2$,選擇 $x_3$ 入基,第二次迭代:$$\begin{array}{c|ccccc|c} & 3 & 5 & 0 & 0 & 3 & -15 \\ \hline x_4 & -9 & -2 & 0 & 1 & 3 & -18 \\ x_3 & 2 & 0 & 1 & 0 & -1 & 5 \end{array}$$ 選擇 $x_4$ 出基. 由於 $3/9 < 5/2$,選擇 $x_1$ 入基,第三次迭代:$$\begin{array}{c|ccccc|c} & 0 & 13/3 & 0 & 1/3 & 4 & -21 \\ \hline x_1 & 1 & 2/9 & 0 & -1/9 & -1/3 & 2 \\ x_3 & 0 & -4/9 & 1 & 2/9 & -1/3 & 1 \end{array}$$ 此時最后一列第二、三行均非負,迭代結束。原問題的最優解為 $x_1 = 2, x_2 = 0, x_3 = 1$,目標函數值為 $21$。


免責聲明!

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



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