線性規劃--對偶問題

0、前言

這篇筆記的目的有:
(1)解釋如何判斷一個問題是不是線性規
(2)講解如何構造一個線性規劃的對偶問題
(3)列舉出關於一個線性規劃和它的對偶問題的基礎結論。
這篇筆記不提供任何證明過程,也不解釋任何線性規劃對偶性中隱含的深層幾何意義。這篇筆記的主要目標是解釋機械化地構造對偶問題的流程細節。
除了本文提到的構造方法之外,還有許多其他的方法,但這是我最喜歡的方法。我發現當在幾個問題上嘗試過這個方法後,它還是很容易被記住的。這個方法可能比其他方法要慢要乏味,但它容易記住,且中間步驟可以得到一些有用的副產品。

1、公式

線性規劃是一種最優化問題:在定義域中求解目標函數(objective function)的最大或最小值問題。其中,該目標函數是線性的,定義域(或稱可行集合)是由一系列線性約束確定的。本文不會給出線性規劃的一般公式,而是以一個例子來講解。當用這個例子過一遍流程之後,你將對“什麼是一個線性規劃”有清晰的理解。
maxx1≥0,x2≤0,x3v1x1+v2x2+v3x3s.t.a1x1+x2+x3x1+a2x2a3x3≤b1=b2≤b3

這裏的變量有x1,x2,x3。其餘幾項是常數(例如v1,a2,b3)。
線性規劃包括有目標函數(1)以及一系列的等式或不等式約束(2-4)。

目標函數爲:
f(x)=v1x1+v2x2+v3x3
它是一個線性方程。也就是說,對於向量x1和x2,實常數c1和c2,有f(c1x1+c2x2)=c1f(x1)+c2f(x2)。這對於(1)來說是顯然成立的。目標函數可以是最大化或最小化問題,而這個例子是最大化問題。

每個約束條件的左邊也都是線性方程,右邊都是常數。(遇到右邊含有變量的問題時,你可以通過移項來讓右邊變成常數。)在線性規劃問題中,不能存在嚴格不等式。也就是說,形如x1+x2<3的約束條件是不合法的。

那些限制每個變量是非負、非正或者無限制(unrestricted)的約束條件,稱爲特殊(special)約束。這種約束一般會列在max或min下面。形如x1≥2這樣的不是特殊約束,而x1≥0這樣的就是。在我們這個例子中,x1是非負的,x2是非正的,x3是無限制的(那個條件用於說明這點)。

2、原問題和對偶問題

上述例子(1)通常稱爲原問題(primal)。對於任意一個線性規劃來說,都有一個與之相關聯的對偶問題(dual)。從原問題推導出對偶問題,完全是機械化的操作流程。下面就以例子(1)爲例進行推導。整個推導過程包括七個步驟,前兩步是將原問題轉化爲一個“標準格式”。

Step 1. 將目標函數改寫爲最小化問題。
例子(1)是一個最大化問題,因此將它改寫爲:
minx1≥0,x2≤0,x3−v1x1−v2x2−v3x3
如果一個解能最大化該目標函數,也就能最小化該目標函數的取反值,因此這個操作並不會影響到最終的解集。

Step 2. 將不等式約束改寫爲“小於等於”的形式,且將每個約束條件的常數移項,使得式子右邊爲0。
經過這個操作之後,例子(1)變成:
minx1≥0,x2≤0,x3−v1x1−v2x2−v3x3s.t.a1x1+x2+x3−b1x1+a2x2−b2−a3x3+b3≤0=0≤0

Step 3. 給每個不等式約束定義對應的非負對偶變量,給每個等式約束定義無約束的對偶變量。

對於約束(2)和(4)分別定義變量λ1≥0和λ3≥0。對於約束(3)定義無約束變量λ2。

Step 4. 移除每個約束條件,並將 (對偶變量)∗(約束條件的左邊) 加到目標函數中。使用對偶變量作爲新的變量構造一個最大化問題。
具體到例子上,第一個約束(2)被移除後,將下面一項加到目標函數上。
λ1(a1x1+x2+x3−b1)

對每個約束條件都做同樣的操作之後(除了特殊約束外),並將對偶變量作爲新的變量得到一個最大化問題,有:
maxλ1≥0,λ2,λ3≥0minx1≥0,x2≤0,x3−v1x1−v2x2−v3x3+λ1(a1x1+x2+x3−b1)+λ2(x1+a2x2−b2)+λ3(−a3x3+b3)
可將該問題想象成一個“雙人遊戲”,包括一個“外場玩家”和一個“內場玩家”。外場玩家先行一步,給λ1,λ2,λ3分別選擇一些值(當然要滿足那些特殊約束啦)。內場玩家在固定這些值後,給x1,x2,x3選擇一些值,使得目標函數最小化。內場玩家操作之後,外場玩家又會更新λ1,λ2,λ3的值,使得內場玩家給的最小值儘可能大。

Step 5. 現在目標函數中有許多項形如 (對偶變量)∗(帶有原變量的表達式) ,加上其他只與原變量有關的項。改寫該目標函數,使得其包含一些項形如 (原變量)∗(帶有對偶變量的表達式) ,加上其餘只與對偶變量有關的項。
做完上述操作之後,得到:
在這裏插入圖片描述
做這步操作的時候要十分謹慎,如果你弄錯了一個符號,或者漏掉了任何一項,不僅最終的對偶結果會出錯,並且會變得非常具有誤導性、迷惑性。

