• 沒有找到結果。

研究方法 研究方法 研究方法 研究方法

第三章 第三章

第三章 研究方法 研究方法 研究方法 研究方法

此章節主要針對本論文所提出的 Lemma 以及 CDS 演算法做探討。

主要研究細分如下:

1. 分析在 UDG 中,最大獨立集合(MIS)的大小。

2. 比較 Maximal Independent Set 與 Maximum Independent Set 的差異。

3. 在 UDG 中,以著色分散式演算法建構 CDS 並加以改良。

4. 改良分散式演算法中 MIS 建立連線部份。

5. 利用基因演算法找出在一個單元圓中 MIS 大小為 5 的節點組合。

6. 利用基因演算法尋找 MCDS,演算法分為兩種:

(1) 以隨機節點作為初始族群。

(2) 以演算法找出 CDS 作為初始族群。

7. 探討感測節點 degree 和 CDS 關係。

8. 利用多目標最佳化探討基地台佈置問題。

Random based

基因演算法

Lemma 3:::: 在一個在一個單位圓在一個在一個單位圓單位圓中單位圓中中,中,,,至多至多至多至多獨立集個數為獨立集個數為獨立集個數為獨立集個數為5個個。個個

Independent Set , Ma_IS)與絕對最大獨立集合(Maximum Independent Set , Mu_IS) 。所

謂相對最大獨立集合之解釋:由眾多節點組成的一個獨立集合若加上任意額外節點必

破壞其獨立集合之特性,則該獨立集合為一相對最大獨立集合。故選取方式的不同常

會產生不同的相對最大獨立集合,而不同的相對最大獨立集合其大小可能不同。和相

對最大集合不同的是,絕對最大獨立集合則是所有相對最大獨立集合中大小最大者。

絕對最大獨立集合中的節點組成雖然不一定唯一,但集合大小必唯一。 一般我們所稱

的 MIS 皆是表示 Maximum Independent Set 而非 Maximal Independent Set,但在許多找

MIS 的演算法中,大多皆是找到 Maximal Independent Set。

(a) Ma_IS (b) Mu_IS 圖圖圖

圖15 Ma_IS和和和和Mu_IS差異差異差異差異

針對 Ma_IS 和 Mu_IS,我們利用程式進行模擬比較,使用的演算法是採用窮舉法,

以下是窮舉法的基本介紹:

窮舉法,或稱為暴力破解法,是一種針對於密碼的破解方法。這種方法很像「完 全歸納法」並在密碼破譯方面得到了廣泛的應用,完全歸納法就是把研究目標一一都 驗證而推出結論的歸納法,通常應用在問題的特殊情況不多時。簡單來說就是將 密碼進行一一推算直到找出真正的密碼為止。比如一個四位並且全部由數字組成其密 碼共有 10000 種組合,也就是說最多我們會嘗試 10000 次才能找到真正的密碼。利用 這種方法我們可以運用計算機來進行一一推算,也就是說用我們破解任何一個密碼也

都只是一個時間問題。

Maximal Independent Set 與 Maximum Independent Set 在相同環境下,其大小比較 如下表 5 和表 6。

表表

表 5 Ma_IS 與與 Mu_IS 比較與 比較比較比較 (1 單位圓單位圓單位圓單位圓 , 1000 runs)

節點數 30 50 70

類型

MIS 大小 Ma_IS Mu_IS Ma_IS Mu_IS Ma_IS Mu_IS

1 2 0 1 0 0 0

2 144 0 69 0 32 0

3 680 64 663 2 599 0 4 174 915 265 812 366 543

5 0 21 2 186 3 457

表 表 表

表 6 Ma_IS 與與 Mu_IS 比較與 比較比較比較 (2 單位圓單位圓單位圓單位圓 , 1000 runs)

節點數 30 50 70

類型

MIS 大小 Ma_IS Mu_IS Ma_IS Mu_IS Ma_IS Mu_IS

1 0 0 0 0 0 0

2 9 0 0 0 0 0

3 127 0 49 0 29 0

4 555 28 437 0 359 0 5 289 617 459 106 531 5 6 20 352 53 821 79 682

7 0 3 2 73 2 313

