顯示具有 演算法 標籤的文章。 顯示所有文章
顯示具有 演算法 標籤的文章。 顯示所有文章

2/26/2016

[數值方法] Forward Euler's Method 與 其改良型 求解 ODE

給定 初始值問題(Initial Value Problem, IVP)
\[
y'(t) = f(t,y(t)),\;\;\;\; y(0) = y_0
\] 一般而言,上述 一般的 IVP 問題並沒有辦法寫下解析解,但我們可以退而求其次詢問是否有合適的數值方法求解上述 初始值問題,最為基本的想法是利用所謂的 Forward Euler method:

Forward Euler Method:
\[
y_{n+1} = y_n + h \cdot f(t_n, y_n)
\]其中 $t_n = n h$。令終止時間 $T$ 在 $n$ 步之後到達,則 $T = n h$。

Comment:
1. 上式中 $h$ 稱為 迭代步長 (step size)。
2. $t_{n+1} = t_n + h$
3. 儘管 Forward Euler Method 非常簡便,但其數值誤差相當大,以下我們看個實際例子:


Example: 
考慮 IVP $ y'=t-y $ 且 $ y(0) = 0 $ ,
(a) 試求解上述 IVP
(b) 現在令 $h := 0.1$ ,試求用 Forward Euler Method 求解 $y_2$
(Note: $y_2 = y(t_2) = y(2h)$)
(c) 比較 (a) 與 (b)

Solution (a):
首先改寫原式:
\[y'\left( t \right) =  - y\left( t \right) + t
\]由上式可知此為線性常係數 ODE 其解可立即求得
\[\begin{array}{l}
y\left( t \right) = {e^{ - 1}}y\left( 0 \right) + \int_0^t {{e^{ - 1\left( {t - s} \right)}}sds} \\
 \Rightarrow y\left( t \right) = 0 + \underbrace {{e^{ - t}}\int_0^t {{e^s}sds} }_{ = {e^{ - t}}\left( {{e^t}(t - 1) + 1} \right)}\\
 \Rightarrow y\left( t \right) = (t - 1) + {e^{ - t}}
\end{array}\]
Solution (b):
由 $y_0 := y(0)=0$ 出發,則我們可以計算
\[\begin{array}{*{20}{l}}
{{y_1} = {y_0} + h \cdot f({t_0},{y_0})}\\
{ \Rightarrow {y_1} = 0 + \left( {0.1} \right) \cdot \left( {0 \cdot h - {y_0}} \right)}\\
{ \Rightarrow {y_1} = \left( {0.1} \right) \cdot \left( {0 - 0} \right) = 0}
\end{array}\]同理,我們接著計算 $y_2$
\[\begin{array}{l}
{y_2} = {y_1} + h \cdot f({t_1},{y_1})\\
 \Rightarrow {y_2} = {y_1} + h \cdot \left( {1 \cdot h - {y_1}} \right)\\
 \Rightarrow {y_2} = 0 + \left( {0.1} \right) \cdot \left( {0.1 - 0} \right)\\
 \Rightarrow {y_2} = 0.01
\end{array}
\]
Solution (c)
由 (a) 可知
\[\begin{array}{l}
y\left( {2h} \right) = (2h - 1) + {e^{ - 2h}}\\
 \Rightarrow y\left( {0.2} \right) =(0.2 - 1) + {e^{ - 0.2}} \approx {\rm{0.01873}}
\end{array}
\]但由 (b) 可知我們得到的 $y_2 = y(2h) =0.01$ 亦即具有誤差
\[
|y(2h) - y_{2}| = |0.01873 - 0.01| = 0.0873
\]

以下為簡單的 MATLAB code 實現 Forward Euler Method:

t0 = 0; %Initial time
y0 = 0; %Initial value
h = 0.1; %Step size
tfinal = 1; %Final time

F = @(t,y) t - y;

y = y0;
yout = y;
for t = 0: h: tfinal-h
    y = y + h * F(t,y); %Euler Method
    yout =[yout; y];

end

t_interval = 0: h: tfinal
plot(t_interval,  yout, 'o-')




Improved Euler Method
為了改良上述誤差過大的問題,我們可採用以下 Predictor-Corrector 架構來改善 Forward Euler Method,亦即我們首先透過 Forward Euler Method 建構

Predictor Equation
\[
\tilde{y}_{n+1} := y_n + h \cdot f(t_n,y_n)
\]接著再修正上述的預測結果:
Corrector  Equation:
\[
y_{n+1} = y_n + \frac{h}{2}(f(t_n,y_n) + f(t_{n+1}, \tilde{y}_{n+1}))
\]
我們以下再次使用前述例子來看看改良型 Euler 是否有得到更加精準的結果:

Example (Revisit): 
考慮 IVP $y'=t-y$ 且 $y(0)=0$ ,
(a) 令 $h := 0.1$ ,試求用 Improved Euler Method 求解 $y_2$

Solution:
由 $y_0 = 0$ 開始,為了計算 $y_1$ 我們先透過 predictor 計算 $\tilde{y}_{1} $:
\[
\tilde{y}_{n+1} := y_n + h \cdot f(t_n,y_n) = 0
\]接著用Corrector  Equation:
\[\begin{array}{l}
{y_1} = {y_0} + \frac{h}{2}\left( {f({t_0},{y_0}) + f({t_1},{{\tilde y}_1})} \right)\\
 \Rightarrow {y_1} = 0 + \frac{h}{2}\left( {\left( {{t_0} - {y_0}} \right) + \left( {{t_1} - {{\tilde y}_1}} \right)} \right)\\
 \Rightarrow {y_1} = \frac{h}{2}\left( {\left( {0 \cdot h - 0} \right) + \left( {1 \cdot h - 0} \right)} \right)\\
 \Rightarrow {y_1} = \frac{h}{2}h = \frac{1}{2}{\left( {0.1} \right)^2} = 0.005
\end{array}
\]有了 $y_1$ 我們再透過 Predictor 計算 $\tilde{y}_{2} $:
\[\begin{array}{l}
{{\tilde y}_2} = {y_1} + h \cdot f({t_1},{y_1})\\
 \Rightarrow {{\tilde y}_2} = 0.005 + h \cdot \left( {{t_1} - {y_1}} \right)\\
 \Rightarrow {{\tilde y}_2} = 0.005 + h \cdot \left( {1 \cdot h - 0.005} \right)\\
 \Rightarrow {{\tilde y}_2} \approx {\rm{0.01450}}
\end{array}\]再用 Corrector 計算 $y_2$
\[\begin{array}{l}
{y_2} = {y_1} + \frac{h}{2}(f({t_1},{y_1}) + f({t_2},{{\tilde y}_2}))\\
 \Rightarrow {y_2} = 0.005 + \frac{h}{2}(\left( {{t_1} - {y_1}} \right) + \left( {{t_2} - {{\tilde y}_2}} \right))\\
 \Rightarrow {y_2} = 0.005 + \frac{{0.1}}{2}(\left( {1 \cdot h - 0.005} \right) + \left( {2 \cdot h - {\rm{0.01450}}} \right))\\
 \Rightarrow {{y}_2} \approx {\rm{0.0190}}
\end{array}
\]現在回憶前述例子中,我們知道 $0.01873$ 此表明此例中,improved Euler 確實大幅降低計算誤差。

Comments:
1. 實際數值應用中,大多數數值方法採用所謂 Runge-Kutta Method 來獲取更加精確或者穩定的數值解,但未免離題,在此不做贅述。

3/20/2014

[最佳化理論] Conjugate Direction Methods (2) - The Conjugate Gradient Algorithm for Quadratic Objective function

OK,現在接續前面兩篇
1. [最佳化理論] Conjugate Direction Methods (0) -Theory
2. [最佳化理論] Conjugate Direction Methods (1) - Basic Algorithm for Quadratic Objective function

這次要來解決如何找到 Conjugate Direction的辦法。幫助我們找到 Conjugate Direction 的方法稱作 共軛梯度演算法 (Conjugate Gradient algorithm) 。

此演算法 藉由 梯度的幫助,使得在任意跌代步驟中,Conjugate Direction 可以由 前一個跌代步的方向 與 現在的 梯度做線性組合來計算出來。且用此法所產生的 Direction 可以保證是 每個方向都是互為 Q-conjugate。故名為 Conjugate Gradient Algorithm;最後我們會給出一個以 二階具有 $n=3$ 個變數的目標函數 作為例子來展示這套方法。

===============

如前所述,考慮標準二階目標函數
\[
J(u) = \frac{1}{2} u^T Q u - u^T b, \ u \in \mathbb{R}^n
\]
其中 $Q = Q^T >0$。

現在我們來看看Conjugate Gradient Algorithm 是如何找到 Conjugate Direction:

對 初始跌代步:$k=0$。
給定任意初始值 $x^{(0)}$ ,且設定 初始方向為最陡坡度(steepest descent)方向,亦即

$d^{(0)} = - \bigtriangledown J(u^{(0)})$

因此 $ u^{(1)} = u^{(0)} + \alpha_0 d^{(0)}$

其中 $\alpha_0$ 一般而言是由line search (一般而言使用MATLAB fminsearch 指令較為簡便)得到,亦即 $\alpha_0 = \arg \min J(x^{(0)} + \alpha d^{(0)})$
不過如果是 考慮 二階目標函數中,則我們可以求得精確的 $\alpha_k$ 如下式
\[
\alpha_0 = \arg \min J(x^{(0)} + \alpha d^{(0)}) =  - \frac{{\bigtriangledown^T J({u^{(k)}}){d^{(k)}}}}{{{d^{(k)T}}Q{d^{(k)}}}}
\] 在算出 $ u^{(1)} $ 之後,接著我們移動到下一個跌代步。
因為我們要找到 $d^{(1)}$ 且 此方向與 $d^{(0)}$ 互為Q-conjugate。所以如前所述我們選擇
\[
d^{(1)} = \text {linear combination of } \bigtriangledown J(u^{(1)}) \ \& \ d^{(0)}
\]亦即,對 $k+1$ 跌代步的時候 我們選
\[ d^{(k+1)} = - \bigtriangledown J(u^{(k+1)}) + \beta_k \cdot d^{(k)} \ \ \ ,k=0,1,2,... \]
其中 $\beta_k = - \frac{{\bigtriangledown^T J({u^{(k+1)}}){d^{(k)}}}}{{{d^{(k)T}}Q{d^{(k)}}}}$

=========================
我們將 Conjugate Gradient Algorithm (for Quadratic Objective Function) 總結如下8個步驟:

  1. 在 $k=0$ 時候給定初始值 $u^{(0)}$
  2. 計算初始梯度 $ \bigtriangledown J(u^{(0)})$ ,且設令其為初始方向 $d^{(0)} = - \bigtriangledown J(u^{(0)})$ :注意,如果 $\bigtriangledown J(u^{(0)}) = 0$ 則跌代停止
  3. 決定 $\alpha_k = - \frac{{\bigtriangledown^T J({u^{(k)}}){d^{(k)}}}}{{{d^{(k)T}}Q{d^{(k)}}}}$
  4. 計算 $ u^{(k+1)} = u^{(k)} + \alpha_k d^{(k)}$
  5. 計算下一個跌代的梯度:  $ \bigtriangledown J(u^{(k+1)})$;如果 $\bigtriangledown J(u^{(0)}) = 0$ 則跌代停止
  6. 計算 $\beta_k = - \frac{{\bigtriangledown^T J({u^{(k+1)}}){d^{(k)}}}}{{{d^{(k)T}}Q{d^{(k)}}}}$
  7. 計算下一個Conjugate 方向 $d^{(k+1)} = - \bigtriangledown J(u^{(k+1)}) + \beta_k \cdot d^{(k)}$
  8. 令 $k=k+1$ 並重覆到step 3

下面我們將給個例子來驗證上述的方法。

=================

Example:
考慮下列二階 目標函數
\[
J({u_1},{u_2},{u_3}) = \frac{3}{2}u_1^2 + 2u_2^2 + \frac{3}{2}u_3^2 + u_1u_3 + 2u_2u_3 - 3{u_1} - {u_3}
\] 令初始值為 $u^{(0) } = [0, \ 0, \ 0]^T$ 求使用 Conjugate Gradient Method 找出最佳解。

Solution

首先觀察二階 目標函數,我們可以將其改寫成矩陣型式如下

$J(u) = \frac{1}{2} u^T Q u - u^T b$

$\Rightarrow J(u)= \frac{1}{2}\left[ {\begin{array}{*{20}{c}}{{u_1}}&{{u_2}}&{{u_3}}\end{array}} \right]\left[ {\begin{array}{*{20}{c}}3&0&1\\0&4&2\\1&2&3\end{array}} \right]\left[ {\begin{array}{*{20}{c}}{{u_1}}\\{{u_2}}\\{{u_3}}\end{array}} \right] - \left[ {\begin{array}{*{20}{c}}{{u_1}}&{{u_2}}&{{u_3}}\end{array}} \right]\left[ {\begin{array}{*{20}{c}}3\\0\\1\end{array}} \right]$

接著我們計算梯度:

$ \bigtriangledown J(u) = Q u - b = \left[ {\begin{array}{*{20}{c}}{3{u_1} + {u_3} - 3}\\{4{u_2} + 2{u_3}}\\{{u_1} + 2{u_2} + 3{u_3} - 1}\end{array}} \right]$

在使用 Conjugate Gradient Method之前我們可以先看看其最佳解落在哪裡:
由一階必要條件  $\bigtriangledown J(u^*)=0 $ 與二階充分條件 $\bigtriangledown^2 J(u^*) >0 $ 可知最佳解為

 $u^* = Q^{-1}b = [1, 0, 0]^T$

現在我們開始用 Conjugate Gradient Method 來看看會
現在由步驟2可知初始梯度為

$ \bigtriangledown J(u^{(0)}) = Q u^{(0)} - b = \left[ {\begin{array}{*{20}{c}}{ - 3}\\{0}\\{ - 1}\end{array}} \right]$

故 初始Conjugate direction

$d^{(0)} = -\bigtriangledown J(u^{(0)}) =\left[ {\begin{array}{*{20}{c}}{  3}\\{0}\\{  1}\end{array}} \right] $

接著由步驟3 我們可以計算 初始 $\alpha_k$

 $\alpha_0 = - \frac{{\bigtriangledown^T J({u^{(0)}}){d^{(0)}}}}{{{d^{(0)T}}Q{d^{(0)}}}} = \frac{10}{36} = 0.2778$

接著由步驟4 : $ u^{(k+1)} = u^{(k)} + \alpha_k d^{(k)}$ 可以算出

$ u^{(1)} = u^{(0)} + \alpha_0 d^{(0)} = [0.8333,\ 0, \ 0.2778]^T$

接著由步驟5:計算下一個跌代的梯度:  $ \bigtriangledown J(u^{(k+1)})$

