第三章 分析方法
3.2 集中式演算法
其中,𝒙, 𝒓, 𝒚分別代表𝑥𝑖𝑘, 𝑟𝑖𝑘, 𝑦𝑖𝑘所構成之向量。
3.2 集中式演算法
在本節中,我們參考[6]的做法,將(3.2)之連線最佳化問題改寫為一個多 維度𝒙的配置問題。然後,利用對偶分解(dual decomposition)的方法,以獲得 最佳的目標值。根據小型範例的測試結果顯示,該目標值與窮舉法的最佳目 標值相同;然而,由於求解過程不同,本論文之方法可以更快速找到最佳解。
考慮(3.2)並假設𝑥𝑖𝑘是已知的,也就是假設𝒙是一個可行解。然後,便可 藉此求得(3.2)對應之𝑟𝑖𝑘與最佳之𝑦𝑖𝑘,其過程介紹如後。首先,可將(3.2)之目 標改寫為 :
max𝒙,𝒓,𝒚∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘l 𝑟𝑖𝑘𝑦𝑖𝑘 = max𝒙,𝒓,𝒚∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘(l 𝑟𝑖𝑘+ l 𝑦𝑖𝑘)
= max𝒙,𝒓,𝒚∑𝑖∈ ∑𝑘∈ (𝑥𝑖𝑘l 𝑟𝑖𝑘+ 𝑥𝑖𝑘l 𝑦𝑖𝑘) . (3.3)
根據香濃定理(Shannon's theorem), 𝑟𝑖𝑘可以根據下式求得:
𝑟𝑖𝑘 = 𝐵 l 2(1 + 𝑖𝑘), (3.4)
其 中 𝐵 為 頻 寬 , 𝑖𝑘為 用 戶 i 與 AP k 之 間 鏈 路 的 訊 號 雜 訊 功 率 比 (signal-to-noise ratio, SNR),或簡稱訊雜比。該數值可以透過測量用戶i與AP k 之間的距離後計算得知,詳細計算如 2.2 節所述。
令𝑛𝑘為AP k的用戶連線數量,也就是:
𝑛𝑘 = ∑𝑖∈ 𝑥𝑖𝑘. (3.5)
根據(3.3)且假設𝑥𝑖𝑘為已知,計算最佳的𝑦𝑖𝑘相當於下列最佳化問題,其中 𝑦𝑖𝑘 0,且∑𝑖∈𝐶𝑦𝑖𝑘 1:
max𝒚∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘l 𝑦𝑖𝑘 = max𝒚∑𝑘∈ ∑𝑖∈ 𝑘l 𝑦𝑖𝑘. (3.6)
其中 𝑘代表與AP k連線用戶的集合,而該集合中用戶的數量應為𝑛𝑘。透過簡 單的對數運算,(3.6)可以輕易地改寫為:
max𝒚∑𝑘∈ ∑𝑖∈ 𝑘l 𝑦𝑖𝑘 = max𝒚∑𝑘∈ l ∏𝑛𝑖𝑘𝑦𝑖𝑘. (3.7)
另外,由於對數為遞增函數,(3.7)等同於下列最佳化問題:
max𝒚>𝟎 ∏𝑛𝑖𝑘𝑦𝑖𝑘,
𝑠. 𝑡. ∑𝑛𝑖=1𝑘 𝑦𝑖𝑘 1. (3.8)
然後,根據算幾不等式(arithmetic-geometric mean inequality),可以得知當 𝑦1𝑘 = 𝑦2𝑘 = ⋯ = 𝑦𝑛𝑘 = 1 𝑛⁄ 時,可以最大化目標值,關於算幾不等式之說𝑘
明與證明,詳見附錄A。於是,我們可以求得最佳之𝑦𝑖𝑘為:
𝑦𝑖𝑘 = 1
𝑛𝑘. (3.9)
所以,(3.2)之目標可以改寫為:
max𝒙,𝒓,𝒏∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘l 𝑟𝑖𝑘− ∑𝑘∈ 𝑛𝑘l 𝑛𝑘. (3.10)
令𝒃𝒊𝒌 = 𝐥𝐨𝐠 𝒓𝒊𝒌,可以使得(3.2)成為:
max𝒙,𝒓,𝒚 ∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘𝑏𝑖𝑘− ∑𝑘∈ 𝑛𝑘l 𝑛𝑘 s. t. ∑𝑘∈ 𝑥𝑖𝑘 = 1, 𝑥𝑖𝑘 ∈ {0,1}, ∀ ∈ , 𝑘 ∈ ,
∑𝑖∈ 𝑦𝑖𝑘 1, 𝑦𝑖𝑘 ≥ 0, ∀ ∈ , 𝑘 ∈ ,
(3.11)
接下來,我們利用拉格朗日乘數法(Lagrangian multiplier),進一步處理 (3.5)之限制與(3.11)。為此,我們必須放寬𝑥𝑖𝑘,以使得其數值可為介於0與1間 之任何實數,而非原本0或1之整數。令𝝀 = {𝜆𝑘|𝑘 ∈ },可得拉格朗日函數 (Lagrangian function)如下:
(𝒙, 𝒏, 𝝀) = ∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘𝑏𝑖𝑘− ∑𝑘∈ 𝑛𝑘l 𝑛𝑘 + ∑𝑘∈ 𝜆𝑘(𝑛𝑘 − ∑𝑖∈ 𝑥𝑖𝑘)
= ∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘(𝑏𝑖𝑘− 𝜆𝑘)+ ∑𝑘∈ 𝑛𝑘(𝜆𝑘 − l 𝑛𝑘). (3.12)
然後,可利用如 2.4 節所介紹之對偶分解(dual decomposition)方法,將(3.11) 所對應之對偶方程式(Lagrangian dual function)寫成(3.13):
min𝝀 (𝒙, 𝒏, 𝝀) = min𝝀𝑓(𝒏, 𝝀) + 𝑔(𝒙, 𝝀) (3.13a)
最後,對於(3.13a)而言,其斜率若為0時,則來到最佳解。也就是
𝜕
𝜕𝜆𝑘 = 𝜕
𝜕𝜆𝑘(∑𝑖∈ ∑𝑘∈ 𝑥𝑖𝑘 𝑖(𝑏𝑖𝑘− 𝜆𝑘)+ ∑𝑘∈ 𝑛𝑘(𝜆𝑘 − l 𝑛𝑘)) = 𝑛𝑘− ∑𝑖∈ 𝑥𝑖𝑘. (3.16)
因此,若對於所有的k, 𝑛𝑘 − ∑𝑖∈ 𝑥𝑖𝑘全為0,(3.13)已求得最佳解𝒙;否 則, 𝜆𝑘將變換新的數值,其變換幅度與各個維度的斜率𝑛𝑘 − ∑𝑖∈ 𝑥𝑖𝑘成 正比。
最後,我們用稍後圖3-3之演算法1計算(3.13)的最佳解。須注意,
(3.2)-(3.3)、(3.6)-(3.7)、(3.10)-(3.12)、(3.13b)之對數,皆為自然對數。另外,
由(3.13c)可以發現儘管𝑥𝑖𝑘放寬在0到1間之任何實數,但是當得到最佳解時,
其所對應之𝑥𝑖𝑘會非0即1。其理由如下。首先,在某次遞迴中,由於b𝑖𝑘與λ𝑘為 定值, (bik − λk)因此為已知。根據(3.1b),∑𝑘∈ 𝑥𝑖𝑘 = 1。於是,如要最大 化(3.13c)之目標,用戶i會選擇所有(𝑏𝑖𝑘− 𝜆𝑘)當中,數值最大所對應之AP k,
也就是k∗ = ar max𝑘(b𝑖𝑘− λ𝑘);於是,𝑥𝑖𝑘∗ = 1;𝑥𝑖𝑘 = 0 ,∀k ≠ k∗。因此,
該放寬並不影響𝑥𝑖𝑘必須非0即1之限制。
須注意隨著放寬𝑥𝑖𝑘使其數值為介於0與1間之任何實數,(3.13a)為(3.11) 的對偶問題(dual problem)。由於(3.11)與(3.5)皆為線性等式(linear equalities);
而且,明顯地存在可行解。以圖3-1為例,圖3-1(b)或3-1(c)即為其中一個可 行解。根據斯萊特的條件(Slater condition),強對偶性(strong duality)將成立,
詳見附錄B。換句話說,(3.11)與(3.13a)所獲得之最佳目標值會相同。
1: //input , , 𝑏𝑖𝑘, 𝜆𝑘 2: Given ;
3: Given ;
4: Given 𝑏𝑖𝑘 , ∀ ∈ , ∀ 𝑘 ∈ ; 5: 𝑥𝑖𝑘 = 0 , ∀ ∈ , ∀ 𝑘 ∈ ; 6: 𝑛𝑘 = 0 ,∀ 𝑘 ∈ ;
7: 𝜆𝑘 = 0 ,∀ 𝑘 ∈ ;
8: δ = 0.01; //內建基本步伐 9:
10: //code:
11: do
12:
𝑛
𝑘= 𝑒
(𝜆𝑘−1);
13: 𝑥𝑖𝑘 = ar 𝑚𝑎𝑥𝒙∑𝑖∈ ∑𝑘∈ (𝑏𝑖𝑘− 𝜆𝑘)𝑥𝑖𝑘; 14: 𝜆𝑘 = 𝜆𝑘− δ × (𝑛𝑘 − ∑𝑖∈ 𝑥𝑖𝑘);
15: while 0 < 𝑥𝑖𝑘 < 1 AND ∑𝑘∈ 𝑥𝑖𝑘 = 1 AND 𝑛𝑘 − ∑𝑖∈𝐶𝑥𝑖𝑘 ≠ 0 16: end while
17: return 𝒙.
圖 3-3:演算法 1。
關於演算法1的說明如下。首先,設定每個𝜆𝑘之初始值。由於每個𝑏𝑖𝑘為
(a) (b)
圖 3-4: (a)小型測試範例;(b)窮舉法最佳解之連線。
首先,第一輪中, (𝜆1, 𝜆2) = (5,0)。由於(𝑛1, 𝑛2)有4種可能,分別為(3,0)、
(2,1)、(1,2)、(0,3)。根據(3.13b),
(𝑛1, 𝑛2) = (3,0)對應之目標值為3(5 − l 3) + 0(0 − l 0) = 11.7;
(𝑛1, 𝑛2) = (2,1)對應之目標值為2(5 − l 2) + 1(0 − l 1) = 8.6;
(𝑛1, 𝑛2) = (1,2)對應之目標值為1(5 − l 1) + 2(0 − l 2) = 6.4;
(𝑛1, 𝑛2) = (0,3)對應之目標值為0(5 − l 0) + 3(0 − l 3) = −3.3。
明顯地,由於其中最大目標值為11.7,對應的最佳解為(𝑛1, 𝑛2) = (3,0)。其 次,根據(3.13c),用戶i將計算所有(𝑏𝑖𝑘 − 𝜆𝑘),然後與其中最大數值所對應 之AP k進行連線。
對於用戶1來說,若與AP1連線,該數值為(12 − 5) = 7;若與AP2連線,
該數值為(5 − 0) = 5。因此,用戶1會選擇與AP1進行連線。
對於用戶2來說,若與AP1連線,該數值為(12 − 5) = 7;若與AP2連線,
該數值為(10 − 0) = 10。因此,用戶2會選擇與AP2進行連線。
對於用戶3來說,若與AP1連線,該數值為(5 − 5) = 0;若與AP2連線,
該數值為(12 − 0) = 12。因此,用戶3會選擇與AP2進行連線。
因此,第一輪之用戶連線結果為𝑥11 = 𝑥22 = 𝑥32 = 1,其餘為0,如圖3-5(a) 所示。最後,如前所述,我們檢查終止條件是否成立。也就是說,對於所有 的k,(𝑛𝑘 − ∑𝑖∈ 𝑥𝑖𝑘)是否全為 0。然而,
(a)第一輪:𝜆1 = 5
、
𝜆2 = 0 (b)第二輪:𝜆1 = 4、
𝜆2 = 1(c)第三輪:𝜆1 = 3
、
𝜆2 = 2圖 3-5: 小型測試範例在演算法1之運算過程。
由於𝑛1= 3,但∑𝑖∈ 𝑥𝑖1 = 𝑥11+ 𝑥21+ 𝑥31 = 1;
且𝑛2 = 0,但∑𝑖∈ 𝑥𝑖2 = 𝑥12+ 𝑥22+ 𝑥32 = 2。
因此,終止條件並未成立,必須繼續進行下ㄧ輪。而下一輪之𝝀,根據演算 法 1 的 17 行 , 可 計 算 為 𝜆1 = 5 − 0.5 × (3 − 1) = 4 、 與 𝜆2 = 0 − 0.5 × (0 − 2) = 1,或(𝜆1, 𝜆2) = (4,1)。
接著,第二輪中,(𝜆1, 𝜆2) = (4,1)。由於(𝑛1, 𝑛2)有4種可能,分別為(3,0)、
(2,1)、(1,2)、(0,3),根據(3.13b),
(𝑛1, 𝑛2) = (3,0)對應之目標值為3(4 − l 3) + 0(1 − l 0) = 8.7;
(𝑛1, 𝑛2) = (2,1)對應之目標值為2(4 − l 2) + 1(1 − l 1) = 7.6;
(𝑛1, 𝑛2) = (1,2)對應之目標值為1(4 − l 1) + 2(1 − l 2) = 4.6;
(𝑛1, 𝑛2) = (0,3)對應之目標值為0(4 − l 0) + 3(1 − l 3) = −0.3。
根據(3.13c),用戶i將計算所有(𝑏𝑖𝑘− 𝜆𝑘),然後與其中最大數值所對應之AP k
進行連線。