由表 5 和表 6 可知,在相同的節點數量下,利用 Mu_IS 找到的 MIS 大小比例上 會明顯大於 Ma_IS。因為 Ma_IS 則是區域搜尋,所找到的 MIS 會受到區域最佳化的限 制,而 Mu_IS 屬於全域搜尋,故可找到較大的 MIS。

3.3 改良分散

改良分散改良分散式演算法改良分散式演算法式演算法式演算法

在 2.7.2 小節中所提到的分散式 CDS 演算法[18],此演算法針對 MIS 建立連線部 分可將其改良以得到較小的 CDS。

圖圖

圖 16 改良分散式演算法改良分散式演算法改良分散式演算法流程改良分散式演算法流程流程流程 以 ID 大小

找出 MIS

以較少中繼節點數 來建立 DS 連線

NO 有無孤 立節點 建立拓樸

YES

是否所有 DS 皆連通

YES

NO

程式結束 輸出 CDS 大小

Dominator 之間以 Connector 數量 較小為優先考量建立連線。

文獻[28]中提出一個分散式 CDS 建構演算法,以 S.Funke[11]在 2006 年所提出的 之下[28]提出的演算法不但能保有原演算法的 Performance Ratio 且在演算法的計算程 序上更為精簡。

3.4.1 調整調整調整前的調整前的前的前的 CDS 演算法演算法演算法 演算法

拓樸中存在許多個白色感測節點,一開始先隨機挑選其中一個節點使其變成紅 色。以下是調整前的演算法流程:

Step 1: 紅色節點會和其亦為紅點的鄰居比較本身 ID 的大小,ID 較小者會由紅變成黑。

Step 2: 黑色節點的白色鄰居節點會自動變成藍色。之後藍色節點的白色鄰居節點會自 動變成紅色,此時每個紅色節點會有一個指向父代藍色節點的訊號。

Step 3: 藍色節點收到其子代紅色節點變為黑色節點的訊息時,由藍變成灰色節點。

依上述三個步驟,當拓樸中都不存在白色節點和紅色節點時,演算法終止。

(a) (b)

(c) (d)

圖 圖

圖 17 調整前的調整前的調整前的 CDS 節點變色流程調整前的 節點變色流程節點變色流程 節點變色流程

(a)相鄰節點皆為相鄰節點皆為相鄰節點皆為相鄰節點皆為紅色節點紅色節點紅色節點 (b) ID 較紅色節點 較較較小的最先變成黑色小的最先變成黑色小的最先變成黑色小的最先變成黑色 (c)黑色的鄰點變成藍色黑色的鄰點變成藍色黑色的鄰點變成藍色黑色的鄰點變成藍色 (d)紅紅紅紅 色節點鄰居沒有另一個紅色節點比較所以直接變成黑色

色節點鄰居沒有另一個紅色節點比較所以直接變成黑色 色節點鄰居沒有另一個紅色節點比較所以直接變成黑色 色節點鄰居沒有另一個紅色節點比較所以直接變成黑色

3.4.2 調整調整調整後調整後後後的的的 CDS 演算法的 演算法演算法 演算法

由於演算法是針對紅色節點所運作,當紅色節點變色時其2 hop內的節點也須隨之進 行變色的計算。一個紅色節點在一個回合中至少會需要進行一次ID資訊的交換與ID大小 的比較並判斷在此回合是否被挑選為便成黑色的節點,同一個節點維持在紅色階段的回

1 2 3

1 2 3

1 2 3

1 2 3

數量影響該回合節點傳送、接收資料封包與判斷是否變色的次數,整個過程中紅色節點 出現的次數越少則節點可以省下更多在封包傳輸與資料判斷上的電力消耗。我們嘗試依 據文獻[11]中所提出的演算法加以改良,希望能減少建構CDS過程中紅色節點出現的次 數。

文獻[28]中的演算法調整後在每個階段並沒有太大的不同,唯一不同的部份在於 挑選可變黑的紅點的規則。調整前的挑選規則以節點的 ID 大小為唯一考量,紅色節 點的 ID 必須比其他相鄰的紅色節點小才會被挑選為可變為黑色的節點,換句話說若 某紅色節點存在 ID 較小的相鄰紅點則此紅色節點在這個回合無法變為黑色,縱使存 在的較小 ID 紅色節點在此回合不變色。此挑選規則會造成一些可變色的紅色節點在 此回合被忽略,使得讓較多的紅點必須帶入下一回合重新挑選而產生多餘的重覆計算 與能源浪費。