$ \bigtriangledown J(u^{(1)}) = Q u^{(1)} - b =  [-0.2222,\ 0.5566, \ 0.6667]^T$

接著由步驟6:計算  $\beta_k $

$\beta_0 = - \frac{{\bigtriangledown^T J({u^{(1)}}){d^{(0)}}}}{{{d^{(0)T}}Q{d^{(0)}}}} = 0.08025$

再者由步驟7 :計算下一個Conjugate 方向 $d^{(k+1)} $

 $d^{(1)} = - \bigtriangledown J(u^{(1)}) + \beta_0 \cdot d^{(0)} = [0.4630, -0.5556, -0.5864]^T$

再來回到步驟3 重複前述步驟

最後會得到 $u^{(3)} = u^{(2)} + \alpha_2 d^{(2)} = [1, \ 0, \ 0]^T$ 且 $\bigtriangledown J(u^{(3)}) = 0$

上述表示在第三步的時候收斂到最佳解。此結果確實說明了 Conjugate Direction Method 保證對二階 具有 n變數的 目標函數 能夠在 n次跌代之內收斂。此例 n=3 故在第3次跌代的時候即收斂到最佳解。

ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd.

---
延伸閱讀

3/19/2014

[最佳化理論] Conjugate Direction Methods (1) - Basic Algorithm for Quadratic Objective function

再接續前面介紹過的 [最佳化理論] Conjugate Direction Methods (0) -Theory

這次我們要介紹 Basic Conjugate Direction Methods  對於 標準二階目標函數的應用。現在考慮下列標準 二階 具有 n 個變數的目標函數
\[
J(u) = \frac{1}{2} u^T Q u + b^T u +c
\] 其中 $Q=Q^T >0$ 且 $u \in \mathbb{R}^n$

Comments:
注意到標準二階目標函數,我們知道 其真正的最佳解為何。 (why?)
由 一階必要條件 FONC: $\bigtriangledown J(u^*) =0$ 可知
\[
\bigtriangledown J^T(u) = \frac{1}{2} \left[ {{{\left( {Qu} \right)}^T} + {u^T}Q} \right] + {b^T} = 0
\]因為 $Q^T = Q$ ,上式可改寫
\[ \bigtriangledown J(u) = Q u + {b} = 0 \Rightarrow u^* =  - {Q^{ - 1}}b \]再者檢驗二階充分條件 SOSC (Hessian Condition): ($\bigtriangledown^2 J(u^*) > 0$)

$ \bigtriangledown^2 J(u) =Q $ 又因為我們說  $Q$ 為正定矩陣。故 $ \bigtriangledown^2 J(u) =Q >0 $; 亦即 $u^* =  - {Q^{ - 1}}b$ 為 Strong Local minimum (在此例中, $u^* =  {Q^{ - 1}}b$ 亦為 Global minimum)。

------------------

對於上述的標準二階目標函數而言,Conjugate Direction Algorithm 設計如下

============================
Basic Conjugate Direction Algorithm

給定初始值 $u^{(0)}$ 與 Q-conjugate 方向 $d^{(0)}, d^{(1)}, ..., d^{(n-1)}$;對 $k \geq 0$

$ {{g^{(k)}}} = \bigtriangledown J(u^{(k)}) = Q u^{(k)} - b$

${\alpha _k} =  - \frac{{{g^{(k)T}}{d^{(k)}}}}{{{d^{(k){{T}}}}{{Q}}{d^{(k)}}}} $

${u^{(k + 1)}} = {u^{(k)}} + {\alpha _k}{d^{(k)}}$
============================

回憶之前我們曾經提過 Conjugate Direction Method對標準二階 n變數的 目標函數可以在 n 步內找到最佳解。在此我們並不證明這個重要結果。只把它紀錄如下:

=============
Theorem: Quadratic Convergence Property
考慮  $J(u) = \frac{1}{2} u^T Q u +  b^T u  + c$  其中 $Q=Q^T >0$ 且 $u \in \mathbb{R}^n$ 。那麼對任意初始值 $u^{(0)}$ ,上述 Basic Conjugate Direction Algorithm 可以最多在 $n$ 步收斂到最佳解 $u^{*} = -Q^{-1} b$
=============
Proof: Omitted.

=============

至此我們知道了基本的Basic Conjugate Direction Algorithm,也知道其確實十分有效率 (至少對二階具有 $n$ 個變數的目標函數 由前述定理可知 在 $n$ 步之內收斂 );但問題是如果我們回頭檢查  Conjugate Direction Algorithm 會發現儘管有辦法給定初始值,其 Q-conjugate direction仍然未定。下一篇將會介紹 如何 在 跌代過程中順便把 Conjugate direction 也產生出來的演算法 (此法稱作 Conjugate Gradient Method )。

ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd.

====
延伸閱讀

[最佳化理論] Conjugate Direction Methods (2) - The Conjugate Gradient Algorithm for Quadratic Objective function

[最佳化理論] Conjugate Direction Methods (0) -Basic Theory

這次要介紹的是最佳化理論中的 一類 算法;叫做 Conjugate Direction Methods (共軛方向演算法)。此次我們主要focus在理論部分。實際演算法實現留待之後再介紹
(想要看算法的讀者建議直接閱讀 [最佳化理論] Conjugate Direction Methods (2) - The Conjugate Gradient Algorithm for Quadratic Objective function )

注意這邊我用 Method"s",表示所謂的Conjugate Direction Method有很多種。所以我們稱之為這一類。在介紹之前先說說這類 計算方法 有甚麼特色
  1. 對於 2階 具有n個變數的 目標函數 (Quadratic Objective function with n variables) 可以在 n步驟內求解。(也就是對二階目標函數收斂性很好 (求解的計算速度夠快) )
  2.  一般而言常用的 Conjugate Direction Gradient Algorithm 方法不需要計算 Hessian Matrix
  3. Conjugate Direction Methods 不須計算反矩陣
Comments:
上述的2階 具有n個變數的 目標函數 表示如下:
對 $u \in \mathbb{R}^n$ , $Q$ 為 對稱 且 正定矩陣  $Q=Q^T \succ 0$ ,目標函數寫為
\[
J(u) = \frac{1}{2} u^T Q u - u^T b
\]
那麼現在我們來問問,什麼叫Conjugate Direction??
本質上來說就是他是一個 方向 (也就是向量 )! 具有共軛 (Conjugate) 的性質。所以我們得先知道什麼叫做 Conjugate;以下一組向量  $ d^{(0)}, d^{(1)}, ..., d^{(m)}$ 被稱作 Conjugate 的定義

-----------------
${ \bf \text{Definition: (Q-Conjugate)}}$
令 $Q$ 為一個 real symmetric $n \times n$ 矩陣。其方向 $ d^{(0)}, d^{(1)}, ..., d^{(m)}$ 稱作 Q-conjugate 如果下列條件成立:
\[
 \forall i \neq j, \ d^{(i)T} Q d^{(j)} =0
\]-----------------

知道這個Conjugate定義之後會問說要知道這個定義有甚麼用呢? 用處就是一旦有了Conjugate direction,則這些directions會彼此線性獨立。我們將此結果記做下面引理

-----------------
$\text{Lemma: (Q-Conjugate direction is linearly independent)}$
令 $Q$ 為一個 對稱 且 正定 (symmetric and positive definite) $n \times n$ 矩陣。若 下列方向 $ d^{(0)}, d^{(1)}, ..., d^{(n-1)} \in \mathbb{R}^n$ 為非零向量且 Q-conjugate ,則 這些方向互為線性獨立。

-----------------
Proof:
我們要證明  $ d^{(0)}, d^{(1)}, ..., d^{(n-1)}$ 互為線性獨立。由線性獨立定義,假設
\[
\displaystyle \sum_{i=0} ^{n-1} \alpha_i d^{(i)} =0,
\]必須證明 $\forall \alpha_i =0$

現在如果我們考慮對任意 $\alpha_k$ 的情況,將上述summation同乘 $d^{(k)T} Q$,可得
\[
d^{(k)T} Q \displaystyle \sum_{i=0} ^{n-1} \alpha_i d^{(i)} =0 \Rightarrow \displaystyle \sum_{i=0} ^{n-1} \alpha_i d^{(k)T} Q d^{(i)} =0 \ \ \ \ (*)
\]現在由於前提可知  $ d^{(0)}, d^{(1)}, ..., d^{(n-1)}$ 為 Q-conjugate,由Q-conjugate 定義可知 $\forall i \neq j$, $d^{(i)T}Qd^{(j)} =0$

故對所有的 $i \neq k$, $d^{(k)T}Qd^{(i)} =0$ ,亦即:
\[
\displaystyle \sum_{i=0} ^{n-1} \alpha_i d^{(k)T} Q d^{(i)} =0 ; \Rightarrow \displaystyle   \alpha_k d^{(k)T} Q d^{(k)} =0
\]又因為我們的前提告訴我們 $Q$ 為一個 symmetric positive definite $n \times n$ 矩陣,且方向 $ d^{(0)}, d^{(1)}, ..., d^{(n-1)} \in \mathbb{R}^n$ 為非零向量;
由正定矩陣定義: $d^{(k)T} Q d^{(k)} > 0$,  $\forall d^{(k)} \neq 0$。故可知
\[
 (*) \Rightarrow {\alpha _k}\underbrace {{d^{(k)T}}Q{d^{(k)}}}_{ > 0} = 0
\]亦即
\[
 \Rightarrow {\alpha _k} = 0
\]現在由於  $\alpha_k$ 為任意給定。故
\[
 \displaystyle \sum_{i=0} ^{n-1} \alpha_k d^{(k)} =0, \  \forall \alpha_k =0
\]即為所求。 $\square$


ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd.


2/15/2014

[最佳化] 牛頓法 (Generalized Newton Raphson Algorithm)

這次要介紹的是 Generalized Newton Raphson Algorithm (or so called Newton Method)

想法:透過二次函數近似 (quadratic fit) 目標函數 $J(u)$ 並以此找出最小值。


現在考慮在時間 $k$ ,我們有 $u^k \in \mathbb{R}^n$ 與對應的成本函數 $J(u^k)$;

現在如果我們讓 $u^k$ 受到一點擾動 $\Delta u := u^{k+1} - u^k$,也就是說受到擾動的成本函數可寫為
\[
J(u^k + \Delta u)
\]假設我們的目標函數 $J(u) $ 是個平滑函數(smooth function),那麼我們可以對其做泰勒展開( Taylor Expansion )。故現在透過 Taylor Expansion 對上式展開 (只展開到第二項,忽略其餘高階項:因為我們的想法是利用二次函數近似,故高階項忽略),我們得到
\[
J(u^k + \Delta u) = J(u^k) + \nabla J(u^k)^T \Delta u + \frac{1}{2} \Delta u^T \left ( \nabla^2 J(u^k)^T \right) \Delta u + H.O.T.
\]其中H.O.T為高階項 higher order term。我們將其忽略不計

現在由於我們欲求極小值(最佳化),故透過一階必要條件(FONC):
\[
\nabla J(u^k) |_{\Delta u = \Delta u^*}= 0
\] 亦即對 $\Delta u$ 求一階導數並令其為 $0$ 可得
\[
\left ( \nabla J(u^k) +  \nabla^2 J(u^k) \Delta u \right) |_{\Delta u = \Delta u^*} =0
\]整理上式可得
\[ \Rightarrow \Delta u^* =  - {\left[ {{\nabla ^2}J({u^k})} \right]^{ - 1}}\left( {\nabla J({u^k})} \right)
\] 又由擾動定義 $\Delta u := u^{k+1} - u^k$,我們可將上式進一步改寫
\[\begin{array}{l}
{u^{k + 1}} - {u^k} =  - {\left[ {{\nabla ^2}J({u^k})} \right]^{ - 1}}\left( {\nabla J({u^k})} \right)\\
 \Rightarrow {u^{k + 1}} = {u^k} - {\left[ {{\nabla ^2}J({u^k})} \right]^{ - 1}}\left( {\nabla J({u^k})} \right) \ \ \ \ (\star)
\end{array}
\]上式 $(\star)$ 的iterative structure稱為 Newton-Rapshon Algorithm

Comments:
1. 注意到 Newton Method 需要兩項資訊:一是 Gradient 另外一個則是 Hessian matrix 的 inverse :${\left[ {{\nabla ^2}J({u^k})} \right]^{ - 1}}$ ,事實上 Newton Method 擁有除了一階導數以外的 Hessian 的幫助確實對於整體演算法收斂性有所助益,但是注意到求由於Newton Method 需要求 Hessian 的反矩陣,這在大尺度 ( $n$ very large) 的問題中會變得難以求解。

另外如果 Hessian matrix 在跌代過程中損失正定性質(positive-definiteness ) =>無法求反矩陣 則此暗示目標函數可能與二次近似相距甚遠 (亦即目標函數難以用二次近似),此時用Newton Method求出的解在精度上會有問題。

2. 如果起始位置靠近最佳解 $u^*$ (事實上我們並不知道是否真的靠近,除非事先已知道最佳解在哪),則Newton Method 會優於 Steepest Descent Method。反之如果起始位置遠離最佳解,則 Steepest Descent Method會優於 Newton Method (因為Newton Method 用二次近似,故跌代緩慢,此時Steepest Descent 收斂速度會快於Newton Method)。

3. Newton Method 由於採用二次近似,故對於目標函數為二次式的情況,只需要跌代一步就收斂。(WHY!?)

考慮標準二階型態的成本函數 $J: \mathbb{R}^n \rightarrow \mathbb{R}$:
\[
J(u) = \frac{1}{2}u^T A u + b^T u + c, \ A \succ 0
\]還沒使用Newton Method之前,我們可先由一階必要條件 (First order necessary condtion, FONC): $\nabla J (u) =0$ 得知最佳解應該長甚麼樣:
\[
 {\left. {\nabla J(u)} \right|_{{u^*}}} = A{u^*} + b = 0 \Rightarrow {u^*} =  - {A^{ - 1}}b
\]且由二階充分條件(Second order sufficient condition, SOSC) $\nabla^2 J(u) \succ 0$,可得 $\nabla^2 J(u^*) = A \succ 0$,故 ${u^*} =  - {A^{ - 1}}b$ 為上述二階目標函數的最佳解。

現在我們看看用上Newton Method會發生甚麼事情:
\[{u^{k + 1}} = {u^k} - {\left[ {{\nabla ^2}J({u^k})} \right]^{ - 1}}\left( {\nabla J({u^k})} \right) \]考慮 $k=0$的時候我們有
\[\begin{array}{l}
 {u^1} = {u^0} - {A^{ - 1}}\left( {A{u^0} + b} \right)\\
 \Rightarrow {u^1} = {A^{ - 1}}b = {u^*}
\end{array}
\] 故由上述討論可知確實Newton Method 一步就收斂。 $\square$