Step 6. 移除形如 (原變量)∗(帶有對偶變量的表達式) 的項,並按照下述規則添加新的約束條件:

表達式≥0,如果該原變量是非負的
表達式≤0,如果該原變量是非正的
表達式=0,如果該原變量是無限制的

這一步並不難記,因爲它的原理非常直觀。 例如(11)項: x1(a1λ1+λ2−v1).
因爲x1≥0,可以推出a1λ1+λ2−v1≥0。爲啥嘞?
如果a1λ1+λ2−v1≤0,那麼內場玩家可以選擇x1→+∞(也就是任意大),因此該目標函數的值就會變成−∞。
因此外場玩家若想最大化內場玩家給的最小值問題,他就會選擇λ1,λ2,λ3的值,使得a1λ1+λ2−v1≥0
同理,這個操作應用到例子的剩餘兩項中。 外場玩家必須選擇一些值,使得λ1+a2λ2−v2≤0,否則內場玩家可以通過選擇x2→−∞,使得
x2(λ1+a2λ2−v2)這項趨近於−∞。 最後,因爲x3是無限制的,唯一能使得
x3(λ1−a3λ3−v3)不趨近於−∞的方法,就是選擇一些對偶變量值,使得λ1−a3λ3−v3=0。

經過這些操作之後,我們有了一個船新版本的線性規劃問題。注意到其中的原變量已經消失無蹤了。
maxλ1≥0,λ2,λ3≥0−b1λ1−b2λ2−b3λ3
s.t.a1λ1+λ2−v1λ1+a2λ2−v2λ1−a3λ3−v3≥0≤0=0
Step 7. 如果在第一步時將問題改寫成了最小化問題,那麼現在將上一步得到的結果改寫爲最小化問題。否則跳過此步。
這個操作的結果如下。當然,約束條件可以移得更自然一些。
minλ1≥0,λ2,λ3≥0b1λ1+b2λ2+b3λ3s.t.a1λ1+λ2λ1+a2λ2λ1−a3λ3≥v1≤v2=v3

這就搞定了構造對偶問題的流程啦。作爲練習,你可以把上述的對偶問題作爲原問題,看能否還原回最初的那個問題。

3、重要結論

線性規劃問題可以是無解的(infeasible),無界的(unbounded)或者存在有限最優解(finite optimum)。如果沒有一個解可以滿足所有的約束條件,稱爲無解。比如說,假設在原問題例(1)中有a1=a2=a3=1,且b1=−1,b2+b3≥1。很明顯對於約束條件(2-4)來說是無解的。(可解性只與約束條件有關,與目標函數無關。)
線性規劃問題也可以是無界的。也就是說,對於最小化線性規劃,任何一個可行解,都存在另一個可行解,且另一個解的目標函數值嚴格大於該解的。比如說,假設在例(1)中有a1=a2=1,a3=−1,且b1=b2=b3=0,且最終目標函數中的因子都是正數:v1,v2,v3>0。可以知道,對於任意c∈R,c(0,0,1)都是可行解。該目標函數值爲cv3,我們可以通過使c→+∞來讓目標函數值任意大。理論上說,即使這個問題有很多的可行解,它也不存在最優解。

.	有窮最優解	無界的	無解的有窮最優解	可能	不可能	不可能無界的	不可能	不可能	可能無解的	不可能	可能	可能表1:原問題和對偶問題可能存在的組合情況

如果一個問題是可解的且有界的,那麼它就存在一個非無窮的最優解(finite optimum)(該解可能不唯一)。表1列舉了原問題和對偶問題在可解性上的關係。特別注意到,如果原問題是無界的,那麼它的對偶問題就是無解的。如果對偶問題是無界的,那麼原問題就是無解的。但也有可能兩個問題都是無解的。

原問題的目標函數的最優值記爲VP,對偶問題的最優值記爲VD。線性規劃的主要結論如下。
Theorem 1 (Strong duality) 如果一個線性規劃問題有最優解,那麼它的對偶問題也有,且 VP=VD。

這個結論與原問題和對偶問題的值有關,而與它們的解無關。下一個結論參照了例(1),當然它也能直接應用到其他線性規劃問題上。

Theorem 2 (Complementary slackness) 令 (x1,x2,x3) 和 (λ1,λ2,λ3) 分別爲原問題和對偶問題的解,如果它們是最優解的話,當且僅當:
λ1(a1x1+x2+x3−b1)=0
λ2(x1+a2x2−b2)=0
λ3(−a3x3+b3)=0


x1(a1λ1+λ2−v1)=0
x2(λ1+a2λ2−v2)=0
x3(λ1−a3λ3−v3)=0

這些約束被稱作complementary slackness conditions(互補鬆弛條件)。
其中,前三個約束可以從(8-10)中得出,後三個可以從(11-13)中得出。
也就是說,在構造對偶問題的過程中,得到了這麼一個副產品——互補鬆弛條件。
這個互補鬆弛條件有時會寫作另一種形式。比如,我們可以將
λ1(a1x1+x2+x3−b1)=0

寫作
λ1>0⇒a1x1+x2+x3−b1=0.

或者等價於(取逆否)
a1x1+x2+x3−b1<0⇒λ1=0.

當有原問題的最優解時,互補鬆弛條件定義了一個系統或多項式去解出、或識別其對偶問題的最優解(後者解同樣需要滿足對偶可行約束),反之亦然。

轉自:https://blog.csdn.net/mr_zing/article/details/79569501

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