卞有為,張玲華
(南京郵電大學(xué)通信與信息工程學(xué)院,南京,210023)
無線傳感器網(wǎng)絡(luò)(Wireless sensor network, WSN)是一種隨機(jī)部署在某個(gè)地域范圍內(nèi)的自組織網(wǎng)絡(luò)[1]。WSN 的目標(biāo)是對(duì)部署區(qū)域內(nèi)的目標(biāo)對(duì)象的數(shù)據(jù)進(jìn)行感知、采集和處理,將處理過的數(shù)據(jù)發(fā)送給基站(Base station, BS),BS 將數(shù)據(jù)呈現(xiàn)給監(jiān)測(cè)者。WSN 具有低能耗、低價(jià)格、自組織且部署便捷的特點(diǎn),在環(huán)境勘察、醫(yī)療救助和軍事行動(dòng)中有著廣泛運(yùn)用[2]。
WSN 一般部署在人員無法到達(dá)的特殊區(qū)域,例如戰(zhàn)場(chǎng)、自然災(zāi)害發(fā)生時(shí)的受災(zāi)地區(qū)[3]。從部署階段開始,傳感器節(jié)點(diǎn)的能量補(bǔ)充就幾乎是不可能的,這一直持續(xù)到傳感器節(jié)點(diǎn)死亡。如何高效利用網(wǎng)絡(luò)中的有限能量是WSN 的重要研究方向。在保持傳感器節(jié)點(diǎn)能量不變的情況下,盡可能延長(zhǎng)整個(gè)系統(tǒng)的壽命。
WSN 網(wǎng)絡(luò)中一般有2 種節(jié)點(diǎn):普通節(jié)點(diǎn)和Sink 節(jié)點(diǎn)[4]。Sink 節(jié)點(diǎn)一般只有1 個(gè),它負(fù)責(zé)匯聚全網(wǎng)的信息,發(fā)送給監(jiān)測(cè)者,一般有能量供給。除Sink 節(jié)點(diǎn)外為普通節(jié)點(diǎn),這些傳感器通過人力隨機(jī)部署在需要監(jiān)測(cè)的地區(qū),位置固定,沒有能量供給。
如果每一個(gè)節(jié)點(diǎn)都直接與Sink 節(jié)點(diǎn)通信,普通節(jié)點(diǎn)的能量會(huì)急劇衰耗,而且會(huì)發(fā)生嚴(yán)重的數(shù)據(jù)阻塞,降低網(wǎng)絡(luò)的傳輸效率,延遲增大[5]。針對(duì)這些問題,許多學(xué)者提出了分簇的思想,節(jié)點(diǎn)被分成許多小集群。最初的分布式分簇算法,低功耗自適應(yīng)集簇分層型協(xié)議(Low energy adaptive clustering hierarchy,LEACH),由麻省理工大學(xué)的Heinzelma 等提出,基本思想是WSN 分成若干簇子網(wǎng),每簇子網(wǎng)中有一個(gè)簇頭節(jié)點(diǎn),簇頭節(jié)點(diǎn)接收簇內(nèi)節(jié)點(diǎn)發(fā)送來的的數(shù)據(jù),融合后發(fā)給Sink 節(jié)點(diǎn),他們定義了簇頭選舉閾值函數(shù),協(xié)議采取輪流競(jìng)選簇頭的方式,使網(wǎng)絡(luò)的能量得到更好利用,網(wǎng)絡(luò)的可工作時(shí)間得到了顯著延長(zhǎng)[6]。但是由于簇頭選舉的隨機(jī)性,部署離Sink 節(jié)點(diǎn)過遠(yuǎn)的簇頭容易提前耗盡能量,導(dǎo)致外圍的節(jié)點(diǎn)死亡早,出現(xiàn)熱區(qū)現(xiàn)象,不利于網(wǎng)絡(luò)的生存。Younis 等[7]在LEACH 基礎(chǔ)上提出了改進(jìn)的混合節(jié)能分布式分簇協(xié)議(Hybrid energy-efficient distributed,HEED)協(xié)議,在簇頭選擇時(shí)考慮到節(jié)點(diǎn)的剩余能量,但是沒有考慮到節(jié)點(diǎn)和Sink 的距離,簇頭節(jié)點(diǎn)的分布不均。文獻(xiàn)[8]中給出了LEACH-C 協(xié)議,BS 在后臺(tái)決定哪些節(jié)點(diǎn)當(dāng)選簇頭,BS 了解節(jié)點(diǎn)的分布,優(yōu)化了簇頭分配,但節(jié)點(diǎn)和BS 頻繁地交換位置和能量信息加速了網(wǎng)絡(luò)能量消耗。文獻(xiàn)[9]提出一種四分相低功耗自適應(yīng)集簇分層型協(xié)議(Quadrature-LEACH,Q-LEACH)算法,將部署區(qū)域分區(qū)4 次,提高了網(wǎng)絡(luò)的數(shù)據(jù)吞吐量延長(zhǎng)網(wǎng)絡(luò)壽命。文獻(xiàn)[10]提出了節(jié)能低功耗自適應(yīng)集簇分層型協(xié)議(Energy-efficient LEACH,EE-LEACH)算法,選擇剩余能量最高的節(jié)點(diǎn)將數(shù)據(jù)轉(zhuǎn)發(fā)給BS,有助于提供更好的數(shù)據(jù)包傳遞比率,減少能量的消耗。文獻(xiàn)[11]的改進(jìn)型低功耗自適應(yīng)集簇分層型協(xié)議(LEACH-advance,LEACH-AD)算法,綜合了節(jié)點(diǎn)密度和剩余能量,對(duì)簇頭選舉函數(shù)進(jìn)行修正,但沒有考慮節(jié)點(diǎn)的分布和距離因子,遠(yuǎn)距離的簇頭耗能快。
針對(duì)以上問題,本文提出了一種基于分區(qū)和能量距離因子的LEACH 改進(jìn)協(xié)議(LEACH energydistance-partition,LEACH-EDP)。在該算法中提出剩余能量因子和距離因子并計(jì)算,針對(duì)無線電衰耗模型對(duì)部署區(qū)域進(jìn)行分區(qū),采取不同的修正參數(shù),最后對(duì)簇頭選舉閾值函數(shù)進(jìn)行修正,有針對(duì)性地改變因子的權(quán)重,可以有效延長(zhǎng)WSN 的生存時(shí)間。通過仿真和數(shù)據(jù)對(duì)比得出,LEACH-EDP 協(xié)議與傳統(tǒng)LEACH 和LEACH-AD[11]相比,降低了能量消耗,延長(zhǎng)了網(wǎng)絡(luò)壽命,并延緩了第1 個(gè)死亡節(jié)點(diǎn)出現(xiàn)的時(shí)間。
本文對(duì)WSN 做如下的設(shè)定:
(1) 網(wǎng)絡(luò)開始運(yùn)行前,隨機(jī)部署傳感器節(jié)點(diǎn),傳感器節(jié)點(diǎn)無法移動(dòng),直到網(wǎng)絡(luò)死亡。
(2) 所有節(jié)點(diǎn)的初始能量相同,擁有特有的身份標(biāo)識(shí)(Identity document,ID)號(hào),且擁有等效的計(jì)算、通信和融合數(shù)據(jù)的能力。
(3) Sink 節(jié)點(diǎn)擁有穩(wěn)定的能量供應(yīng),數(shù)據(jù)處理能力不限,除外的普通節(jié)點(diǎn)無能量補(bǔ)充。
(4) 每個(gè)節(jié)點(diǎn)都有與Sink 節(jié)點(diǎn)通信的能力,可以通過感知信號(hào)的強(qiáng)度,計(jì)算出與發(fā)送者的距離。
WSN 采用一階無線電模型的通信能耗模型如圖1 所示,簡(jiǎn)單假設(shè)分為發(fā)送端和接收端,單位為J。發(fā)送節(jié)點(diǎn)對(duì)采集的數(shù)據(jù)進(jìn)行放大和傳輸消耗能量,接收節(jié)點(diǎn)接收消耗能量。
由一階無線電模型[8]可知,能量消耗公式如式(1),(2)所示。
發(fā)送端能耗為
圖1 能耗模型Fig.1 Energy consumption model
接收端能耗為
式中,Eelec為發(fā)射電路的消耗能量,d為發(fā)送節(jié)點(diǎn)與接收節(jié)點(diǎn)之間的距離,k為數(shù)據(jù)包的大小,εmp為多徑衰落損耗系數(shù),εfs為自由空間損耗系數(shù),d0為自由空間衰落和多徑衰落的切換閾值,定義為
LEACH 算法是最早的分布式成簇算法,整個(gè)網(wǎng)絡(luò)自組織成簇,每個(gè)簇只有一個(gè)簇頭。LEACH 算法中為簇的選舉定義了一個(gè)周期,每個(gè)節(jié)點(diǎn)根據(jù)閾值函數(shù)輪流競(jìng)爭(zhēng)成為簇頭,盡量避免一個(gè)節(jié)點(diǎn)連續(xù)當(dāng)選簇頭而導(dǎo)致能量消耗快,節(jié)點(diǎn)提前死亡。在一個(gè)個(gè)周期中,節(jié)點(diǎn)選舉簇頭成簇,普通節(jié)點(diǎn)甄選距離值最小的簇頭加入簇頭的小網(wǎng)絡(luò),將從環(huán)境中感知的信息發(fā)送給簇頭,簇頭融合數(shù)據(jù)再發(fā)送給BS,這樣一個(gè)個(gè)周期重復(fù)下去,完成WSN 感知采集數(shù)據(jù)的任務(wù)。LEACH 算法的簡(jiǎn)要步驟如下:
(1) 每個(gè)周期開始,所有節(jié)點(diǎn)競(jìng)爭(zhēng)選舉簇頭,每個(gè)節(jié)點(diǎn)隨機(jī)生成一個(gè)大于0 小于1 的隨機(jī)數(shù),如果此值小于閾值函數(shù)T(n) 的值,則這個(gè)節(jié)點(diǎn)被選為簇頭,閾值函數(shù)T(n) 定義為
式中,p為節(jié)點(diǎn)通過選舉函數(shù)競(jìng)選成為簇頭的概率,r為當(dāng)前的周期數(shù),n為節(jié)點(diǎn)總數(shù),G為非簇頭的節(jié)點(diǎn)集合。
(2) 選舉上的簇頭向網(wǎng)絡(luò)廣播自己的信息,普通節(jié)點(diǎn)選取離自己最近的簇頭加入其簇網(wǎng)絡(luò)。
(3) 建立時(shí)隙表,分配時(shí)隙,簇內(nèi)節(jié)點(diǎn)采集處理數(shù)據(jù)后將數(shù)據(jù)發(fā)給簇頭節(jié)點(diǎn)。
(4) 簇頭接收成員發(fā)來的數(shù)據(jù)包,將融合后的數(shù)據(jù)包發(fā)給BS。
傳統(tǒng)的LEACH 算法,簇頭選舉完全隨機(jī),對(duì)于部分距離BS 很遠(yuǎn)的簇頭,這些節(jié)點(diǎn)可能提前耗盡能量,退出網(wǎng)絡(luò)系統(tǒng),不利于網(wǎng)絡(luò)的整體生存。LEACH-AD[11]算法修正了簇頭選舉閾值函數(shù),引入節(jié)點(diǎn)能量和密度因子,但是沒有考慮到多徑衰落的模型,遠(yuǎn)距離簇頭能耗依舊很大。針對(duì)以上情況本文提出LEACH-EDP 算法。LEACH-EDP 對(duì)閾值函數(shù)依據(jù)能耗模型進(jìn)行修正,提出新型剩余能量和距離因子,對(duì)部署區(qū)域進(jìn)行分區(qū),針對(duì)環(huán)境來權(quán)衡能量和距離因子的權(quán)重,在不同的區(qū)域采用不同的修正系數(shù),能夠達(dá)到延長(zhǎng)網(wǎng)絡(luò)壽命、降低能量損耗的目標(biāo)。
隨著運(yùn)行周期的不斷增加,WSN 網(wǎng)絡(luò)中所有節(jié)點(diǎn)擁有的能量會(huì)逐漸降低,但對(duì)于遠(yuǎn)離Sink 節(jié)點(diǎn)的節(jié)點(diǎn),如果連續(xù)當(dāng)選簇頭,該節(jié)點(diǎn)的能量會(huì)快速下降,整個(gè)網(wǎng)絡(luò)會(huì)出現(xiàn)“熱區(qū)”現(xiàn)象,即圍繞著BS 的區(qū)域中的簇頭能量消耗少,遠(yuǎn)離BS 的區(qū)域中簇頭能量消耗大,在外圍的節(jié)點(diǎn)會(huì)提前死亡,外圍的節(jié)點(diǎn)死亡過多,系統(tǒng)喪失對(duì)外圍的數(shù)據(jù)監(jiān)測(cè),不利于網(wǎng)絡(luò)的工作運(yùn)行。針對(duì)這種情況,可以將節(jié)點(diǎn)的剩余能量因素引入到簇頭的競(jìng)選過程中。文獻(xiàn)[11]中LEACH-AD 協(xié)議引入了剩余能量因子,對(duì)簇頭選舉閾值函數(shù)(式(4))進(jìn)行修正,剩余能量因子定義為
式中,Ei為網(wǎng)絡(luò)中第i 個(gè)節(jié)點(diǎn)的剩余能量,隨著網(wǎng)絡(luò)周期的不斷增加,節(jié)點(diǎn)的能量在不斷減少,可知Ei在不斷減少,剩余因子Efactor在閾值函數(shù)中所占的權(quán)重會(huì)不斷減少,在網(wǎng)絡(luò)運(yùn)行的后期Efactor會(huì)很小,從而失去均衡簇頭的作用。為此本文提出改進(jìn)的剩余能量因子Efactor,定義為
式中,Ei為第i 個(gè)節(jié)點(diǎn)的當(dāng)前能量,Eavg為網(wǎng)絡(luò)的節(jié)點(diǎn)平均能量。根據(jù)式(6)中計(jì)算得到的剩余能量因子,相比原來的因子,不會(huì)隨著系統(tǒng)能量的減少而降低權(quán)重,且當(dāng)節(jié)點(diǎn)i 的能量小于節(jié)點(diǎn)平均能量時(shí),Efactor為負(fù)數(shù),此節(jié)點(diǎn)通過閾值函數(shù)當(dāng)選簇頭的概率下降,使整個(gè)網(wǎng)絡(luò)的簇頭分布更加合理,延長(zhǎng)網(wǎng)絡(luò)的工作時(shí)間。
文獻(xiàn)[11]中的LEACH-AD 算法,引入了密度因子來修正簇頭的競(jìng)選閾值函數(shù),定義為
式中,R0為通信半徑,kn為節(jié)點(diǎn)i 通信半徑內(nèi)的節(jié)點(diǎn)個(gè)數(shù),Rj為通信半徑內(nèi)的節(jié)點(diǎn)到節(jié)點(diǎn)i 的距離。
由于節(jié)點(diǎn)隨機(jī)分布在部署區(qū)域內(nèi),當(dāng)某個(gè)節(jié)點(diǎn)周圍密度過小時(shí),Rj會(huì)很小,導(dǎo)致Di過大,趨于無窮值,不利于簇頭選舉概率的調(diào)整。隨著網(wǎng)絡(luò)運(yùn)行,網(wǎng)絡(luò)中部分節(jié)點(diǎn)會(huì)陸陸續(xù)續(xù)死亡,退出系統(tǒng),節(jié)點(diǎn)密度會(huì)不斷降低,Di的權(quán)重會(huì)不斷減少,直到失去均衡作用。
本文LEACH-EDP 算法引入距離因子來均衡簇頭的能量消耗。遠(yuǎn)離Sink 的節(jié)點(diǎn)消耗的能量一般大于其他節(jié)點(diǎn),引入距離因子來均衡簇頭選舉概率。
文獻(xiàn)[12]中提出距離因子 φ = d0di,其中d0同式(3)中的定義,di為節(jié)點(diǎn)到Sink 節(jié)點(diǎn)的距離。d0為定值,此距離因子只由di決定,當(dāng)di很大或很小時(shí),距離因子相差很大,不利于調(diào)整參數(shù)的范圍,為此本文采取歸一化的方法,對(duì)di進(jìn)行歸一化處理[13-14],重新定義距離因子Dfactor為
式中,Dmax為全網(wǎng)節(jié)點(diǎn)和Sink 節(jié)點(diǎn)距離的最大值,Dmin全網(wǎng)節(jié)點(diǎn)和Sink 節(jié)點(diǎn)距離的最小值,Di為節(jié)點(diǎn)i和Sink 節(jié)點(diǎn)之間的距離。
如式(8)所示,距離因子經(jīng)過歸一化,數(shù)值被控制在0 到1 之間,當(dāng)節(jié)點(diǎn)i 離Sink 最遠(yuǎn)時(shí),距離因子為0,當(dāng)節(jié)點(diǎn)i 離Sink 最近時(shí),距離因子為1,有利于控制參數(shù)。
圖2 區(qū)域分區(qū)Fig.2 Region partition
經(jīng)過這樣的設(shè)計(jì),在能量因素相同的條件下,距離Sink 節(jié)點(diǎn)越近,有更大幾率當(dāng)選簇頭,離Sink 節(jié)點(diǎn)遠(yuǎn)的節(jié)點(diǎn)當(dāng)選的幾率降低。
由一階無線電模型可知,節(jié)點(diǎn)能耗與距離d的n次方呈線性關(guān)系,尤其當(dāng)發(fā)送端和接收端的距離大于d0時(shí),節(jié)點(diǎn)能量的消耗量將從d的平方變成d的四次方,節(jié)點(diǎn)能耗極大增加,所以,針對(duì)距離大于d0的節(jié)點(diǎn),按照d0為半徑,Sink 為中心,將部署區(qū)域分為2 個(gè)部分,文獻(xiàn)[15]中提出了一種分區(qū)方法,如圖2 所示。
以d0為半徑將部署區(qū)域分為2 部分,小于d0的區(qū)域記為Area1,大于等于d0的區(qū)域記為Area2。
根據(jù)無線電一階模型,2 區(qū)域內(nèi)簇頭節(jié)點(diǎn)采取不同的能耗公式,所以通過分區(qū)來對(duì)2 個(gè)區(qū)域的簇頭選舉閾值函數(shù)進(jìn)行有針對(duì)性的修正。
LEACH-AD 協(xié)議[11]采用的簇頭選舉閾值函數(shù)為
式中,Ei為能量因子(剩余能量),D'為節(jié)點(diǎn)密度因子,α和β均為增益參數(shù)。由于LEACH-AD 沒有進(jìn)行分區(qū)處理,對(duì)遠(yuǎn)近簇頭的優(yōu)化采取同樣的策略,不利于網(wǎng)絡(luò)能量的均衡。 為解決這一問題,本文LEACH-EDP 算法采取新的簇頭選舉閾值函數(shù),且針對(duì)不同區(qū)域采取不同的優(yōu)化參數(shù)去修正函數(shù),如式(10),(11)所示。
式中,T(n) 為L(zhǎng)EACH 簇選舉閾值函數(shù);Efactor為能量因子;Dfactor為距離因子;w1,w2,w3,w4為增益參數(shù),Area1,Area2分別為位于區(qū)域1、2 的節(jié)點(diǎn)集合。
新的修正函數(shù)針對(duì)不同的區(qū)域采用不同的增益參數(shù)。對(duì)于區(qū)域1 中的節(jié)點(diǎn),這些節(jié)點(diǎn)離Sink 近,采用的是自由空間衰落能耗模型,節(jié)點(diǎn)能量的消耗相對(duì)多徑傳輸較少,區(qū)域周圍節(jié)點(diǎn)的能量相差不大,希望在修正時(shí)增大距離因子的權(quán)重,減少能量因子的權(quán)重。對(duì)于區(qū)域2 中的節(jié)點(diǎn),這些節(jié)點(diǎn)位于部署區(qū)域的外圍,采用的是多徑衰落能耗模型,能耗較大,節(jié)點(diǎn)易提前死亡,希望在修正時(shí)增大能量因子的權(quán)重,適量減少距離因子的權(quán)重。
LEACH-EDP 算法采取分區(qū)處理,引入能量和距離因子,合理調(diào)整增益參數(shù),有針對(duì)性地修正簇頭選舉閾值函數(shù),均衡了網(wǎng)絡(luò)能耗,有助于延長(zhǎng)網(wǎng)絡(luò)的壽命,延緩第一個(gè)死亡節(jié)點(diǎn)的出現(xiàn)。
LEACH-EDP 算法步驟如下:
(1) Sink 節(jié)點(diǎn)向全網(wǎng)廣播消息,接收節(jié)點(diǎn)根據(jù)信號(hào)的強(qiáng)度計(jì)算出自己與Sink 節(jié)點(diǎn)之間的距離,按照式(3)劃分自己所在的區(qū)域。
(2) 區(qū)域劃分完成后,節(jié)點(diǎn)向Sink 節(jié)點(diǎn)匯報(bào)區(qū)域劃分已完成,并交換距離和能量控制信息。Sink 節(jié)點(diǎn)接收匯報(bào)的控制信息,根據(jù)式(6)計(jì)算出最大最小距離、當(dāng)前周期系統(tǒng)平均剩余能量,廣播消息給其他節(jié)點(diǎn)。
圖3 算法流程圖Fig.3 Algorithm flow chart
(3) 進(jìn)入簇頭競(jìng)選階段。所有普通節(jié)點(diǎn)收到Sink 的信息,根據(jù)式(6),(8),計(jì)算當(dāng)前節(jié)點(diǎn)的能量因子Efactor和距離因子Dfactor。
(4) 節(jié)點(diǎn)生成一個(gè)大于0 小于1 的隨機(jī)數(shù)rand,根據(jù)自己所在的區(qū)域,對(duì)照式(10)選取相應(yīng)的閾值公式計(jì)算T ( n ),若rand 小于T ( n ) 則本周期當(dāng)選簇頭,廣播自己是簇頭的消息,否則為普通節(jié)點(diǎn)。
(5) 普通節(jié)點(diǎn)收到周圍簇頭的廣播消息,按照信號(hào)的強(qiáng)弱,選取最近的簇頭加入。
(6) 簇頭的建立完成,進(jìn)入數(shù)據(jù)傳輸階段。普通節(jié)點(diǎn)感知環(huán)境對(duì)象的信息,處理好后發(fā)給子網(wǎng)里的簇頭節(jié)點(diǎn),簇頭融合子網(wǎng)的數(shù)據(jù)發(fā)送給BS。
(7) 一個(gè)周期完成,重復(fù)簇頭的選舉,直到網(wǎng)絡(luò)
中所有節(jié)點(diǎn)死亡。
算法流程圖如圖3 所示。
算法偽代碼如下所示:
init( ); %初始化并定義各種常數(shù)參數(shù)
for i=1 to n %按照均勻分布隨機(jī)部署節(jié)點(diǎn)S 集合
S(i)·xd=rand(1,1)*xm; % xm為 區(qū) 域x 軸 最大值
S(i)·yd=rand(1,1)*ym; %ym為區(qū)域y 軸最大值
S(i)·E=E0;%設(shè)置初始能量為E0
S(i)·type='N';%節(jié)點(diǎn)初始化類型為普通
end
for i=1 to n
Calculate_Dmax&Dmin&Partition( ); %計(jì)算Dmax,Dmin,每個(gè)節(jié)點(diǎn)的分區(qū)所屬
end
for r=1 to rmax%周期總循環(huán)
for i =1 to n %簇頭選舉循環(huán)
Calculate_Dfactor&Efactor( ); %計(jì)算距離因子和能量因子
if (位于區(qū)域1?)
采取策略1;
elseif (位于區(qū)域2?)
采取策略2;
end
if (rand <Tn)
該節(jié)點(diǎn)標(biāo)記為簇頭;
else
該節(jié)點(diǎn)標(biāo)記為普通節(jié)點(diǎn);
end
end
for i =1 to n %計(jì)算普通節(jié)點(diǎn)能耗
if (普通節(jié)點(diǎn)?)
找出最近的簇頭節(jié)點(diǎn),加入,計(jì)算距離,按照能耗公式,計(jì)算能量消耗( );
end
end
for i =1 to n %計(jì)算簇頭節(jié)點(diǎn)能耗
if (簇頭節(jié)點(diǎn)?)
計(jì)算融合數(shù)據(jù)耗能( );
計(jì)算傳輸sink 的能耗( );
end
end
Calculate_Energy&Energy_avg&Dead( ); %計(jì)算網(wǎng)絡(luò)剩余能量,平均能量,節(jié)點(diǎn)死亡數(shù)
end
本文在Matlab 2016 b 上進(jìn)行仿真實(shí)驗(yàn),對(duì)算法LEACH、LEACH-AD、LEACH-EDP 進(jìn)行性能比較和分析。選取網(wǎng)絡(luò)幾個(gè)時(shí)間點(diǎn)的節(jié)點(diǎn)分布、網(wǎng)絡(luò)節(jié)點(diǎn)剩余能量、網(wǎng)絡(luò)節(jié)點(diǎn)死亡量作為性能指標(biāo)進(jìn)行比較。網(wǎng)絡(luò)參數(shù)設(shè)置見表1。
表1 網(wǎng)絡(luò)參數(shù)設(shè)置Table 1 Network parameter setting
本實(shí)驗(yàn)假設(shè)部署區(qū)域?yàn)?00×100 的方形區(qū)域,節(jié)點(diǎn)數(shù)量為100 個(gè),Sink 坐標(biāo)為(0,0),按照均勻分布部署在區(qū)域中,初始分布圖如圖4 所示。
本實(shí)驗(yàn)選取2 次相同時(shí)間點(diǎn)對(duì)3 種算法的節(jié)點(diǎn)活動(dòng)狀態(tài)進(jìn)行比較,如圖5 所示。3 種算法使用相同的初始節(jié)點(diǎn)分布,通過比較在相同時(shí)間點(diǎn)的分布圖,可以直觀判斷出算法的性能。
由圖5 中的節(jié)點(diǎn)分布可知,在周期600 時(shí),LEACH 算法中區(qū)域外圍的節(jié)點(diǎn)幾乎已經(jīng)死亡,LEACH-AD 中外圍節(jié)點(diǎn)仍有部分節(jié)點(diǎn)還在活動(dòng),LEACH-EDP 算法中外圍有大量節(jié)點(diǎn)存活;隨著網(wǎng)絡(luò)運(yùn)行,在周期900 時(shí),LEACH 中的外圍節(jié)點(diǎn)完全死亡,LEACH-AD 中只有數(shù)個(gè)節(jié)點(diǎn)存活,LEACHEDP 中還有不少節(jié)點(diǎn)存活。這主要是因?yàn)椋琇EACH-EDP 算法考慮到了分區(qū)因素,在外圍通過能量和距離因子來減少低能量節(jié)點(diǎn)成為簇頭的概率,使得外圍的節(jié)點(diǎn)存活時(shí)間延長(zhǎng),有利于網(wǎng)絡(luò)的運(yùn)行。
網(wǎng)路初始化設(shè)置節(jié)點(diǎn)個(gè)數(shù)為100 個(gè)。BS 位置設(shè)計(jì)位于部署區(qū)域的邊緣,可以更好的測(cè)試算法在極端環(huán)境下的性能。圖6 呈現(xiàn)了隨周期數(shù)變化的網(wǎng)絡(luò)死亡節(jié)點(diǎn)數(shù)。
LEACH 算法的第一個(gè)死亡節(jié)點(diǎn)出現(xiàn)在周期348;LEACH-AD 算法第一個(gè)死亡節(jié)點(diǎn)出現(xiàn)在周期377,相較LEACH延遲了8.3%;LEACH-EDP 算法第一個(gè)死亡節(jié)點(diǎn)出現(xiàn)在周期625,相較LEACH和LEACH-AD 算法分別延遲了79.5%、65.7%。
所有節(jié)點(diǎn)死亡則判定網(wǎng)絡(luò)死亡。LEACH 算法的網(wǎng)絡(luò)死亡時(shí)間在周期1 191;LEACH-AD 算法的網(wǎng)絡(luò)死亡時(shí)間在周期1 433,相較LEACH 延遲了20.3%;LEACH-EDP 算法的網(wǎng)絡(luò)死亡時(shí)間在1 875,相較LEACH 和LEACH-AD算法分別延遲了57.4%、30.8%。
以上分析可以得出LEACH-EDP 算法在延長(zhǎng)網(wǎng)絡(luò)壽命上優(yōu)于LEACH 和LEACH-AD 算法,主要是因?yàn)長(zhǎng)EACHEDP 考慮了節(jié)點(diǎn)能量和節(jié)點(diǎn)距離,針對(duì)不同的區(qū)域節(jié)點(diǎn)采取不同的優(yōu)化參數(shù),改變相應(yīng)的因子權(quán)重來均衡網(wǎng)絡(luò)能量,讓有能量位置適合的節(jié)點(diǎn)作為簇頭來融合數(shù)據(jù),延緩節(jié)點(diǎn)死亡。
圖4 初始節(jié)點(diǎn)分布圖Fig.4 Initial node distribution map
圖5 節(jié)點(diǎn)分布圖Fig.5 Node distribution map
圖6 死亡節(jié)點(diǎn)個(gè)數(shù)Fig.6 Number of death nodes
網(wǎng)絡(luò)初始化設(shè)置所有普通節(jié)點(diǎn)能量為0.5 J,100 個(gè)普通節(jié)點(diǎn),Sink 節(jié)點(diǎn)能量無限制,網(wǎng)絡(luò)初始總能量為50 J。隨周期變化的網(wǎng)絡(luò)剩余能量如圖7 所示。
網(wǎng) 絡(luò) 能 量 損 耗50% 時(shí) ,LEACH 和LEACH-AD 算 法的周期大約在300,LEACH-EDP 的周期大約為360,相較前兩種算法延遲了大約20%;網(wǎng)絡(luò)能量損耗90% 時(shí),LEACH 算法周期為603,LEACH-AD 算法周期為631,LEACH-EDP 算法周期為758,相較前兩種算法分別延遲25.7%、20.1%。
以上分析可以得出,LEACH-EDP 在均衡網(wǎng)絡(luò)能量上要優(yōu)于LEACH 和LEACH - AD 算法,主要是由于LEACH-EDP 更加合理的簇頭選舉,使能量沒有被過度浪費(fèi),分區(qū)的作用使外圍節(jié)點(diǎn)盡量減少使用多徑衰落的能耗模型,減少外圍節(jié)點(diǎn)的能耗,均衡整個(gè)網(wǎng)絡(luò)的能耗。
根據(jù)以上的實(shí)驗(yàn)結(jié)果,可以證明LEACH-EDP 協(xié)議在網(wǎng)絡(luò)生存時(shí)間、能量消耗上要優(yōu)于LEACH 和LEACHAD 協(xié)議。
從簇頭成簇的機(jī)理上分析,LEACH 沒有對(duì)能量和距離加以考慮,簇頭的選舉完全隨機(jī),在區(qū)域邊緣的節(jié)點(diǎn)能量消耗本就較大,相比中心地域的節(jié)點(diǎn)能量提前耗盡,節(jié)點(diǎn)死亡,網(wǎng)絡(luò)探測(cè)失去作用。LEACH-AD 考慮了能量和密度但是效果并不明顯。LEACH-EDP 通過能量和距離因子優(yōu)化了傳統(tǒng)簇頭選舉函數(shù)的不合理性,使有能量且位置合理的節(jié)點(diǎn)更可能當(dāng)選,減少了某些簇頭節(jié)點(diǎn)能耗過大情況的出現(xiàn),分區(qū)策略調(diào)整了不同因子的權(quán)重,減少能量熱區(qū)的出現(xiàn)。
但考慮到LEACH-EDP 對(duì)于簇頭選舉函數(shù)的修正可能導(dǎo)致相比LEACH 增加了平均簇頭個(gè)數(shù),在一般相同周期中,對(duì)于外圍的節(jié)點(diǎn)仍有存活,一般節(jié)點(diǎn)會(huì)繼續(xù)尋找簇頭并成簇,這可能增加了節(jié)點(diǎn)間通信的次數(shù),使網(wǎng)絡(luò)的總延遲增加。
圖7 網(wǎng)絡(luò)剩余能量Fig.7 Network residual energy
本文針對(duì)LEACH 協(xié)議和LEACH-AD 提出改進(jìn)的LEACH-EDP 協(xié)議。LEACH-EDP 協(xié)議采取了分區(qū)策略,對(duì)不同部署區(qū)域采取不同的優(yōu)化方式來均衡權(quán)重因子,對(duì)于簇頭選舉閾值函數(shù)使用能量和距離因子來修正。同時(shí)對(duì)LEACH、LEACH-AD、LEACH-EDP 進(jìn)行仿真對(duì)比,實(shí)驗(yàn)結(jié)果表明LEACHEDP 延長(zhǎng)了網(wǎng)絡(luò)的工作時(shí)間,延緩了第一個(gè)死亡節(jié)點(diǎn)的出現(xiàn)時(shí)間、更高效地利用了網(wǎng)絡(luò)能量。