現在我們來看個實際的例子:
======================
Example
考慮如下目標函數
\[J(u) = {\left( {11 - {u_1} - {u_2}} \right)^2} + {\left( {1 + 10{u_2} + {u_1} - {u_1}{u_2}} \right)^2}
\] 且給定初始條件 $u^0 = [18, 3]^T$ (任意給定)

1. 試用FONC與SOSC求解最佳解 $u^*$
2. 試用Newton Method 求 $u^1$ 與 $u^2$。
3. 試比較此兩種方法之解

Solution:
讀者可事先計算上述目標函數之最佳解(滿足FONC與SOSC)為 $u^* = [13, 4]^T$。

現在我們看看Newton Method有甚麼效果?

在使用 Newton Method之前需要兩個資訊:Gradient 與 Hessian,故我們依序計算如下:
\[\begin{array}{l}
\nabla J(u) = \left[ {\begin{array}{*{20}{c}}
{\frac{{\partial J}}{{\partial {u_1}}}}\\
{\frac{{\partial J}}{{\partial {u_2}}}}
\end{array}} \right]\\
 \Rightarrow \nabla J(u) = \left[ {\begin{array}{*{20}{c}}
{ - 2\left( {11 - {u_1} - {u_2}} \right) + 2\left( {1 + 10{u_2} + {u_1} - {u_1}{u_2}} \right)\left( {1 - {u_2}} \right)}\\
{ - 2\left( {11 - {u_1} - {u_2}} \right) + 2\left( {1 + 10{u_2} + {u_1} - {u_1}{u_2}} \right)\left( {10 - {u_1}} \right)}
\end{array}} \right]\\
 \Rightarrow \nabla J({u^0}) = \left[ {\begin{array}{*{20}{c}}
{40}\\
{100}
\end{array}} \right]
\end{array}
\]
Hessian:
\[\begin{array}{l}
{\nabla ^2}J(u) = \left[ {\begin{array}{*{20}{c}}
{2{{\left( {{u_2} - 1} \right)}^2} + 2}&{4\left( {{u_1}\left( {{u_2} - 1} \right) - 10{u_2} + 5} \right)}\\
{4\left( {{u_1}\left( {{u_2} - 1} \right) - 10{u_2} + 5} \right)}&{2{{\left( {{u_1} - 10} \right)}^2} + 2}
\end{array}} \right]\\
 \Rightarrow {\nabla ^2}J({u^0}) = \left[ {\begin{array}{*{20}{c}}
{10}&{44}\\
{44}&{130}
\end{array}} \right]
\end{array}\]

那麼我們用 Newton Method:
\[\begin{array}{l}
{u^{k + 1}} = {u^k} - {\left[ {{\nabla ^2}J({u^k})} \right]^{ - 1}}\left( {\nabla J({u^k})} \right)\\
 \Rightarrow {u^1} = \left[ {\begin{array}{*{20}{c}}
{18}\\
3
\end{array}} \right] - {\left[ {\begin{array}{*{20}{c}}
{10}&{44}\\
{44}&{130}
\end{array}} \right]^{ - 1}}\left[ {\begin{array}{*{20}{c}}
{40}\\
{100}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{19.2579}\\
{1.8570}
\end{array}} \right]
\end{array}\]同樣的我們可計算下一步 $u^2 = [13.265, 3.613]^T$ 逐步下去可以發現(在此初始條件之下)確實越來越接近最佳解 $u^*=[13, 4]$。計算細節在此不再贅述。

但是注意到,如果更改初始條件為其他值(比如說如果選很接近 $u^0 = [7, -2]^T$ 或者 $u^0 =[10, 1]^T$),則很可能得不到上述的最佳解!! 此時需要重新給定初始值再度測試。 $\square$



ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd.

1/14/2014

[演算法] 平方收斂與超線性收斂

這次要介紹演算法中的兩種收斂速度 (Speed of convergence):
  1. 平方收斂 (Quadratic Convergence)
  2. 超線性收斂 (Superlinear Convergence)
首先介紹 Quadratic Convergence 定義:

===========================
Definition: (Quadratic Convergence)
一個演算法被稱作是 具有二次收斂(Quadratically Convergent) 如果下列條件成立:
若將此演算法應用到二階型態的成本函數 $J: \mathbb{R}^n \rightarrow \mathbb{R}$:
\[
J(u) = u^T A u + b^T u + c, \ A \succ 0
\]其最佳解可以在 $n$ 步或者少於 $n$ 步之內被求得。
===========================

Comments:
1. 最陡坡度法 Steepest Descents Algorithm (fixed step & optimal step) 都不具備 Quadratic Convergence。(事實上最陡坡度法在搜尋解的時候會有 (歪來歪去!?) Zig-zag 的本質,這使得此法再在某些情況會收斂的異常緩慢甚至永遠不收斂...)

2. 牛頓法 (Newton-Raphson Algorithm)為Quadratic Convergence。關於牛頓法請參考:[最佳化] Generalized Newton Raphson Algorithm

3. Conjugate Direction Algorithm 為 Quadratic Convergence。有興趣的讀者請參考 Conjugate Direction Method 系列文章:[最佳化理論] Conjugate Direction Methods (0) -Basic Theory

再來要介紹的是超線性收斂(Superlinear Convergence)

===========================
Definition (Superlinear Convergence)
一個 sequence $\{ u^k\}_{k=1}^{\infty} \in \mathbb{R}^n$ 被稱作是超線性收斂 superlinear convergence 到 $u^*$ 如果下列條件成立:
給定 任意 $\theta \in (0,1)$,我們有 $\frac{||u^k - u^*||}{\theta^k} \rightarrow 0$;亦即
\[
\displaystyle \lim_{k \rightarrow \infty} \frac{||u^k - u^*||}{\theta^k} \rightarrow 0 \ \ \ \ \square
\]===========================

Comments:
1. 超線性收斂顧名思義就是其收斂速度非常的快。比線性收斂更快。我們現在用下面幾個(收斂的)例子便可以看出超線性收斂確實是快!  比如說甚至 $exp(-k)$ 函數都不是超線性收斂。
2. Conjugate Direction Algorithm 具備 Superlinear Convergence。


現在來看看幾個例子:

===========================
Example 1:
$u^k = 1/k$ 是否為超線性收斂到 $u^* =0 ?$

Sol: NO!
由定義我們可以任意選 $\theta \in (0,1)$,故如果今天我們選 $\theta =1/2$,則
\[
\displaystyle \lim_{k \rightarrow \infty} \frac{||u^k - u^*||}{\theta^k} = \displaystyle \lim_{k \rightarrow \infty} \frac{1/k}{(1/2)^k} =   \displaystyle \lim_{k \rightarrow \infty} \frac{2^k}{k} \nrightarrow 0
\]事實上上述極限不收斂 $(\rightarrow \infty)$ $\square$

===========================

Example 2
$u^k = 1/k^2$ 是否為超線性收斂到 $u^* =0 ?$

Sol: NO!
同上題,選 $\theta = 1/2$ 仍然讓此Sequence爆掉。

===========================

Example 3
$u^k = e^{-k}$ 是否為超線性收斂 到 $u^* = 0?$

Sol: No
注意到 $exp = 2.7183xxx$,故如果我們選 $\theta = 1/3$ 則
\[
\displaystyle \lim_{k \rightarrow \infty} \frac{||u^k - u^*||}{\theta^k} = \displaystyle \lim_{k \rightarrow \infty} \frac{e^{-k}}{(1/3)^k} =   \displaystyle \lim_{k \rightarrow \infty} 3^k{e^{-k}} =  \displaystyle \lim_{k \rightarrow \infty} 3^k (2.7183....)^{-k} \nrightarrow 0
\]$\square$
===========================

Example 4
$u^k = e^{-k^2}$ 是否為超線性收斂 到 $u^* = 0?$

Sol: YES
觀察
\[
\displaystyle \lim_{k \rightarrow \infty} \frac{||u^k - u^*||}{\theta^k} = \displaystyle \lim_{k \rightarrow \infty} \frac{e^{-k^2}}{\theta^k}
\]
注意到上式中的 $\frac{e^{-k^2}}{\theta^k}$ 可改寫為
\[{e^{ - {k^2}}}{\theta ^{ - k}} = {e^{ - {k^2}}}{e^{\ln {\theta ^{ - k}}}} = {e^{ - {k^2} + k\ln \frac{1}{\theta }}}
\]注意到不管 $\theta \in (0,1)$ 怎麼選,前方的 $-k^2$ 項都主導整個收斂速度,故上式收斂到 $u^* =0$,亦即 $u^k = e^{-k^2}$ 為超線性收斂 到 $u^* = 0$ $\square$

===========================

Example 5
$u^k = (1/k)^k$ 是否為超線性收斂 到 $u^* = 0?$

Sol: YES
由定義可知
\[
\mathop {\lim }\limits_{k \to \infty } \frac{{\left\| {{u^k} - {u^*}} \right\|}}{{{\theta ^k}}} = \mathop {\lim }\limits_{k \to \infty } \frac{{{{\left( {1/k} \right)}^k}}}{{{\theta ^k}}} \ \ \ \ (\star)
\]現在我們觀察
\[
\frac{{{{\left( {1/k} \right)}^k}}}{{{\theta ^k}}} = {k^{ - k}}{\theta ^{ - k}} = {\left( {k\theta } \right)^{ - k}}
\]又因為 $0 < \theta < 1$,亦即無論 $\theta$ 怎麼選,式 $(\star)$ 都必收斂
\[\mathop {\lim }\limits_{k \to \infty } {\left( {k\theta } \right)^{ - k}} \to 0
\]故 $u^k = (1/k)^k$ 為超線性收斂。$\square$


4/13/2011

[最佳化] 淺談線性規劃(5)- The LP Tableau

延續前篇,我們現在知道如何從一個 Basic Feasible Solution 移動到 另一個 Basic Feasible Solution ,但問題是我們該如何得知應該選哪一個 Basic Feasible Solution 作為我們下一部移動的目標呢?? 亦即 我們該選誰使得我們可以逐步降低Cost Value。

這次介紹一個極為精簡的方法,就是透過matrix row operation 建立 LP Tableau,方法如下:

現在考慮標準型式LP問題:

令 $x \in \mathbb{R}^n$,
\[\begin{array}{l}
\min {c^T}x\\
s.t.\\
\left\{ \begin{array}{l}
Ax = b,\\
x \ge 0
\end{array} \right.
\end{array}\]其中 $A = [a_1, a_2, ..., a_m] \in \mathbb{R}^{m \times n}$ 矩陣且 $n>m$, $rank(A) = m$,$A$ 沒有全為零的column$;b \geq 0$,

接著透過Row operation,把拘束 $Ax =b$ 改寫成如下:
\[\left\{ \begin{array}{l}
{x_1}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array} + {y_{1,m + 1}}{x_{m + 1}} + {y_{1,m + 2}}{x_{m + 2}} +  \cdots  + {y_{1,n}}{x_n} = {y_{1,0}}\\
\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}{x_2}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array} + {y_{2,m + 1}}{x_{m + 1}} + {y_{2,m + 2}}{x_{m + 2}} +  \cdots  + {y_{2,n}}{x_n} = {y_{2,0}}\\
\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array} \ddots \\
\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}{x_m} + {y_{m,m + 1}}{x_{m + 1}} + {y_{m,m + 2}}{x_{m + 2}} +  \cdots  + {y_{m,n}}{x_n} = {y_{m,0}}
\end{array} \right.
\]透過上式,我們我們可建立如下 LP Tableau:
\[\left[ {\begin{array}{*{20}{c}}
1&0& \cdots &0&{{y_{1,m + 1}}}&{{y_{1,m + 2}}}& \cdots &{{y_{1,n}}}&{{y_{1,0}}}\\
0&1& \cdots &0&{{y_{2,m + 1}}}&{{y_{2,m + 2}}}& \cdots &{{y_{2,n}}}&{{y_{2,0}}}\\
 \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\
0&0& \cdots &1&{{y_{m,m + 2}}}&{{y_{m,m + 2}}}& \cdots &{{y_{m,n}}}&{{y_{m,0}}}
\end{array}} \right]\]觀察上式,我們可以發現有 一組 Feasible Basic Solution:
\[\begin{array}{*{20}{l}}
{{x_1} = {y_{1,0}}}\\
{{x_2} = {y_{2,0}}}\\
 \vdots \\
\begin{array}{l}
{x_m} = {y_{m,0}}\\
{x_{m + 1}} = 0\\
 \vdots \\
{x_n} = 0
\end{array}
\end{array}\]
那麼由之前文章可知,我們可以從這組 Feasible Basic Soluiton開始,逐步移動到下一個Basic Feasible Solution,但現在問題變成我們應該移動到哪一個才可以在移動過程中使 Cost 也逐步降低呢?

現在觀察我們的Cost function:
\[
\begin{array}{l}
J = {c^T}x = {c_1}{x_1} + {c_2}{x_2} + ...+{c_m}{x_m} + {c_{m + 1}}x_{m+1} + ... + {c_n}x_n \ \ \ \ (*)
\end{array}
\]將 $J$ 用 $x_{m+1}, x_{m+2}, ..., x_{n}$ 表示:亦即
由LP Tableau,可知
\[\begin{array}{l}
\left\{ \begin{array}{l}
{x_1} + {y_{1,m + 1}}{x_{m + 1}} + {y_{1,m + 2}}{x_{m + 2}} +  \cdots  + {y_{1,n}}{x_n} = {y_{1,0}}\\
{x_2} + {y_{2,m + 1}}{x_{m + 1}} + {y_{2,m + 2}}{x_{m + 2}} +  \cdots  + {y_{2,n}}{x_n} = {y_{2,0}}\\
 \vdots \\
{x_m} + {y_{m,m + 1}}{x_{m + 1}} + {y_{m,m + 2}}{x_{m + 2}} +  \cdots  + {y_{m,n}}{x_n} = {y_{m,0}}
\end{array} \right.\\
 \Rightarrow \left\{ \begin{array}{l}
{x_1} = {y_{1,0}} - \left( {{y_{1,m + 1}}{x_{m + 1}} + {y_{1,m + 2}}{x_{m + 2}} +  \cdots  + {y_{1,n}}{x_n}} \right)\\
{x_2} = {y_{2,0}} - \left( {{y_{2,m + 1}}{x_{m + 1}} + {y_{2,m + 2}}{x_{m + 2}} +  \cdots  + {y_{2,n}}{x_n}} \right)\\
 \vdots \\
{x_m} = {y_{m,0}} - \left( {{y_{m,m + 1}}{x_{m + 1}} + {y_{m,m + 2}}{x_{m + 2}} +  \cdots  + {y_{m,n}}{x_n}} \right)
\end{array} \right.
\end{array}
\]將上式代入 Cost function $(*)$可得
\[
\begin{array}{l}
 \Rightarrow J = \underbrace {\left( {{c_1}{y_{1,0}} + {c_2}{y_{2,0}} +  \cdots  + {c_m}{y_{m,0}}} \right)}_{: = {J_0}}\\
\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array} + \left[ {{c_{m + 1}} - \sum\limits_{i = 1}^m {{c_i}{y_{i,m + 1}}} } \right]{x_{m + 1}} +  \cdots  + \left[ {{c_n} - \sum\limits_{i = 1}^m {{c_i}{y_{i,n}}} } \right]{x_n}
\end{array}
\]將上式進一步整理
\[\begin{array}{l}
 \Rightarrow J = \underbrace {\left( {{c_1}{y_{1,0}} + {c_2}{y_{2,0}} +  \cdots  + {c_m}{y_{m,0}}} \right)}_{: = {J_0}}\\
\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array} + \underbrace {\left[ {{c_{m + 1}} - \sum\limits_{i = 1}^m {{c_i}{y_{i,m + 1}}} } \right]}_{: = {r_{m + 1}}}{x_{m + 1}} +  \cdots  + \underbrace {\left[ {{c_n} - \sum\limits_{i = 1}^m {{c_i}{y_{i,n}}} } \right]}_{: = {r_n}}{x_n}\\
 \Rightarrow J = {J_0} + {r_{m + 1}}{x_{m + 1}} + {r_{m + 2}}{x_{m + 2}} +  \cdots  + {r_n}{x_n}\\
 \Rightarrow J = {J_0} + \sum\limits_{j = m + 1}^n {{r_j}{x_j}}
\end{array}
\]
Comment:
1. 上式的 $r_j$ 稱作 Relative cost coefficient;$ J_0$ 為 current cost value。
2. 如果 $r_j <0$ 則我們可以讓 $J$ 降低。 反之如果 $r_j >0$,則 $J$ 變大 (makes things worse)。
3. 如果所有的 $r_j \geq 0$ (都非負),則Cost 無法再繼續降低,我們說此即為最佳解。