同樣的環境下我們以圖 17 的例子來看,原本的演算法必須經過兩個回合,每回合 三個階段的運算才能結束演算法,經過挑選規則的修改後,演算法的運作過程將如圖 18 所示在一個回合結束。

(a) (b)

(c) 圖圖圖

圖 18 調整調整調整調整後後後後的的的的 CDS 節點變色流程節點變色流程節點變色流程節點變色流程

(a)相鄰節點皆為相鄰節點皆為相鄰節點皆為相鄰節點皆為紅色節點紅色節點紅色節點(b)ID 小的最先預訂變成黑色紅色節點 小的最先預訂變成黑色小的最先預訂變成黑色小的最先預訂變成黑色,,,但同時其他紅色節點得知相鄰,但同時其他紅色節點得知相鄰但同時其他紅色節點得知相鄰但同時其他紅色節點得知相鄰 節點沒有被挑選為變黑色節點訊息時

節點沒有被挑選為變黑色節點訊息時 節點沒有被挑選為變黑色節點訊息時

節點沒有被挑選為變黑色節點訊息時,,,也同時預定變黑色,也同時預定變黑色也同時預定變黑色也同時預定變黑色(c)在黑色都確定變色後在黑色都確定變色後在黑色都確定變色後,在黑色都確定變色後,,,其相其相其相其相 鄰節點也相繼變成藍色

鄰節點也相繼變成藍色 鄰節點也相繼變成藍色 鄰節點也相繼變成藍色

1 2 3

1 2 3

1 2 3

3.4.3 模擬與比較模擬與比較模擬與比較 模擬與比較

750 800 850 900 950 1000 節點數

750 800 850 900 950 1000 節點數

程式模擬的結果顯示文獻[28]提出的演算法與原演算法[11]比較起來可以有效節 省節點交換 ID 資訊與判斷是否變色的過程,不但可以用較少的回合數建構出 CDS 且 建構出來的 CDS 大小上幾乎與原演算法相同,在同樣的環境之下[28]提出的演算法不 但能保有原演算法的 Performance Ratio 且在演算法的計算程序上更為精簡。未來我們 嘗試找出新的機制使演算法在 CDS 大小上能有更好的表現外,也計劃將一些以強化 Performance Ratio 為主的演算法概念帶入以延長網路生命中期為訴求的演算法中,希 望能夠在節能的前提下改善演算法的 Performance Ratio,找出 CDS 大小與網路生命週 期間之最佳平衡點。

3.5 基因演算法

基因演算法基因演算法尋基因演算法尋尋找尋找找找最大獨立集合個數最大獨立集合個數最大獨立集合個數最大獨立集合個數

在先前的研究中,我們提出利用基因演算法的多空間搜尋能力迅速在已佈滿感測 節點的網路中找出 MIS。(網路大小為 1 個單位圓)

在 3.1 中探討 UDG 中存在最大獨立集合數量,1 單位圓中,MIS 最大數量為 5。

這邊將利用基因演算法演化的特性,以高效率找出 MIS 大小為 5 的節點組合。演算法 流程如圖 20:

圖 圖 圖

圖 20 GA 求求求求 MIS 流程流程流程流程

演算法流程:

1. 建立拓樸:

隨機撒 100 個節點,每個節點擁有相同傳輸半徑,拓樸範圍為 1 單位圓。

建立拓樸

計算個體適應值並 找出最大值 Maxf

Maxf =10 演化中止 YES

挑選(複製個體)

<輪盤法&精英法>

交配 (單點)

NO

族群取代 初始族群 (實數編碼)

突變 (位元反轉)

2. 初始族群:

首先,在拓樸中我們先佈置感測節點(模擬數量為 100)。由定理可推出,1 個單位 圓中 MIS 大小最大為 5,故將每組個體以 5 個感測節點的 ID 組成作為基因編碼,

屬於「整數編碼」。在這邊我們設定族群大小為 60(即 60 組個體,每組個體分別具

屬於「整數編碼」。在這邊我們設定族群大小為 60(即 60 組個體,每組個體分別具

相關文件