將以上討論寫成如下定理:

=======================
Theorem
一個 Basic Feasible Solution 為最佳解 若且唯若 (if and only if ) 其對應的 Relative Cost Coefficient $r_j \geq 0, \ \forall j$
=======================

ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd, Chapter 15.

4/10/2011

[最佳化] 淺談線性規劃(4)- How to move from one Basic Feasible solution to another- An Example

延續前篇,我們現在手上有了 LP問題的基本定理:

=================================
Theorem (Fundamental Theorem of LP):
考慮標準型式的線性規劃 (Standard LP)問題

令 $x \in \mathbb{R}^n$,
\[\begin{array}{l}
\min {c^T}x\\
s.t.\\
\left\{ \begin{array}{l}
Ax = b,\\
x \ge 0
\end{array} \right.
\end{array}\]其中 $A$ 為 $m \times n$ 矩陣且 $n>m$, $rank(A) = m$,$A$ 沒有全為零的column$;b \geq 0$,
1. 若其存在一個 Feasible Solution,則必存在一個 Basic + Feasible 的解
2. 若其存在一個optimal + feasible solution,則必定存在一個optimal basic + feasible solution 。
=================================

現在我們來看看線性規劃的一些例子:

Example:
考慮如下 LP 問題:
\[\begin{array}{l}
\max \left( {3{u_1} + 5{u_2}} \right)\\
s.t.\\
\left\{ \begin{array}{l}
{u_1} + 5{u_2} \le 40\\
2{u_1} + {u_2} \le 20\\
{u_1} + {u_2} \le 12
\end{array} \right.\\
{u_i} \ge 0,i = 1,2
\end{array}
\]首先將其改寫成標準型式LP問題: (引入 slack variable $y_3, y_4, y_5 \geq 0$)
\[\begin{array}{l}
\min \left( { - 3{u_1} - 5{u_2}} \right)\\
s.t.\\
\left\{ \begin{array}{l}
{u_1} + 5{u_2} + {y_3} = 40\\
2{u_1} + {u_2} + \begin{array}{*{20}{c}}
{}
\end{array}{y_4} = 20\\
{u_1} + {u_2} + \begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}{y_5} = 12
\end{array} \right.\\
{u_i} \ge 0,i = 1,2,3,4,5
\end{array}\]定義 $x := [x_1 \ x_2 \ x_3 \ x_4 \ x_5 ]^T = [u_1 \ u_2 \ y_1 \ y_2 \ y_3 ]^T $ 我們得到標準型LP問題如下
\[\begin{array}{l}
\min \left( { - 3{x_1} - 5{x_2}} \right)\\
s.t.\\
\left\{ \begin{array}{l}
{x_1} + 5{x_2} + {x_3} = 40\\
2{x_1} + {x_2} + \begin{array}{*{20}{c}}
{}
\end{array}{x_4} = 20\\
{x_1} + {x_2} + \begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}\begin{array}{*{20}{c}}
{}
\end{array}{x_5} = 12
\end{array} \right.\\
{x_i} \ge 0,i = 1,2,3,4,5
\end{array}\]
注意到我們可以把拘束條件改寫為
\[\begin{array}{l}
{x_1}\left[ {\begin{array}{*{20}{c}}
1\\
2\\
1
\end{array}} \right] + {x_2}\left[ {\begin{array}{*{20}{c}}
5\\
1\\
1
\end{array}} \right] + {x_3}\left[ {\begin{array}{*{20}{c}}
1\\
0\\
0
\end{array}} \right] + {x_4}\left[ {\begin{array}{*{20}{c}}
0\\
1\\
0
\end{array}} \right] + {x_5}\left[ {\begin{array}{*{20}{c}}
0\\
0\\
1
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{40}\\
{20}\\
{12}
\end{array}} \right]\\
{x_i} \ge 0,i = 1,2,3,4,5
\end{array}
\]且 $x= [0, 0, 40, 20, 12]^T$ 為一個 feasible solution 且 為一個 Extreme point (由之前文章的定理可知Exterme Point $\Leftrightarrow$ Basic Feasible Solution)。但是如果我們選此 $x$則我們的cost :$-3 x_1 - 5 x_2 = -3 \cdot 0 + -5 \cdot 0 =0$。亦即此cost並不是minimum,故我們需要在其他 Extreme Point 中尋找最佳解。

想法: 從一個 Extreme Point 移動到另一個 Exterme Point 使得我們的cost 可以逐步降低。

故由 $x= [0, 0, 40, 20, 12]^T$ 開始,我們有
\[{0\underbrace {\left[ {\begin{array}{*{20}{c}}
1\\
2\\
1
\end{array}} \right]}_{{a_1}} + 0\underbrace {\left[ {\begin{array}{*{20}{c}}
5\\
1\\
1
\end{array}} \right]}_{{a_2}} + 40\underbrace {\left[ {\begin{array}{*{20}{c}}
1\\
0\\
0
\end{array}} \right]}_{{a_3}} + 20\underbrace {\left[ {\begin{array}{*{20}{c}}
0\\
1\\
0
\end{array}} \right]}_{{a_4}} + 12\underbrace {\left[ {\begin{array}{*{20}{c}}
0\\
0\\
1
\end{array}} \right]}_{{a_5}} = \left[ {\begin{array}{*{20}{c}}
{40}\\
{20}\\
{12}
\end{array}} \right]} \\
\Rightarrow 0 a_1 + 0 a_2 + 40 a_3 +20 a_4 + 12 a_5 = b
\]現在為了要選取下一個鄰近的 Extreme Point,我們選 $a_1$ column 做為新的基底。然後我們需要把現有的舊的基底 $a_3, a_4, a_5$ 中剔除一個。那麼該怎麼做呢? 方法如下:

首先把 $a_1$ 用舊基底線性組合來表示:
\[
a_1 = 1 a_3 + 2 a_4 + 1 a_5
\]對上式兩邊同乘 $\varepsilon_1 >0$,我們可得
\[{{\varepsilon _1}{a_1} = {\varepsilon _1}{a_3} + 2{\varepsilon _1}{a_4} + {\varepsilon _1}{a_5}}
\]現在把上式加到 $(*)$ 並整理如下:
\[\begin{array}{l}
\left( {{\varepsilon _1}{a_1} - {\varepsilon _1}{a_3} - 2{\varepsilon _1}{a_4} - 1{\varepsilon _1}{a_5}} \right) + \left( {0{a_1} + 0{a_2} + 40{a_3} + 20{a_4} + 12{a_5}} \right) = 0 + b\\
 \Rightarrow \left( {{\varepsilon _1} + 0} \right){a_1} + 0{a_2} + \left( {40 - {\varepsilon _1}} \right){a_3} + \left( {20 - 2{\varepsilon _1}} \right){a_4} + \left( {12 - 1{\varepsilon _1}} \right){a_5} = b
\end{array}
\] 那麼現在我們想要選 $\varepsilon_1$ 使得 上式的係數都非負,且同時舊的基底 $a_3, a_4, a_5$ 其中一個的係數變成零 (這樣我們就可以把舊的基底其中一個換成新基底 $a_1$)。觀察上式可以發現選舊的基底 $a_3, a_4, a_5$ 對應的係數中最小的, 亦即我們要選 $\varepsilon_1 = 10$ (替換 $a_4$ 基底)。故得到
\[
 \Rightarrow 10{a_1} + 0{a_2} + 30{a_3} + 0{a_4} + 2{a_5} = b
\]其對應的 Basic Feasible Solution (Extreme Point) 為
\[
[10, 0, 30, 0, 2]^T
\]且此時我們的Cost: $-3 x_1 - 5 x_2 = -30$,亦即從原本的 $0$ 降低到 $-30$。

接著我們重複上述步驟在移動到下一個鄰近的Extreme Point,希望可以再降低我們的Cost 。這次我們選 $a_2$ 做為新的基底,故我們讓 $a_2$ 用現有的基底 $a_1, a_3, a_5$表示:
\[
a_2 = 1/2 a_1 + 9/2 a_3 + 1/2 a_5 \ \ \ \ (**)
\]接著對上式兩邊同乘 $\varepsilon_2 >0$,我們可得
\[{{\varepsilon _2}{a_2} = \frac{1}{2}{\varepsilon _2}{a_1} + \frac{9}{2}{\varepsilon _2}{a_3} + \frac{1}{2}{\varepsilon _2}{a_5}}
\]把上式 與 $(**)$ 相加
\[ \Rightarrow \left( {10 - \frac{1}{2}{\varepsilon _2}} \right){a_1} + {\varepsilon _2}{a_2} + \left( {30 - \frac{9}{2}{\varepsilon _2}} \right){a_3} + 0{a_4} + \left( {2 - \frac{1}{2}{\varepsilon _2}} \right){a_5} = b
\]同之前步驟,我們需要把 現有基底 $a_1, a_3, a_5$ 中踢出一個,故應選 $\varepsilon_2$ 使得 上式的係數都非負,且同時舊的基底 $a_1, a_3, a_5$ 其中一個的係數變成零;觀察上式發現應選 $\varepsilon_2 = 4$,我們得到
\[ \Rightarrow 8{a_1} + 4{a_2} + 12{a_3} + 0{a_4} + 0{a_5} = b
\]此時對應的解為
\[
[8, 4, 12, 0, 0]^T
\]且對應的 Cost: $ -3 x_1 -5 x_2 = -44$亦即又比剛剛的 $-30$ 更小。現在我們再重複上述例子,這次我們選 $a_4$做為新的替換基底並將其用舊的基底表示為
\[
a_4 = a_1 - a_2 +4 a_3
\]接著對上式兩邊同乘 $\varepsilon_3 >0$,並將其與原有的基底相加可得
\[
(8-\varepsilon_3) a_1 + (4 + \varepsilon_3) a_2 +(12 - 4 \varepsilon_3) a_3 + \varepsilon_3 a_4 = b
\]觀察上式,我們應選 $\varepsilon_3 = 3$,故得到
\[
5 a_1 + 7 a_2 +0 a_3 + 3 a_4 = b
\]故對應的解為
\[
[5, 7, 0, 3, 0]^T
\]此時對應的 Cost 為 $ -3 x_1 -5 x_2 = -50$且此即為對此 標準LP問題的最佳解,故我們的最佳解對原本問題即為 $x^* = [x_1, x_2]= [u_1, u_2] = [5, 7]$。 $\square$

上述的方法:從一個Extreme point 到另一個 Extreme Point的方法,亦會在之後的 Simplex Method 中再做詳細的介紹。

ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd, Chapter 15.

==============
延伸閱讀
[最佳化] 淺談線性規劃(0)- Standard form of Linear Programming

[最佳化] 淺談線性規劃(1)- Feasible solution and Basic solution

[最佳化] 淺談線性規劃(2)- Optimality Theorem

[最佳化] 淺談線性規劃(3)- Geometric View of LP

[最佳化] 淺談線性規劃(4)- How to move from one Basic Feasible solution to another- An Example

4/09/2011

[最佳化] 淺談線性規劃(3)- Geometric View of LP

延續前篇,由 Fundamental Theorem of LP,我們得知 Optimal Feasible Solution存在,則必存在Optimal Basic Feasible Solution。現在我們從幾何的觀點來看看這個件事情。

也就是說我們想知道 Optimal Basic Feasible Solution 在幾何中有甚麼意義?
在文中我們會介紹 Basic Feasible Solution 等價標準LP拘束集合的 極點 (Extreme Point, or Vertex)

進行幾何的觀點討論之前,我們需要一些先備概念 (凸性 Convexity)來幫助我們。

以下先給出凸集合 (Convex set)的定義:

=============================
Definition (Convex Set)
我們說一個集合 $\Theta \subset \mathbb{R}^n$ 為一個 Convex set 如果下列條件滿足:
對任意兩向量 $x, y \in \Theta$,且對任意實數 $\alpha \in (0, 1), \alpha \in \mathbb{R}^1$,其凸組合 (convex combination)
\[
\alpha x + (1- \alpha) y \in \Theta
\]=============================

如果用圖形表示的話:考慮 $x,y \in \mathbb{R}^2$,下圖說明甚麼是convex set 什麼不是convex set。


有了Convex set 的概念之後,我們回頭檢驗看看 標準型式LP問題的拘束條件:
現在定義拘束集合
\[
 \Theta := \{x: x\geq 0, Ax =b \}
\] 則第一個問題是,我們這樣的拘束集合有甚麼幾何性質? 他是不是一個 Convex set?

答案是肯定的,我們將其寫作如下 FACT:

=================================
FACT:
標準型式 LP問題的拘束條件所形成的集合
\[
 \Theta := \{x: x\geq 0, Ax =b \}
\] 為 Convex set。
=================================

Proof:
由Convex set的定義,我們給定 $x, y \in \Theta$,且給定任意實數 $\alpha \in (0, 1), \alpha \in \mathbb{R}^1$,

我們要證明線性組合
\[
\alpha x + (1- \alpha) y \in \Theta
\]也就是說任意滿足拘束條件的兩項量經過線性組合之後仍然滿足拘束條件 (落在 $\Theta$ 之中);亦即要證明

(1). $\alpha x + (1- \alpha) y \geq 0$ 且
(2).  $A (\alpha x + (1- \alpha) y) = b $

故我們首先觀察 (1):
因為 $x,y \in \Theta$ 故 $x, y \geq 0$ 又因為 $\alpha \in (0,1)$;故我們可知
\[\alpha x + (1 - \alpha )y \ge 0\]
接著觀察 (2):
因為 $x,y \in \Theta$ 故 $Ax =b, Ay =b$ 又因為 $\alpha \in (0,1)$;故我們可知
\[A\left( {\alpha x + (1 - \alpha )y} \right) = \alpha Ax + (1 - \alpha )Ay = \alpha b + (1 - \alpha )b = b\]
至此 (1)、(2) 都滿足,故我們說
\[
\alpha x + (1- \alpha) y \in \Theta
\]亦即標準型式LP的拘束條件所形成的集合 $\Theta$ 為一個Convex Set。 $\square$


Comments:
在更深入的最佳化理論 或者 凸分析理論中,上述集合被稱為 polyhedral。


在知道拘束條件所形成的集合為 Convex Set 之後,我們現在便可以引入 Exterme Point的概念:

==========================
Definition (Extreme Point)
令標準型式 LP問題的拘束條件所形成的集合
\[
 \Theta := \{x: x\geq 0, Ax =b \}
\] ,我們說一個向量 $x \in \Theta$ 為一個 Exterme Point of $\Theta$ 若下列條件成立:
不存在 任意兩向量 $x,y \in \Theta$, $x \neq y$ 使得對 $\alpha \in (0,1)$ 有 凸組合(convex combination)
\[
\alpha x + (1- \alpha) y \in \Theta
\]==========================

簡而言知,就是如果 $x^* \in \Theta$ 為極點(Exterme Point),則該點無法由其他集合中的任意兩點所構成:也就是說如果我們今天找到了集合中某兩向量 $x,y \in \Theta$ 與 $\alpha \in (0,1)$ 並用Convex combination 把 $x^*$ 寫下:
\[
x= \alpha x + (1- \alpha) y
\]則 $x$ 必須等於 $y$,亦即 $x=y$。

(上述的不存在條件,在證明的時候並不容易使用,我們多會將其用歸謬法推回,亦即說它存在,然後再得到某個矛盾。)


有了 Extreme point 的概念之後,我們現在便可以把 Basic Feasible Solution 與 Exterme Point概念作連結。下面的定理告訴我們此兩者等價。

==========================
Theorem: (Basic feasible solution is Extreme Point)
對標準形式LP問題,定義其拘束條件所形成的集合
\[
 \Theta := \{x: x\geq 0, Ax =b \}
\] 其中 $A \in \mathbb{R}^{m \times n}, m<n$。則 $x$ 為 $\Theta$ 中的 Extreme Point 若且唯若 (if and only if)
$x$ 為 Basic feasible solution of 標準型式LP問題。
==========================
Proof:
先證 $\Leftarrow$
假設 $x$ 為 Basic feasible solution,欲證明 $x$ 為 Extreme point。

我們用歸謬法 (Proof by contradiction)幫忙。
假設  $x$ 為 Basic feasible solution,但 $x$ 不為 Extreme point

則由不是 Extreme point 的定義,我們可以將 $x$ 用拘束集合 $\Theta$ 中任意不同兩點 $v^0, v^1$ 與一個常數 $\lambda \in (0,1)$ 以凸組合(convex combination)表示,亦即
\[
x = (1- \lambda) v^0 + \lambda v^1
\] 又因為 $v^0, v^1 \in \Theta$,故 $v^0, v^1$ 必滿足拘束條件,亦即 $v^0, v^1 \geq 0$ 且
\[
 A v^0 =b, A v^1 =b\\
\Rightarrow A (v^0 - v^1) =0
\]上述向量 $v^0 - v^1$ 的非零部分 必定對應到 $A$ 矩陣中 線性獨立的column  $[a^1, a^2, ... a^m]$ 為,故 $v^0 - v^1 =0 \Rightarrow v^0 = v^1$ 亦即此與一開始假設的不同兩點 相矛盾。故 $x$ 為 Extreme point。

---
現在我們接著證明 $\Rightarrow$

假設 $x$ 為 $\Theta$ 中的 Extreme Point,我們要證明 $x$ 為 Basic Feasible Solution:

注意到 $x \in \Theta$,故其必滿足拘束條件,故 $x$ 為 Feasible。故我們只須證明 $x$ 為Basic Solution。

再度使用歸謬法(Proof by contradiction)幫助我們
假設 $x$ 為 $\Theta$ 中的 Extreme Point,但 $x$ 不為 Basic Solution:

現在令 $x_1, x_2, ..., x_p$ 為 $x$ 非零的部分,由於其為Feasible solution,滿足拘束條件,我們可以寫下:
\[
Ax = b \Rightarrow a^1 x_1 + a^2 x_2 + ... + a^p x_p =b \ \ \ \ (*)
\] 由 非 Basic Solution 定義 ( $x$ 對應到 $A$ 矩陣線性相依的columns $a^1, a^2, ..., a^p$),故 存在一組非零的純量 $y_1, y_2, ... y_p$ 使得
\[
\displaystyle \sum_{i=1}^{p} y_i a^i = y_1 a^1 + y_2 a^2 + ... + y_p a^p =0
\]現在我們把上式乘上 $\varepsilon >0$
\[
\varepsilon y_1 a^1 + \varepsilon y_2 a^2 + ... + \varepsilon y_p a^p =0
\]
,且將其分別 加/減 到 $(*)$式,
\[\begin{array}{l}
\left( {{x_1} + \varepsilon {y_1}} \right){a^1} + \left( {{x_2} + \varepsilon {y_2}} \right){a^2} + ... + \left( {{x^p} + \varepsilon {y_p}} \right){a^p} = b\\
\left( {{x_1} - \varepsilon {y_1}} \right){a^1} + \left( {{x_2} - \varepsilon {y_2}} \right){a^2} + ... + \left( {{x_p} - \varepsilon {y_p}} \right){a^p} = b
\end{array}
\]我們可以選適當的 $\varepsilon $ (EX: 類似前幾篇文章所定義 $\varepsilon := \min \{ x_i/ y_i: i=1,..,p, y_i >0 \})$ 使得上式每一項都非負 $x_i + \varepsilon y_i \geq0, x_i - \varepsilon \geq 0$,則我們有下列向量:
\[\begin{array}{l}
{z_1}: = {\left[ {\begin{array}{*{20}{c}}
{{x_1} + \varepsilon {y_1}}&{{x_2} + \varepsilon {y_2}}&{...}&{{x_p} + \varepsilon {y_p}}&{0,...,0}
\end{array}} \right]^T}\\
{z_2}: = {\left[ {\begin{array}{*{20}{c}}
{{x_1} - \varepsilon {y_1}}&{{x_2} - \varepsilon {y_2}}&{...}&{{x_p} - \varepsilon {y_p}}&{0,...,0}
\end{array}} \right]^T}
\end{array}
\]上述兩向量都都落在 拘束集合中,且我們觀察 $x = \frac{1}{2} z_1 + \frac{1}{2} z_2$。又由於我們的假設可知 $x$ 為 Extreme point (無法被其他在拘束集合中的任意兩點用凸組合表示),故 $z_1 = z_2$;亦即 $y_i =0, \forall i$,此與我們之前提及的 非 Basic Solution 定義推得的線性相依
\[
\displaystyle \sum_{i=1}^{p} y_i a^i = y_1 a^1 + y_2 a^2 + ... + y_p a^p =0
\]矛盾。
亦即 $x$ 為 Basic Feasible Solution。 $\square$


ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd, Chapter 15.

==============
延伸閱讀

[最佳化] 淺談線性規劃(4)- How to move from one Basic Feasible solution to another- An Example

4/02/2011

[最佳化] 淺談線性規劃(2)- Optimality Theorem & Fundamental Theorem of LP

延續上篇,我們知道了標準型式的Linear Programming 問題若存在feasible solution,則必定存在一個 basic + feasible solution,但我們完全沒有提及到底如何最佳化(在此我們以最小化為主;亦即目標是要盡可能降低cost function的值),

也就是在從一個feasible solution移動到下一個basic + feasible solution之後,cost function的值是如何被降低的。這次要介紹的是 Optimality Theorem

=========================
Theorem: Optimality Theorem
對具有標準形式的Linear Programming問題,若其存在一個optimal + feasible solution $x^*$,則必定存在一個optimal basic + feasible solution $\tilde x^*$。
=========================

Proof:
考慮下列兩種情況:
1. $x^*$  為 Basic solution
2. $x^*$  不為 Basic solution

對情況1而言 (trivially true):
假設 $x^*$ 為Basic solution,則由假設我們又知道 $x^*$ 為 optimal + feasible solution;故在此情況下 $x^*$ 為 optimal basic + feasible solution 。

對情況2而言
假設 $x^*$  不為Basic solution,則由Basic Solution 定義可知
-----
一個向量 $x \in \mathbb{R}^n$ 稱作對 $Ax=b$ 的 Basic Solution ,若 $x$中 nonzero components 對應到$A$矩陣的線性獨立 Columns。
-----

故若  $x^*$  不為Basic solution,則表示  $x^*$  中的nonzero components 對應到$A$矩陣 Columns為線性相關 ;故我們進一步改寫此結果:

令   $x_1^*, x_2^*, ..., x_m^*$ 為  $x^*$中 nonzero components;其對應到 $A$ 矩陣Columns:
$a^1, a^2, ..., a^m$ 為線性相關;故由線性相關定義可知必定存在一組 非零純量 $y_i$ 使得
\[
\sum_{i=1}^{m} y_i a^i =0
\]

現在我們定義 $\eta^\varepsilon$ 如下
\[
{\eta _i^\varepsilon  }: = \left\{ \begin{array}{l}
x_i^*  - \varepsilon {y_i}, \ \ i \le m\\
0, \ \ \ \ i > m
\end{array} \right.
\] 則
\[\begin{array}{l}
A{\eta ^\varepsilon } = \left[ {\begin{array}{*{20}{c}}
{{a^1}}&{{a^2}}& \cdots &{{a^m}}&{{a^{m + 1}}}& \cdots &{{a^n}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{x_1^* - \varepsilon {y_1}}\\
{x_2^* - \varepsilon {y_2}}\\
 \vdots \\
{x_m^* - \varepsilon {y_m}}\\
0\\
 \vdots \\
0
\end{array}} \right]\\
 \Rightarrow A{\eta ^\varepsilon } = {a^1}\left( {x_1^* - \varepsilon {y_1}} \right) +  \cdots  + {a^m}\left( {x_m^* - \varepsilon {y_m}} \right)\\
 \Rightarrow A{\eta ^\varepsilon } = \left( {{a^1}x_1^* +  \cdots  + {a^m}x_m^*} \right) - \left( {\varepsilon {a^1}{y_1} +  \cdots  + \varepsilon {a^m}{y_m}} \right)\\
 \Rightarrow A{\eta ^\varepsilon } = \left( {{a^1}x_1^* +  \cdots  + {a^m}x_m^*} \right) - \underbrace {\varepsilon \sum\limits_{i = 1}^m {{a^i}{y_i}} }_{ = 0}\\
 \Rightarrow A{\eta ^\varepsilon } = \underbrace {\left[ {\begin{array}{*{20}{c}}
{{a^1}}&{{a^2}}& \cdots &{{a^m}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{x_1^*}\\
{x_2^*}\\
 \vdots \\
{x_m^*}
\end{array}} \right]}_{ = b}
\end{array}\]亦即,
\[
A \eta^{\varepsilon} = b
\]因此,如果 $|\varepsilon|$ 足夠小的時候,$\eta^\varepsilon$ 為 feasible solution;故我們說 $|\varepsilon| < \delta$;現在我們回頭檢查 對於Cost function $J = c^T x$ 有甚麼影響 :
\[
c^T \eta^\varepsilon = c^T (x^* - \varepsilon y)= c^T x^* - \varepsilon \cdot c^T y \ \ \ \ (*)
\] 且對 $i>m$的時候, $y_i =0$

觀察上式 $(*)$:可知如果我們有 $ \varepsilon \cdot c^T y >0 $ 則 Cost 就可以被我們降低。故定義 $\varepsilon := \delta \cdot \text{sign}(c^T y)$;則對此$\varepsilon$而言,
\[\begin{array}{l}
{c^T}{\eta ^\varepsilon } = {c^T}{x^*} - \varepsilon  \cdot {c^T}y\;\\
 \Rightarrow {c^T}{\eta ^\varepsilon } = {c^T}{x^*} - \delta \cdot \text{sign}\left( {{c^T}y\;} \right) \cdot {c^T}y\;\\
 \Rightarrow {c^T}{\eta ^\varepsilon } = {c^T}{x^*} - \delta \left| {{c^T}y\;} \right| \le {c^T}{x^*}
\end{array}
\]故我們得到 $\eta^\varepsilon$ 為對於 $|\varepsilon| \leq \delta$最佳解。故Optimality 被保證;亦即
我們現在找到 標準型式的Linear Programming 問題的 feasible solution $\eta^\varepsilon$,接著我們保證了此解的Optimality。
接著我們回憶前一篇得到的結果
----
標準型式的Linear Programming 問題若存在feasible solution,則必定存在一個 basic + feasible solution,
----
故我們得到
對具有標準形式的Linear Programming問題,若其存在一個optimal + feasible solution $x^*$,則必定存在一個optimal basic + feasible solution $\tilde x^*$。 至此證明完畢。 $\square$

============
Comments

一般而言,前篇的定理與Optimality Theorem合稱為 Fundamental Theorem of LP

我們將其寫在下方
=================================
Theorem (Fundamental Theorem of LP):
考慮標準型式的線性規劃 (Standard LP)問題

令 $x \in \mathbb{R}^n$,
\[\begin{array}{l}
\min {c^T}x\\
s.t.\\
\left\{ \begin{array}{l}
Ax = b,\\
x \ge 0
\end{array} \right.
\end{array}\]其中 $A$ 為 $m \times n$ 矩陣且 $n>m$, $rank(A) = m$,$A$ 沒有全為零的column$;b \geq 0$,
1. 若其存在一個 Feasible Solution,則必存在一個 Basic + Feasible 的解
2. 若其存在一個optimal + feasible solution,則必定存在一個optimal basic + feasible solution 。
=================================

ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd, Chapter 15.


==============
延伸閱讀
[最佳化] 淺談線性規劃(0)- Standard form of Linear Programming

[最佳化] 淺談線性規劃(1)- Feasible solution and Basic solution

[最佳化] 淺談線性規劃(2)- Optimality Theorem

[最佳化] 淺談線性規劃(3)- Geometric View of LP

[最佳化] 淺談線性規劃(4)- How to move from one Basic Feasible solution to another- An Example

3/27/2011

[最佳化] 淺談線性規劃(1)- Feasible solution and Basic solution

延續上一篇 [最佳化] 淺談線性規劃(0)- Standard form of Linear Programming,這次要跟大家介紹 線性規劃(LP)問題的求解。由先前介紹我們知道,對任意含有線性不等式拘束的LP問題都可以將其轉換成標準型式的LP問題。亦即含有 等式拘束的LP問題。

\[\begin{array}{l}
\min {c^T}x\\
s.t.\\
\left\{ \begin{array}{l}
Ax = b,\\
x \ge 0
\end{array} \right.
\end{array}\]其中 $A$ 為 $m \times n$ 矩陣且 $n>m$, $rank(A) = m$,$A$ 沒有全為零的column$;b \geq 0$,

在介紹之前要先介紹兩種解的概念

============================
Definition: (Feasible solution and Basic solution)
一個向量 $x \in \mathbb{R}^n$ 稱作 可行解(Feasible solution),如果其滿足拘束條件,亦即 $x \geq 0$ 且 $Ax=b$
一個向量 $x \in \mathbb{R}^n$ 稱作對 $Ax=b$ 的 基本解( Basic Solution) ,若 $x$中 nonzero component 對應到$A$矩陣的線性獨立 Columns。
============================

先給個例子看看這兩種解有甚麼不同

Example
考慮下列拘束條件 $Ax=b$:
\[\left[ {\begin{array}{*{20}{c}}
1&2&{ - 2}\\
1&3&{ - 2}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{x_1}}\\
{{x_2}}\\
{{x_3}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
1\\
1

\end{array}} \right]\]
觀察上式,為三個變數兩個拘束條件,故可以任意其中一個變數可被任意給定。另外我們發現$A$中的第一個column 與 第三個 column 彼此線性相關。故現在如果我們選 $x_2=0$取 第一個column 與 第三個 column ,會得到一個解
\[ \Rightarrow \left[ {\begin{array}{*{20}{c}}
{{x_1}}\\
{{x_2}}\\
{{x_3}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
3\\
0\\
1
\end{array}} \right]\]
由於此解$\left[ {\begin{array}{*{20}{c}}
{{x_1}}\\
{{x_2}}\\
{{x_3}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
3\\
0\\
1
\end{array}} \right]$滿足拘束條件,故我們說此解為 Feasible solution,但是其中非零的元素
\[\left[ {\begin{array}{*{20}{c}}
{{x_1}}\\
{}\\
{{x_3}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
3\\
{}\\
1
\end{array}} \right]\]對應到矩陣$A$的column彼此為線性相關,故此解並非Basic solution。
也就是說 Feasible Solution $\nRightarrow$ Basic Solution。

再來如果我們選 矩陣$A$的第二個 Column 與 第三個Column (彼此線性獨立),且令 $x_1 =0$,則我們得到 Basic Solution如下
\[\left\{ \begin{array}{l}
{x_1} = 0\\
2{x_2} - 2{x_3} = 1\\
3{x_2} - 2{x_3} = 1
\end{array} \right. \Rightarrow \left[ {\begin{array}{*{20}{c}}
{{x_1}}\\
{{x_2}}\\
{{x_3}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
0\\
0\\
{ - 1/2}
\end{array}} \right]\]
但注意到此解第三個element為負
\[\left[ {\begin{array}{*{20}{c}}
{{x_1}}\\
{{x_2}}\\
{{x_3}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
0\\
0\\
{ - 1/2}
\end{array}} \right]\]
亦即,不符合 Feasbility,故可得到

Basic Solution $\nRightarrow$ Feasible Solution

那麼我們要的是甚麼??
我們要的是 Basic 且 Feasible 的Solution。下面的定理告訴我們標準型式的線性規劃問題如何才能確保可以得到 Basic + Feasible的Solution。

=================================
Theorem:
考慮標準型式的線性規劃 (Standard LP)問題

令 $x \in \mathbb{R}^n$,
\[\begin{array}{l}
\min {c^T}x\\
s.t.\\
\left\{ \begin{array}{l}
Ax = b,\\
x \ge 0
\end{array} \right.
\end{array}\]其中 $A$ 為 $m \times n$ 矩陣且 $n>m$, $rank(A) = m$,$A$ 沒有全為零的column$;b \geq 0$,
若其具備一個 Feasible Solution,則必有一個 Basic + Feasible 的解
=================================

Proof
假設$x \in \mathbb{R}^n$ 為 Standard LP的一個Feasible soltuion,我們要證明必有一個 Basic + Feasible的解。

為方便起見,我們說 $x$ 有 p個nonzero 元素,亦即 $x_1, x_2, ...x_p$。因為$x$已為 Feasible,故我們只須證明$x$是Basic solution。亦即須證明 非零的元素對應$A$中線性獨立的Columns $a^1, a^2,...a^p$

現在考慮下面兩種情況

CASE1
若$x$中非零的元素$x_1, x_2, ...x_p$ 對應 $A$中的Columns $a^1, a^2,...a^p$ 為線性獨立。則$x$即為 Feasible + Basic Solution。

CASE2
若$x$中非零的元素$x_1, x_2, ...x_p$ 對應 $A$中的Columns $a^1, a^2,...a^p$ 為線性相關。則由線性相關的定義可知:存在一組不全為零的 $y_1, y_2,...y_p$ 為實數純量使得下列線性組合
\[
\sum_{i=1}^p y_i a^i =0 \ \ \ \ (*)
\]現在令 $\varepsilon >0$,定義下列向量 $\eta^{\varepsilon} $
\[\eta _i^\varepsilon : = \left\{ \begin{array}{l}
{x_i} - \varepsilon {y_i}, \ \text{ for $i \le p$}\\
0, \ \text{for $i > p$}
\end{array} \right.\]
則若$\varepsilon$足夠小的時候,我們說 $\eta _i^\varepsilon $ 為 Feasible

WHY?

因為如果$\varepsilon =0 \Rightarrow \eta _i^\varepsilon = x_i \Rightarrow x_i$ 為 Feasible (by Definition of $x$)
如果  $\varepsilon $ 非常小,則由拘束條件
\[
A \cdot \eta^{\varepsilon} = A (x - \varepsilon y) = Ax - A \varepsilon y
\]
由線性相關的結果 $(*)$可知,$A \varepsilon y =0$,亦即上式變為
\[
A \cdot \eta^{\varepsilon} = Ax = b
\]
符合拘束條件,故若$\varepsilon$足夠小的時候,我們說 $\eta _i^\varepsilon $ 為 Feasible。

所以現在問題變成那麼可以挑選多大的$\varepsilon$仍可使得$\eta^{\varepsilon}$ 為 Feasible?

我們把此$\varepsilon$ 稱作 $\varepsilon^*$
$(\star)$定義
\[\varepsilon^* : = \mathop {\min }\limits_i \left\{ {\frac{{{x_i}}}{{{y_i}}}:{y_i} > 0} \right\}
\]則$\eta^{\varepsilon^*}$為 Feasible,且最多$p-1$非零Columns,
$a^1, a^2, ... a^{p-1}$

若此組 Columns為線性獨立,則$\eta^{\varepsilon^*}$為Basic。亦即
$\eta^{\varepsilon^*}$為Basic + Feasible。則我們得到欲證明的結果。

反之若Columns $a^1, a^2, ... a^{p-1}$ 仍 為線性相關,則我們重複上述的演算步驟 $(\star)$,得到
${{\tilde \eta }^{{\varepsilon ^*}}}$為Feasible且最多$p-2$非零Columns。

不斷重複上述步驟,最終我們會落到某個$x$ 且只有一個非零元素。
又因為 $A$ 沒有全為零的column,故其必為線性獨立。亦即
$x$ 為 Basic Solution。
且由假設 $x$ 為Feasible,故 $x$ 為 Feasible + Basic。至此證明完畢。


ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd, Chapter 15.

==============
延伸閱讀
[最佳化] 淺談線性規劃(0)- Standard form of Linear Programming

[最佳化] 淺談線性規劃(1)- Feasible solution and Basic solution

[最佳化] 淺談線性規劃(2)- Optimality Theorem

[最佳化] 淺談線性規劃(3)- Geometric View of LP

[最佳化] 淺談線性規劃(4)- How to move from one Basic Feasible solution to another- An Example

[最佳化] 淺談線性規劃(0)- Standard form of Linear Programming

這次要介紹最佳化中一類 重要問題 線性規劃(Linear Programming, LP):

什麼是線性規劃?

簡單說就是 目標成本函數(Cost function)為線性,且約束條件為線性不等式;欲求解最佳解 (最大or最小化)。亦即:
\[\begin{array}{*{20}{l}}
{\min {c^T}u}\\
{s.t.}\\
{\left\{ {\begin{array}{*{20}{l}}
{Au \le b,}\\
{u \ge 0}
\end{array}} \right.}
\end{array}
\]上式稱為一般 或者 典型LP問題 (Canonical form)。這種典型的線性規劃(LP)問題可以改寫成 LP標準式 (Standard form) 如下:
========================

令 $x \in \mathbb{R}^n$,
\[\begin{array}{l}
\min {c^T}x\\
s.t.\\
\left\{ \begin{array}{l}
Ax = b,\\
x \ge 0
\end{array} \right.
\end{array}\]其中 $A$ 為 $m \times n$ 矩陣且 $n>m$, $rank(A) = m$,$A$ 沒有全為零的column$;b \geq 0$,

========================
Comments:
1. $x \in \mathbb{R}^n$,亦即我們有 $n$個變數,$A$為$m \times n$矩陣表示我們有$m$個拘束條件。$rank(A)=m$,暗示 $n>m$ (n 變數 多於 m 拘束條件) 確保nontrivality,因為如果$n =m$,則我們不需要最佳化問題因為此問題存在唯一解 $x = A^{-1}b$或者無解。

2. $rank(A)=m$ 確保 rows 是線性獨立(也就是各個拘束條件各自獨立)。

3. $c^T x = c_1 x_1 + c_2 x_2 + ... + c_n x_n$
但注意到,並不是每一個LP問題都符合上面的標準形式,故我們需要將其改寫轉換。

4. 關於求解LP問題:一般而言一旦線性規劃問題確立;使用者可以直接透過 MATLAB 指令 linprog 指令進行求解。此指令使用方法並非本文討論目標故在此不再贅述。有興趣讀者可直接參考 MATLAB help 該指令進行查閱。

=======================
下面給出一個簡單的例子來說明如何轉換


Example 1 

考慮下列LP最佳化問題
\[\begin{array}{l}
\min J\left( u \right) = \frac{{{u_1}}}{{30}} + \frac{{{u_1}}}{{15}}\\
s.t.\\
\left\{ \begin{array}{l}
2{u_1} + 2{u_2} \le 10\\
2{u_1} + 2{u_2} \ge 4\\
{u_2} \ge 1.5{u_1}\\
{u_1} \ge 0,{u_2} \ge 0
\end{array} \right.
\end{array}\]
則我們可將上式轉換成標準型式;

首先對拘束條件,我們可改寫為
\[\left\{ \begin{array}{l}
2{u_1} + 2{u_2} \le 10\\
2{u_1} + 2{u_2} \ge 4\\
{u_2} - 1.5{u_1} \ge 0
\end{array} \right. \Rightarrow \left\{ \begin{array}{l}
2{u_1} + 2{u_2} + {y_1} = 10\\
2{u_1} + 2{u_2} - {y_2} = 4\\
{u_2} - 1.5{u_1} - {y_3} = 0
\end{array} \right.\]注意到上式中的 $y_1, y_2, y_3$ 為額外加入的變數且 $y_i \geq 0 \ \forall i$。一般稱之為slack variable (for $+y_1$) 與 surplus variable (for $-y_2, -y_3$)
再者,令
\[x = \left[ {\begin{array}{*{20}{c}}
{{u_1}}&{{u_2}}&{{y_1}}&{{y_2}}&{{y_3}}
\end{array}} \right]^T\],將拘束條件改寫為矩陣形式 為 $A x = b$ 且 $x \geq 0$的形式
\[\begin{array}{l}
\underbrace {\left[ {\begin{array}{*{20}{c}}
2&2&1&0&0\\
2&2&0&{ - 1}&0\\
{ - 1.5}&1&0&0&{ - 1}
\end{array}} \right]}_A\underbrace {\left[ {\begin{array}{*{20}{c}}
{{u_1}}\\
{{u_2}}\\
{{y_1}}\\
{{y_2}}\\
{{y_3}}
\end{array}} \right]}_x = \underbrace {\left[ {\begin{array}{*{20}{c}}
{10}\\
4\\
0
\end{array}} \right]}_b\\
 \Rightarrow Ax = b
\end{array}\]
且注意到 $x \geq 0$
接著,我們改寫目標函數  $J(u) = \frac{u_2}{30} + \frac{u_1}{15}$ 為 $c^T x$ 的形式
\[\underbrace {\left[ {\begin{array}{*{20}{c}}
{\frac{1}{{30}}}&{\frac{1}{{15}}}&0&0&0
\end{array}} \right]}_{{c^T}}\underbrace {\left[ {\begin{array}{*{20}{c}}
{{u_1}}\\
{{u_2}}\\
{{y_1}}\\
{{y_2}}\\
{{y_3}}
\end{array}} \right]}_x\]
至此我們便完成改寫,也就是把此例轉換為標準型式

======================

現在我們考慮一個稍微複雜一點的例子,看看能否將其轉換為標準型式

Example 2

考慮下列最佳化問題
\[\begin{array}{l}
\min \left| {{u_1}} \right| + \left| {{u_2}} \right| + \left| {{u_3}} \right|\\
s.t.\\
\left\{ \begin{array}{l}
{u_1} + {u_2} \le 1\\
2{u_1} + {u_3} = 3
\end{array} \right.
\end{array}\]

注意到cost function 含有絕對值(非線性函數),看起來似乎希望渺茫?但如果仔細觀察一下絕對值特性,如果可以分段表達擇其仍為線性函數。故現在問題變成我們應該如何才能將絕對值成功改寫呢?

首先定義新的變數
\[\begin{array}{l}
{u_1}^ + : = \left\{ \begin{array}{l}
0, \ \text{if} \ {u_1} \le 0\\
{u_1}, \ \text{if} \ {u_1} > 0
\end{array} \right. \Rightarrow {u_1}^ +  \ge 0\\
{u_1}^ - : = \left\{ \begin{array}{l}
0, \ \text{if} \ {u_1} \ge 0\\
{-u_1}, \ \text{if} \ {u_1} < 0
\end{array} \right. \Rightarrow {u_1}^ -  \ge 0
\end{array}\]則我們得到
\[\begin{array}{l}
{u_1} = u_1^ +  - u_1^ - \\
|{u_1}| = u_1^ +  + u_1^ -
\end{array}\]
同樣的方法定義$u_2^+, u_2^-, u_3^+, u_3^- \geq 0$使得
\[\begin{array}{l}
{u_2} = u_2^ +  - u_2^ - \\
|{u_2}| = u_2^ +  + u_2^ - \\
{u_3} = u_3^ +  - u_3^ - \\
|{u_3}| = u_3^ +  + u_3^ -
\end{array}\]故我們現在可改寫最佳化問題如下
\[\begin{array}{l}
\min \left\{ {u_1^ +  + u_1^ -  + u_2^ +  + u_2^ -  + u_3^ +  + u_3^ - } \right\}\\
s.t.\\
\left\{ \begin{array}{l}
u_1^ +  - u_1^ -  + u_2^ +  - u_2^ -  \le 1\\
2\left( {u_1^ +  - u_1^ - } \right) + u_3^ +  - u_3^ -  = 3\\
u_1^ + ,u_1^ - ,u_2^ + ,u_2^ - ,u_3^ + ,u_3^ -  \ge 0
\end{array} \right. \Rightarrow \left\{ \begin{array}{l}
u_1^ +  - u_1^ -  + u_2^ +  - u_2^ -  + s = 1\\
2\left( {u_1^ +  - u_1^ - } \right) + u_3^ +  - u_3^ -  = 3\\
u_1^ + ,u_1^ - ,u_2^ + ,u_2^ - ,u_3^ + ,u_3^ - ,s \ge 0
\end{array} \right.
\end{array}\]

======================
再來看個應用的例子:

Example 3 (Manufacturing LP)
考慮一個製造商欲生產四種產品 $U_1, U_2, U_3, U_4$,分別對應的賣價為 $\$6, \$4, \$ 7, \$ 5$。

製造商需要三種資源(inputs)來生產這四種產品,分別是

  1. 工人工時 (man weeks ) (以周計)
  2. 原料A (kilograms of material A) (以公斤計)、
  3. 原料B (boxes of material B) (以箱計)。

另外我們考慮每一週的生產排程中,製造商有如下限制:
不能讓工人超過工時且也不能使用過量的兩種原料。相關的條件資訊如下表:


令 $u_1$ 為生產 $U_1$的量 (production level), $u_2$ 為生產 $U_2$的量, $u_3$ 為生產 $U_3$的量, $u_4$ 為生產 $U_4$的量。

我們可利用上表寫出如下拘束條件
\[\left\{ \begin{array}{l}
1{u_1} + 2{u_2} + 1{u_3} + 2{u_2} \le 20\\
6{u_1} + 5{u_2} + 3{u_3} + 2{u_2} \le 100\\
3{u_1} + 4{u_2} + 9{u_3} + 12{u_2} \le 75
\end{array} \right.
\]且注意到生產量(production level) 不為負值,故我們有額外的拘束 $u_i \geq 0, i=1,2,3,4$

現在若製造商目標為將其利潤最大化,則我們可以定義如下cost function:
\[J\left( u \right) = 6{u_1} + 4{u_2} + 7{u_3} + 5{u_4}
\]故我們有如下最佳化問題
\[\begin{array}{l}
\max J\left( u \right) = 6{u_1} + 4{u_2} + 7{u_3} + 5{u_4}\\
s.t.\\
\left\{ {\begin{array}{*{20}{l}}
{1{u_1} + 2{u_2} + 1{u_3} + 2{u_2} \le 20}\\
{6{u_1} + 5{u_2} + 3{u_3} + 2{u_2} \le 100}\\
{3{u_1} + 4{u_2} + 9{u_3} + 12{u_2} \le 75}
\end{array}} \right.\\
{u_i} \ge 0,i = 1,2,3,4
\end{array}
\]注意到上式並非標準型式,故我們需要進一步改寫成標準型式如下:
\[\begin{array}{l}
\min {c^T}x\\
s.t.\\
\left\{ \begin{array}{l}
Ax = b,\\
x \ge 0
\end{array} \right.
\end{array}
\]引入額外的 Slack variable $y_1, y_2, y_3 \geq 0$,我們得到
\[\begin{array}{l}
\min \left[ { - J\left( u \right)} \right] =  - \left( {6{u_1} + 4{u_2} + 7{u_3} + 5{u_4}} \right)\\
s.t.\\
\left\{ {\begin{array}{*{20}{l}}
{1{u_1} + 2{u_2} + 1{u_3} + 2{u_2} + {y_1} = 20}\\
{6{u_1} + 5{u_2} + 3{u_3} + 2{u_2} + {y_2} = 100}\\
{3{u_1} + 4{u_2} + 9{u_3} + 12{u_2} + {y_3} = 75}
\end{array}} \right.\\
{u_i} \ge 0,i = 1,2,3,4
\end{array}
\]定義
 \[
x := [x_1 \ x_2 \ x_3 \ x_4 \ x_5 \ x_6 \ x_7 ]^T = [u_1 \ u_2 \ u_3 \ u_4 \ y_1 \ y_2 \ y_3 ]^T
\] 將上式進一步改寫成矩陣形式
\[\begin{array}{l}
\min \underbrace {\left[ {\begin{array}{*{20}{c}}
{ - 6}&{ - 4}&{ - 7}&{ - 5}&0&0&0
\end{array}} \right]}_{{c^T}}x\\
s.t.\\
\left[ {\begin{array}{*{20}{c}}
1&2&1&2&1&0&0\\
6&5&3&2&0&1&0\\
3&4&9&{12}&0&0&1
\end{array}} \right]x = \left[ {\begin{array}{*{20}{c}}
{20}\\
{100}\\
{75}
\end{array}} \right]\\
{x_i} \ge 0,i = 1,2,3,4,5,6,7
\end{array}\]

知道怎麼轉換之後,再來我們就要思考一個問題。就是轉換之後 (標準型LP) 所求得的解 根原本未轉換前LP 所求得的解 答案是否一致??
如果是肯定的,這個轉換才顯得有意義? 我們也才能放心求解。

幸好答案是肯定的,前面的工作並沒有白忙一場。
我們將此結果寫成如下定理:

==============================
Theorem
標準型式LP求得的解與 經典型LP等價。亦即其最佳解相同
==============================
Proof: 
首先定義 標準型 與 經典型LP的拘束集合
\[\begin{array}{l}
C: = \left\{ {x :Ax \le b,x \ge 0} \right\}\\
S: = \left\{ {x: Ax +y= b,x \ge 0, y \ge 0} \right\}
\end{array}
\]現在我們要證明兩個等價,亦即需證明 $C = S$。

故首先證明 $C \subset S$
取 $x \in C$,令 $y := b - Ax \ge 0$ ,故 $x \in S$。

在證 $S \subset C$
取 $x \in S$,故存在一組 $y_i \geq 0$ 使得
\[
a_{i1}x_1 + ... +a_{in}x_n + y_i = b_i, i=1,2,...n \\
\Rightarrow a_{i1}x_1 + ... +a_{in}x_n \leq b_i
\]故 $x \in C$ $\square$



ref: E. K. P. Chong, S. H. Zak, An Introduction to Optimization 2nd, Chapter 15.

==============
延伸閱讀
[最佳化] 淺談線性規劃(0)- Standard form of Linear Programming

[最佳化] 淺談線性規劃(1)- Feasible solution and Basic solution

[最佳化] 淺談線性規劃(2)- Optimality Theorem

[最佳化] 淺談線性規劃(3)- Geometric View of LP

[最佳化] 淺談線性規劃(4)- How to move from one Basic Feasible solution to another- An Example

11/15/2010

[微積分] Little-oh 與 Big-oh 符號

一般數學分析中或者演算法分析經常會用到 $O$符號 或者 $o$符號。以下我們先引入定義。

======================
Definition: $f$ is Big-Oh of $g$
令 $f, g$ 為任意函數在 $x = x_0$ 附近可定義。我們說當 $x \to x_0$ 時, $f(x) = O(g(x))$) 若下列條件成立:
存在 $\delta > 0$ 與 正數 $c > 0$ 使得\[
|x - x_0| < \delta \Rightarrow |f(x)| \le c |g(x)| \]======================


離散情況的Big-Oh之定義:
上述定義在離散情況也可以,亦即 $f(n)=O(g(n))$若且唯若 存在 $N \in \mathbb{N}$ 與 正數 $c>0$ 使得 對任意 $n \geq N$ 而言,$|f(n)|\leq cf(n)$。

Example: 比如說線性搜尋演算法最大執行步驟數為 $f_L(n):=4n+5$ 則不難得證 $f_L(n) = O(n)$。(hint: 取 $N=5$ 與 $C=5$即可)

Exercises: 試證 
1. $n=O(n)$, 
2. $1000n = O(n)$, 
3. $2n^3+n = O(n^3)$,
4. $0.001n^{100} = O(n^{100})$。
5. 令 $f(n) = (-1)^n$ 試證明 $f(n) = O(1)$。


Comments: $f(n) = O(1)$ 意指存在 整數 $N\in \mathbb{N}$ 與 正數 $c>0$ 使得對任意 $n\geq N$我們有 $|f(n)|\leq c \cdot 1$。此表明函數 $f$ 有上界(但不一定收斂,請看上述 exercise 5)。





======================
Definition: $f$ is Little-Oh of $g$
我們說 當 $x \to x_0$ 時, $f(x) = o (g(x))$ 若下列條件成立:
對任意 $\varepsilon>0$ 存在 $\delta > 0$  使得
\[ |x - x_0| < \delta \Rightarrow \frac{f(x)}{g(x)} < \varepsilon \]亦即上述等價為 $\displaystyle \lim_{x \to x_0} \frac{f(x)}{g(x)} = 0$
======================


Comments:
1. $o(g(x))$ (要求收斂) 條件比 $O(g(x))$ (僅要求有界) 條件強烈。

2. 我們說某函數 $f$ 在 $x_0$ 處連續亦可以用此 little-oh 符號表達:
\[
f(x) - f(x_0) = o(1) \text{ as $ x \to x_0$}
\]
3. 一般而言,上述定義中的 函數 $g(x)$ 多半考慮為較 $f(x)$ 簡單的函數以用作比較函數 decay or growth rate ;以下我們看幾個例子

Example 1: 選 $g :=1$ 且考慮當 $x \to x_0$ 時,
(a) $f(x) = O(g(x) )= O(1)$ 試解釋其意義:
(b) $f(x) = o(g(x)) = o(1)$ 試解釋其意義:

Solution:
(a) 當 $x \to x_0$ 時,$f(x) = O(g(x) = O(1)$ 由定義可知:存在 $\delta >0$ 與 正數 $c>0$ 使得\[
|x - x_0| < \delta  \Rightarrow |f(x)| \le c |1|
\]亦即 $|f(x)|$ 在 $x= x_0$ 附近有界 (在此例中此界為 $c$)

(b) 當 $x \to x_0$ 時,$f(x) = o(g(x)) = o(1)$ 由定義可知:
\[\mathop {\lim }\limits_{x \to {x_0}} \frac{{f(x)}}{{g(x)}} = \mathop {\lim }\limits_{x \to {x_0}} f(x) = 0\]


Example 2
試證明 若 $f(x) = o(x)$ 則 $\lim_{x \to 0} f(x) = 0$

Proof:
觀察
\[\mathop {\lim }\limits_{x \to 0} f(x) = \mathop {\lim }\limits_{x \to 0} \frac{{f(x)}}{x} \cdot x \;\;\;\;\; (**)
\]接著由於 $f(x) = o(x)$ 由定義可知
\[\mathop {\lim }\limits_{x \to 0} \frac{{f(x)}}{{\left| x \right|}} = 0\]且又知道
\[
\lim_{x \to 0} x =0
\]故 $(**)$ 由極限四則運算關係可得
\[\mathop {\lim }\limits_{x \to 0} f(x) = \mathop {\lim }\limits_{x \to 0} \frac{{f(x)}}{x} \cdot x = 0\]

Example 3
考慮下列數列
$$z_n:= t + o(t/n)n$$ 其中 $o(\cdot)$ 為 little-oh;試求 $\lim_{n\to \infty} z_n =?$

Solution:
我們要計算
\[\mathop {\lim }\limits_{n \to \infty } {z_n} = \mathop {\lim }\limits_{n \to \infty } \left( {t + o\left( {\frac{t}{n}} \right)n} \right)\]
現在考慮任意 sequence $a_n \in o(t/n)$, 則由 little-oh 定義可知
\[\mathop {\lim }\limits_{n \to \infty } \frac{{{a_n}}}{{\frac{t}{n}}} = 0 \Rightarrow \mathop {\lim }\limits_{n \to \infty } \frac{{n{a_n}}}{t} = 0 \]
故現在令 $z_n:= t + n a_n$ 則
\[\mathop {\lim }\limits_{n \to \infty } {z_n} = \mathop {\lim }\limits_{n \to \infty } \left( {t + n{a_n}} \right) = \mathop {\lim }\limits_{n \to \infty } t\left( {1 + \frac{{n{a_n}}}{t}} \right) = t\left( {1 + \mathop {\lim }\limits_{n \to \infty } \frac{{n{a_n}}}{t}} \right) = t\]


控制理論中的類比
令 $e(t)$ 為誤差訊號。若 $e(t) = o(1)$ ,則表示誤差收斂到 $0$。若 $e(t) =O(1)$ 則表示有界,未必趨於 $0$。

令 $\int_0^T e(\tau) d\tau$ 為累積誤差訊號。若 $\int_0^T e(\tau) d\tau = o(T)$則表示 "平均誤差" $\frac{1}{T} \int_0^T e(\tau) d\tau$ 收斂到零。


我們也可以考慮隨機情況的oh符號:

Definition: 隨機序列 $X_T$ 為 $O_p(f(T))$ 若以下條件成立:對任意 $\varepsilon >0$ 存在常數 $C>0$ 與 $T_0$ 使得 $P(|X_T| > C f(T)) < \varepsilon$ 對所有 $T \geq T_0$

Example:
設 $e(t)$ 為均值 $\mathbb{E}[e(t)] :=0$ 且 共變異 ${\rm cov}(e(t), e(s)) = \mathbb{E}[e(t) e(s)]= \sigma^2 \delta(t-s)$ 的白噪音,其中 $\delta$ 為 Dirac delta,則對其積分可得到標準布朗運動
$$W(T) := \int_0^T e(\tau) d\tau$$ 且滿足 $\mathbb{E}[W(T)] = 0$,${\rm var}(W(T)) = \sigma^2 T$。且不難證明 $W(T) \sim \mathcal{N}(0, \sigma^2 T)$故
存在 $K>0$ 使得 $$P(|W(T)| > K \sqrt{T}) = 2 \exp (-\tfrac{K^2}{ 2\sigma^2})$$
現在取 $K = 1$ 則 $\frac{W(T)}{T} = O_p(\sqrt{T})$
若是 $\int_0^T e(\tau) d\tau = o(\sqrt{T})$ 可視為隨機擾動累積。 

4/16/2009

[最佳化] 淺談 Steepest Descent Method (1) - Optimal step size

延續上篇文章 [最佳化] 淺談 Steepest Descent Method (0) -Why Steepest !?,這次我們要介紹 Steepest Descent Method with Optimal Step size

修訂後的Steepest Descent Algorithm 需要甚麼呢?
  1. 初始條件 $u^0$
  2. 最大跌代步長上限(Maximum fixed step size): $H$
  3. Steepest Descent with Optimal Step size的跌代架構(iterative scheme) \[u^{k+1} = u^k - h_k \frac{ \nabla J(u^k)}{|| \nabla J(u^k)||} \ \ \ \ (*)\]
  4. 演算法停止判別機制(stopping criterion) : EX: \[ ||\nabla J(u^k)|| < \varepsilon\]
那麼問題變成 $h_k$ 該怎麼求?

首先我們考慮第 $k$次 跌代,手上有 $u^k$,則我們可以定義
\[
\tilde J(h) := J(u^k - h \frac{ \nabla J(u^k)}{|| \nabla J(u^k)||})
\]接著我們做 Line search 找出一個最佳的 $h \in [0,H] $ ( 亦即 $\min \tilde J(h)$) 把此 $h$ 稱做 $h_k $,也就是說
\[
\tilde J(h_k) = \displaystyle \min_{h \in [0, H]} \tilde J(h)
\]做Line search之後得到的 $h_k$ 再把他放回 $(*)$ 即可!!
\[
u^{k+1} = u^k - h_k \frac{ \nabla J(u^k)}{|| \nabla J(u^k)||} \ \ \ \ (*)
\]上式即稱為 Steepest Descent with Optimal Step size (此Optimal step 由Line search 對 $ \min J(u^k - h \frac{ \nabla J(u^k)}{|| \nabla J(u^k)||})$ 求得)

對於Steepest Descent Algorithm而言,我們有 現在的跌代步的梯度 與下一個跌代步的梯度互為垂直;亦即
\[
\left ( \nabla J(u^k) \right )^T \cdot \nabla J(u^{k+1}) =0
\]現在如果我們考慮更一般的情況,

===============================
Theorem: (Optimal Descent Condition)
考慮 $v \in \mathbb{R}^n$ 為某一個方向 (不必是梯度),且假設 $h_k$ 把 $\tilde J(u^k + h \cdot v)$最小化,且我們的跌代式為
\[
u^{k+1} = u^k + h_k \cdot v
\]則我們有 $v^T \cdot \nabla J(u^{k+1}) =0$,我們稱此條件為 Optimal Descent Conditon。
===============================

Proof:
我們欲證  $v^T \cdot \nabla J(u^{k+1}) =0$,

故由  $h_k$ 把 $\tilde J(u^k + h \cdot v)$最小化 的假設,我們已知一階必要條件成立,故可利用一階必要條件FONC
\[\frac{{\partial \tilde J({u^k} + h \cdot v)}}{{\partial h}} = 0
\]為了方便起見,現在令 $z: = {u^k} + h \cdot v$,則上式可推得
\[\begin{array}{l}
\frac{{d\tilde J(z)}}{{dh}} = \frac{{\partial \tilde J(z)}}{{\partial {z_1}}}\frac{{\partial {z_1}}}{{\partial h}} + \frac{{\partial \tilde J(z)}}{{\partial {z_2}}}\frac{{\partial {z_2}}}{{\partial h}}... + \frac{{\partial \tilde J(z)}}{{\partial {z_n}}}\frac{{\partial {z_n}}}{{\partial h}} = 0\\
 \Rightarrow \frac{{d\tilde J(z)}}{{dh}} = \frac{{\partial \tilde J(z)}}{{\partial {z_1}}}{v_1} + \frac{{\partial \tilde J(z)}}{{\partial {z_2}}}{v_2}... + \frac{{\partial \tilde J(z)}}{{\partial {z_n}}}{v_n} = 0\\
 \Rightarrow \frac{{d\tilde J(z)}}{{dh}} = \left[ {\begin{array}{*{20}{c}}
{{v_1}}&{{v_2}}& \cdots &{{v_n}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{\frac{{\partial \tilde J(z)}}{{\partial {z_1}}}}\\
{\frac{{\partial \tilde J(z)}}{{\partial {z_2}}}}\\
 \vdots \\
{\frac{{\partial \tilde J(z)}}{{\partial {z_n}}}}
\end{array}} \right] = 0\\
 \Rightarrow \frac{{d\tilde J(z)}}{{dh}} = {v^T}\nabla \tilde J(z) = {v^T}\nabla \tilde J({u^k} + h \cdot v) = {v^T}\nabla \tilde J({u^{k + 1}}) = 0
\end{array}
\]最後一個等式成立是由於 $h$ 最小化 $\tilde J(u^k + h \cdot v)$,故稱此$h=h_k$,又由跌代式的假設 $u^{k+1} = u^k + h_k \cdot v$。 $\square$


那麼現在我們來看看如果目標函數是標準二次的情況

考慮如下標準二次函數
\[
J(u) = u^T A u + b^T u + c, \ A=A^T, \ A \succ 0
\]注意到上述二次函數可以直接用 一階必要條件FONC ( $\nabla J(u^k) =0$) 與 二階充分條件SOSC ($\nabla^2 J(u^k) \succ 0$) 直接求解,可得最佳解為 $u^* = \frac{1}{2} A^{-1}b$

那麼如果我們現在採用 Steepest Descent Algorithm with Optimal Step size $h_k$ ,我們想要知道選怎樣的 $h_k$ 可以得到同樣的最佳解呢?

故首先給定初始條件 $u^0$, 且給定足夠大的步長上限 $H$,

接著我們寫下 Line Search需要的式子
\[
\tilde J (h) := J(u^k  - h \cdot \nabla J(u^k)) \ \ \ \ (*)
\] ,目標是要找出 $h =?$

首先觀察 $(*)$,我們可以先計算上式的梯度部分,由 FONC 可知梯度為
\[
\nabla J(u^k) = 2 A u^k + b
\]故將其代入 $(*)$ 可得
\[
\tilde J(h): = J\left( {{u^k} - h\left( {2A{u^k} + b} \right)} \right)
\]又因為
\[
J(u) = u^T A u + b^T u + c
\]故可推得
\[\begin{array}{l}
 \Rightarrow \tilde J(h) = {\left( {{u^k} - h\left( {2A{u^k} + b} \right)} \right)^T}A\left( {{u^k} - h\left( {2A{u^k} + b} \right)} \right)\\
\begin{array}{*{20}{c}}
{}&{}&{}&{}
\end{array} + {b^T}\left( {{u^k} - h\left( {2A{u^k} + b} \right)} \right) + c
\end{array}
\]由於 $h$ 為最小化 $\tilde J(h)$ 故由FONC對 $h$ 可知 $\frac{d \tilde J(h)}{dh} =0$ 亦即
\[\begin{array}{l}
 \Rightarrow \frac{{d\tilde J(h)}}{{dh}} = 0\\
 \Rightarrow  - {u^k}^TA\left( {2A{u^k} + b} \right) - {\left( {2A{u^k} + b} \right)^T}A{u^k}\\
\begin{array}{*{20}{c}}
{}&{}&{}&{}
\end{array} + 2h{\left( {2A{u^k} + b} \right)^T}A\left( {2A{u^k} + b} \right) - {b^T}\left( {2A{u^k} + b} \right) = 0\\
 \Rightarrow {h_k}: = h = \frac{1}{2}\frac{{{{\left( {2A{u^k} + b} \right)}^T}\left( {2A{u^k} + b} \right)}}{{{{\left( {2A{u^k} + b} \right)}^T}A\left( {2A{u^k} + b} \right)}}
\end{array}
\]
Comments:
1. 注意到上式中分母為 ${{{\left( {2A{u^k} + b} \right)}^T}A\left( {2A{u^k} + b} \right)}$ 為 $1 \times 1$ 此時分母不再是矩陣或者向量,故可以直接執行除法。且由於我們的假設 $A$ 矩陣為正定矩陣,亦即 $x^T A x >0, \forall x \neq 0$,仔細觀察上式分母,若令 $x:={\left( {2A{u^k} + b} \right)}$,我們確實得到
\[
{{{\left( {2A{u^k} + b} \right)}^T}A\left( {2A{u^k} + b} \right)} = x^T A x >0
\]

4/15/2009

[最佳化] 淺談 Steepest Descent Method (0) -Why Steepest !?

這次要介紹的是最陡坡度法(Steepest Descent Method),又稱 Gradient descent method:

想法:透過負梯度 (negative gradient) 作為最陡坡度,逐步找到 (局部)最小值 (最佳解 $u^*$)

這個演算法需要甚麼呢?
  1. 初始條件 $u^0$
  2. 固定的跌代步長(fixed step size): $h$
  3. Steepest Descent 的跌代架構(iterative scheme) \[u^{k+1} = u^k - h \frac{ \nabla J(u^k)}{|| \nabla J(u^k)||}\]
  4. 演算法停止判別機制(stopping criterion) : EX: 給定誤差 $\varepsilon>0$,檢驗 \[ ||\nabla J(u^k)|| < \varepsilon\]
那麼現在我們來解決一個問題:

為什麼此法被稱作 "最陡" 坡度? 
也就是說 為什麼Iterative scheme 中的方向 $ \nabla J(u^k)$ 被稱做是最陡(Steepest)方向??

考慮目標函數 $J: \mathbb{R}^n \rightarrow \mathbb{R}$,其在某點 $u^0 \in \mathbb{R}$ 與方向$v$ 的方向導數(Directional derivative at point $u^0$ in direction $v$)定義如下:
\[
{\left. {\frac{{\partial J\left( u \right)}}{{\partial v}}} \right|_{u = {u^0}}}: = {\left[ {\nabla J({u^0})} \right]^T} \cdot \frac{v}{{\left\| v \right\|}}
\]由Cauchy-Schwarz inequality $\left| {{x^T}y} \right| \le \left\| x \right\|\left\| y \right\|$,可推得上式如下:
\[
\left| {{{\left[ {\nabla J({u^0})} \right]}^T} \cdot \frac{v}{{\left\| v \right\|}}} \right| \le \left\| {\nabla J({u^0})} \right\|\frac{{\left\| v \right\|}}{{\left\| v \right\|}}
\]現在如果我們把方向 $v$ 選成梯度方向,亦即
\[
v = \nabla J(u^0)
\]則可發現上述不等式變成
\[\begin{array}{l}
 \Rightarrow \left| {{{\left[ {\nabla J({u^0})} \right]}^T} \cdot \frac{{\nabla J({u^0})}}{{\left\| {\nabla J({u^0})} \right\|}}} \right| \le \left\| {\nabla J({u^0})} \right\|\\
 \Rightarrow \frac{{{{\left\| {\nabla J({u^0})} \right\|}^2}}}{{\left\| {\nabla J({u^0})} \right\|}} \le \left\| {\nabla J({u^0})} \right\|\\
 \Rightarrow \left\| {\nabla J({u^0})} \right\| = \left\| {\nabla J({u^0})} \right\|
\end{array}
\]故可知當我們選 $v = \nabla J(u^0) $ Cauchy-Schwarz inequality 的 "等" 式成立,故 $\nabla J(u^0) $ 為使方向導數最大的值! 亦即 最陡方向(Steepest)!

至於為什麼我們說Steepest Descent (最陡坡度下降),是因為注意到Steepest Descent 演算法中跌代式子
\[u^{k+1} = u^k - h \frac{ \nabla J(u^k)}{|| \nabla J(u^k)||}
\] 的方向為負,亦即 $- \nabla J(u^k)$ !!,故我們是朝著最陡的方向往下逐步得到最佳解(最小值) $u^*$

現在我們給個例子:

Example
考慮如下目標函數
\[
J(u) = {\left( {11 - {u_1} - {u_2}} \right)^2} + {\left( {1 + 10{u_2} + {u_1} - {u_1}{u_2}} \right)^2}
\] 1. 試證上述目標函數最佳解為 $[13, 4]^T$
2. 繪製其 $0 \le u_1 \le 20$ 與 $ 0 \le u_2 \le 15$ 的範圍
3. 給定初始值 $u^0 = [8, 12]^T $使用上述 Steepest Descent algorithm 與不同的固定步長 $h=0.01, 1.0$看看發生甚麼事情

Solution:
1. 透過一階必要條件(FONC) 與 二階充分條件(SOSC)即可求得最佳解 $u^* = [13,
4]^T$。在此不贅述。

2. 透過MATLAB contour 指令可以繪製目標函數的等高線圖如下

3. 考慮$u^0 = [8, 12]^T$ ,並考慮 $h=0.01$的情況,透過MATLAB實現上述Steepest Descent Algorithm並限制停止判別為跌代步驟不超過兩千步 $k_{max} := 2,000$。
在約 $k=1000$ 步之後,可收斂到 $u = [13.01, 3.993]$。如下圖所示: (點圖放大);


若現在考慮 $h=1.0$ 則Steepest Descent 展示了Zig-Zag的現象,最終落在 $u=[12.6, 3.601] to [13.31, 4.08]$之間,且跌代步如下圖所示 (點圖放大)


注意到上述例子中,對於較大的固定步e.g., $h=1.0$ ,Steepest Descent 表現出來回震盪的情況,對於較小的固定步 e.g., $h=0.01$,Steepest Descent 收斂緩慢 (超過一千步才收斂)。

Summary: 
Steepest Descent Algorithm 雖然想法很直覺,但事實上本質有兩個重大的缺點:
1. 注意到Steepest Descent的跌代式子中除了要計算梯度之後,仍需要給定固定步長 $h$,如果固定步長 $h$ 太大!,則會演算法產生衝過頭的情形。也就是說假設 $h=100$ (100步長單位) 當我可能今天只需要1步就到達最佳解,但Steepest Descent Method卻被迫每次都要走步長單位為 $100$ ,則永遠只能在最佳解附近震盪永遠到不了最佳解,

2. 如果固定步長 $h$ 太小,則雖然在某種程度上解決了震盪問題,但此時收斂速度會變得異常緩慢。

如何解決上述的問題!??
我們需要徹底地拔除固定步長的限制,此法稱做 Steepest Descent with Optimal Step Algorithm。
亦即我們將原本的Steepest Descent Algorithm的跌代式中的固定步長 $h$改成動態步長 $h_k$
\[
u^{k+1} = u^k - h_k \frac{\nabla J(u^k)}{|| \nabla J(u^k)||}
\]至於此 $h_k$該怎麼選? 有興趣的讀者可以參考下篇
[最佳化] 淺談 Steepest Descent Method (1) - Optimal step size

[Call for Papers] IEEE TCST Special Issue: Advanced Control Technologies for Financial Systems

Submission deadline: February 1, 2027 https://ieeecss.org/publication/transactions-control-systems-technology/special-issues