徐會彬(.湖州師范學(xué)院信息工程學(xué)院,浙江 湖州33000;.浙江省現(xiàn)代農(nóng)業(yè)資源智慧管理與應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,浙江 湖州33000)
隨著無線傳感技術(shù)的發(fā)展,無線傳感網(wǎng)絡(luò)(Wireless Sensor Networks,WSNs)已在軍事偵察、智能家居、智慧農(nóng)業(yè)等領(lǐng)域廣泛使用[1-2]。WSNs由多個節(jié)點(diǎn)組成的無線網(wǎng)絡(luò)。這些節(jié)點(diǎn)能感知環(huán)境的一些物理特性,進(jìn)而獲取如壓力、溫濕度等各類數(shù)據(jù)。節(jié)點(diǎn)將其采集到的數(shù)據(jù)以多跳方式傳輸至匯聚節(jié)點(diǎn)。
WSNs內(nèi)節(jié)點(diǎn)屬于微型傳感節(jié)點(diǎn),它們的計算能力、內(nèi)存和電源功率有限。通常,節(jié)點(diǎn)是由電池供電。一旦電池能量消耗殆盡,節(jié)點(diǎn)就無法繼續(xù)工作。由于應(yīng)用環(huán)境復(fù)雜多變,難以更換節(jié)點(diǎn)電池或者以其他方式補(bǔ)給能量。因此,能量成為制約WSNs長時間運(yùn)行的瓶頸[3]。
相比于其他操作,傳輸數(shù)據(jù)消耗了節(jié)點(diǎn)的大部分能量。因此,學(xué)者通過優(yōu)化數(shù)據(jù)傳輸策略降低節(jié)點(diǎn)的能耗。其中,分簇的策略受到廣泛關(guān)注。低功耗自適應(yīng)集簇分層型(Low Energy Adaptive Clustering Hierarchy,LEACH)[4]是最初的分簇路由。LEACH路由將WSN分成若干簇群。每個簇群由一個簇頭。簇頭收集本簇內(nèi)感測的數(shù)據(jù),再將數(shù)據(jù)傳輸至匯聚節(jié)點(diǎn)。LEACH路由通過分簇思想,提高數(shù)據(jù)傳輸效率,緩解了網(wǎng)絡(luò)的能耗。
LEACH路由采用隨機(jī)方式產(chǎn)生簇頭,沒有考慮節(jié)點(diǎn)能量以及距離等信息,存在一些不足。為此,研究人員針對這些不足,提出一些改進(jìn)策略[5-7]。例如,文獻(xiàn)[8]針對簇頭的選擇閾值進(jìn)行改進(jìn)。在閾值函數(shù)中引入能量,使剩余能量大的節(jié)點(diǎn)更容易成為簇頭。但是該路由沒有考慮節(jié)點(diǎn)離匯聚節(jié)點(diǎn)的距離。文獻(xiàn)[9]通過距離和剩余能量信息對簇頭的選擇閾值進(jìn)行修正,降低能耗。盡管該路由在選舉簇頭只考慮了距離和能量信息,沒有考慮到節(jié)點(diǎn)分布情況。同時,該路由也沒有優(yōu)化簇間路由。
由于選擇簇頭的復(fù)雜性,研究人員將一些智能算法引入分簇路由。文獻(xiàn)[10]提出的基于改進(jìn)螢火蟲聚類的能效路由(Energy Efficient Routing based on Improved Firefly Clustering,EIFC)。EIFC路由利用聚類算法構(gòu)建簇,使簇分布更合理。但是節(jié)點(diǎn)運(yùn)行聚類算法也增加了節(jié)點(diǎn)的能耗。
為此,本文提出基于閾值修正的多跳分簇路由(Threshold Correction-based Multi-hop Clustering Routing,TCCR)。TCCR路由在分簇過程中綜合考慮了節(jié)點(diǎn)的能量、離匯聚節(jié)點(diǎn)的距離以及節(jié)點(diǎn)的分布密度信息,并通過構(gòu)建適度因子優(yōu)化簇間路由。
n個節(jié)點(diǎn)分布于區(qū)域內(nèi)Θ。令S={s0,s1,…,sn}表示節(jié)點(diǎn)集,其中s0表示匯聚節(jié)點(diǎn),其位于區(qū)域中心位置;其他節(jié)點(diǎn)隨機(jī)分布于區(qū)域內(nèi),且n=|S|-1。本文對WSNs內(nèi)節(jié)點(diǎn)進(jìn)行如下約束[11]:①所有節(jié)點(diǎn)是靜態(tài)的。在區(qū)域Θ內(nèi)部署了節(jié)點(diǎn)后,節(jié)點(diǎn)不再移動;②所有節(jié)點(diǎn)的初始能量相同Einit。所有節(jié)點(diǎn)的通信半徑相同R。每個節(jié)點(diǎn)具有唯一的ID號。令si表示第i個節(jié)點(diǎn)的ID號,其中i=1,2,…,n。③匯聚節(jié)點(diǎn)的能量不受限,且具有足夠的數(shù)據(jù)處理能量;④只考慮因節(jié)點(diǎn)能量消耗殆盡而導(dǎo)致的節(jié)點(diǎn)死亡。
采用圖1所示的一階無線電模型[12]作為節(jié)點(diǎn)的能量消耗模型。
圖1 一階無線電模型
節(jié)點(diǎn)傳輸?比特數(shù)據(jù),且傳輸距離為d時所消耗能量為ETx(?,d):
式中:Eelec表示傳輸一比特數(shù)據(jù)所消耗的能量;εfs、εmp分別表示自由空間損耗系數(shù)、多徑衰落損耗系數(shù);d0表示多徑衰落與自由空間衰落兩種衰落的切換閾值,其定義如式(2)所示:
相應(yīng)地,若節(jié)點(diǎn)接收?比特數(shù)據(jù)所消耗的能量為ERx(?):
TCCR路由先依據(jù)網(wǎng)絡(luò)區(qū)域面積、匯聚節(jié)點(diǎn)位置以及節(jié)點(diǎn)通信半徑估計簇頭數(shù)。再依據(jù)節(jié)點(diǎn)剩余能量、相對距離和節(jié)點(diǎn)密度信息選擇簇頭。最后,構(gòu)建簇間路由。
為了更好地均衡網(wǎng)絡(luò)能耗,使簇頭分布更均勻,利用節(jié)點(diǎn)分布情況,估計簇頭數(shù)k。節(jié)點(diǎn)部署后,先計算(n-1)個節(jié)點(diǎn)離s0的最大距離dmax和最小距離dmin:
式中:di,o表示節(jié)點(diǎn)si離s0的距離。
再將(dmax+dmin)/R與n值進(jìn)行比較,如果(dmax+dmin)/R≤n,則k=(dmax+dmin)/2R,否則,k=,如式(5)所示:
利用節(jié)點(diǎn)的剩余能量,離匯聚節(jié)點(diǎn)距離和節(jié)點(diǎn)密度三個因子選擇簇頭。
首先,計算節(jié)點(diǎn)的剩余能量因子[13]。令(r)表示節(jié)點(diǎn)si在r輪時的能量。節(jié)點(diǎn)si的剩余能量因子為:
然后,計算節(jié)點(diǎn)的距離因子。采用了隨機(jī)方式部署節(jié)點(diǎn),導(dǎo)致節(jié)點(diǎn)離匯聚節(jié)點(diǎn)的距離不盡相同。有些節(jié)點(diǎn)離匯聚節(jié)點(diǎn)距離較遠(yuǎn),有些離匯聚節(jié)點(diǎn)距離較短。因此,定義節(jié)點(diǎn)的距離因子,評估節(jié)點(diǎn)離匯聚節(jié)點(diǎn)的較近:
除了能量和距離因子外,節(jié)點(diǎn)分布密度對簇頭的選擇有重要作用。若節(jié)點(diǎn)位于密集區(qū)域,理當(dāng)增加成為簇頭的概率;反之,在節(jié)點(diǎn)位于稀疏區(qū)域,應(yīng)降低節(jié)點(diǎn)成為簇頭的概率。因此,定義節(jié)點(diǎn)密度因子:
式中:Ni表示節(jié)點(diǎn)si的一跳鄰居節(jié)點(diǎn),其定義如式(10)所示:
依據(jù)式(9)可知,節(jié)點(diǎn)分布密度越大,密度因子。引用LEACH協(xié)議所采用的閾值函數(shù),并對其進(jìn)行改進(jìn),形成簇頭選擇閾值函數(shù):
式中:Pi表示簇頭比例,即Pi=k/(n-1);r表示當(dāng)前執(zhí)行的輪數(shù);G表示上一輪為非簇頭的節(jié)點(diǎn)集合;若上一輪已成為簇頭,本輪不再參與簇頭的競選;Υi表示由節(jié)點(diǎn)的能量因子、距離因子和密度因子構(gòu)建適度因子,其定義如式(12)所示:
式中:λ1,λ2和λ3為權(quán)重系數(shù),且0<λ1,λ2,λ3<1,λ1+λ2+λ3=1。
節(jié)點(diǎn)在競爭簇頭時,先產(chǎn)生一個隨機(jī)數(shù)。再將所產(chǎn)生的隨機(jī)數(shù)與閾值比較。若隨機(jī)數(shù)小于閾值,節(jié)點(diǎn)就宣稱自己為本輪的簇頭。并向鄰居節(jié)點(diǎn)廣播通告消息Avd_Mes。
利用2.2節(jié)產(chǎn)生k個簇頭{Ch1,Ch2,…,Chk}。這些簇頭就鄰居節(jié)點(diǎn)廣播Avd_Mes。非簇頭節(jié)點(diǎn)收到Avd_Mes消息后,就選擇接收信號最強(qiáng)的簇頭加入。具體的流程如圖2所示。
圖2 簇的形成流程
最初,匯聚節(jié)點(diǎn)向全網(wǎng)廣播Hello消息,其包含自匯聚節(jié)點(diǎn)的位置。接收Hello消息后,節(jié)點(diǎn)計算離匯聚節(jié)點(diǎn)的距離。然后,進(jìn)入簇頭選擇階段。在新一輪開始,節(jié)點(diǎn)先判斷本輪是否為簇頭。若本輪已是簇頭,節(jié)點(diǎn)就不參與新一輪的簇頭競爭。若不是,就產(chǎn)生隨機(jī)數(shù),并與閾值進(jìn)行比較。
若產(chǎn)生的隨機(jī)數(shù)小于閾值,就廣播Avd_Mes消息,并接收非簇頭節(jié)點(diǎn)發(fā)送的請求消息Join_Mes。若產(chǎn)生的隨機(jī)數(shù)大于閾值,就等待接收由簇頭廣播的Avd_Mes消息。當(dāng)接收了來自多個簇頭廣播的Avd_Mes消息后,非簇頭節(jié)點(diǎn)就從中選擇信號強(qiáng)度的簇頭加入。重復(fù)上述過程,直到執(zhí)行到最大輪數(shù)。
若簇頭離匯聚節(jié)點(diǎn)距離小于R,該簇頭就直接將數(shù)據(jù)傳輸至匯聚節(jié)點(diǎn)。若簇頭離匯聚節(jié)點(diǎn)距離大于R,簇頭就需構(gòu)建多跳路徑通往匯聚節(jié)點(diǎn)[14]。為了方便描述,將離匯聚節(jié)點(diǎn)距離大于R的簇頭從R={Ch1,Ch2,…,Chk}中刪除,構(gòu)建新的簇頭集R′={Ch1,Ch2,…,Chk′},且R′?R。
對于R′集中任意一個簇頭Chi,若Chi需要向匯聚節(jié)點(diǎn)傳輸數(shù)據(jù),它就從它的鄰居簇頭中選擇具有最大適度因子的簇頭作為下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn):
式中:Q(j)表示簇頭Chj的適度因子;dChj,o表示簇頭Chj離匯聚節(jié)點(diǎn)距離;dCh,o表示簇頭離匯聚節(jié)點(diǎn)的最大距離;(r)表示在當(dāng)前r輪時簇頭Chj的剩余能量;Einit表示簇頭的初始能量;N(Chi)表示簇頭Chi的鄰居簇頭集;α和β為距離因子和能效因子的權(quán)重系數(shù)。通過α、β系數(shù)控制距離、能量效率對適度因子的影響比重,且α+β=1。可依據(jù)不同的應(yīng)用環(huán)境,設(shè)定α和β的值。
依據(jù)式(13)可知,離匯聚節(jié)點(diǎn)距離越大以及剩余能量越大的簇頭,其適度因子越大。為此,簇頭Chi就從其鄰居簇頭選擇具有最大適度因子的簇頭作為下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn)。利用適度因子選擇下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn),縮短數(shù)據(jù)傳輸路徑,同時避免能量過低的簇頭擔(dān)任下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn)。
本文在MATLAB 2016b軟件上建立仿真平臺,分析TCCR路由性能。在100 m×100 m方形區(qū)域內(nèi)隨機(jī)部署100個傳感節(jié)點(diǎn)和一個匯聚節(jié)點(diǎn),匯聚節(jié)點(diǎn)位于匯聚區(qū)域中心,即匯聚節(jié)點(diǎn)位置坐標(biāo)為(50,50),初始分布圖如圖3所示。
圖3 初始節(jié)點(diǎn)分布圖
仿真參數(shù)如表1所示。利用這些參數(shù)進(jìn)行Monte Carlo實(shí)驗(yàn),每次實(shí)驗(yàn)進(jìn)行2000輪,共進(jìn)行50次,取平均值作為最終的實(shí)驗(yàn)數(shù)據(jù)。
表1 仿真參數(shù)
為了更好地分析TCCR路由性能,選擇經(jīng)典的LEACH路由和EIFC路由作為參照,分析死亡節(jié)點(diǎn)數(shù),剩余能量,匯聚節(jié)點(diǎn)接收的數(shù)據(jù)量和數(shù)據(jù)包傳輸時延性能。
首先分析TCCR路由、LEACH和EIFC路由的死亡節(jié)點(diǎn)數(shù)情況,如圖4所示。顯然,死亡節(jié)點(diǎn)數(shù)越多,路由的能耗性能越差。
圖4 死亡節(jié)點(diǎn)數(shù)
從圖4可知,相比于EIFC路由和LEACH路由,提出的TCCR路由降低了死亡節(jié)點(diǎn)數(shù)的增長速度。LEACH路由最早出現(xiàn)死亡節(jié)點(diǎn)數(shù),其約在350輪就出現(xiàn)一個死亡節(jié)點(diǎn)。相比于LEACH路由,EIFC路由約在580輪時出現(xiàn)一個死亡節(jié)點(diǎn)。而TCCR路由的第一個死亡節(jié)點(diǎn)出現(xiàn)的輪數(shù)最晚,約在630輪,分別比LEACH路由和EIFC路由延遲了約80%和8.6%。
除了延遲第一個死亡節(jié)點(diǎn)出現(xiàn)的輪數(shù),TCCR路由也推遲了全部死亡節(jié)點(diǎn)數(shù)出的輪數(shù)。TCCR路由直到約2000輪時100個節(jié)點(diǎn)才全部死亡。而LEACH路由在1200輪時100個節(jié)點(diǎn)就基本上全部死亡。上述數(shù)據(jù)表明,提出的TCCR路由通過優(yōu)化簇頭的分布,并選擇離剩余能量高,離匯聚節(jié)點(diǎn)距離短和節(jié)點(diǎn)密度高的節(jié)點(diǎn)作為簇頭,均衡網(wǎng)絡(luò)能耗。
本小節(jié)分析三個路由協(xié)議的網(wǎng)絡(luò)剩余能量。節(jié)點(diǎn)的初始能量為0.5 J,共100個節(jié)點(diǎn),因此網(wǎng)絡(luò)的初始為50 J,也是網(wǎng)絡(luò)的擁有的最大能量。圖5顯示了網(wǎng)絡(luò)剩余能量隨輪數(shù)的變化情況。
圖5 網(wǎng)絡(luò)剩余能量
從圖5可知,最初,三個路由的網(wǎng)絡(luò)剩余能量均為50 J。隨著輪數(shù)的增加,三個路由的網(wǎng)絡(luò)剩余能量迅速下降,但是它們的下降速度并不相同。其中LEACH路由的網(wǎng)絡(luò)剩余能量下降速度最快。執(zhí)行到300輪,LEACH路由的網(wǎng)絡(luò)剩余能量就下降了50%。而TCCR路由的網(wǎng)絡(luò)剩余能量是三者之中能量下降最慢的。
在網(wǎng)絡(luò)能量損耗了90%時,LEACH路由執(zhí)行的輪數(shù)約640;EIFC路由執(zhí)行的輪數(shù)約682;TCCR路由執(zhí)行的輪數(shù)約845。相比于LEACH路由和EIFC路由,TCCR路由有效地延緩了能量損耗速度。
上述數(shù)據(jù)表明,相比于LEACH路由和EIFC路由,TCCR路由平衡網(wǎng)絡(luò)能耗。這得益于TCCR路由合理地選擇簇頭,沒有過度浪費(fèi)能量。
匯聚節(jié)點(diǎn)接收的數(shù)據(jù)量反映了路由傳輸數(shù)據(jù)包的性能。在限定的輪數(shù)內(nèi),匯聚節(jié)點(diǎn)接收的數(shù)據(jù)量越大,傳輸數(shù)據(jù)包的性能越好,所構(gòu)建的路由越穩(wěn)定。
圖6給出了在600輪內(nèi),LEACH路由、EIFC路由和TCCR路由中匯聚節(jié)點(diǎn)接收的數(shù)據(jù)量情況。從圖可知,TCCR路由的匯聚節(jié)點(diǎn)接收的數(shù)據(jù)量最大,優(yōu)于LEACH路由和EIFC路由,提升了數(shù)據(jù)傳輸效率。這主要原因在于:TCCR路由在構(gòu)建簇間路由時,充分考慮了簇頭的剩余能量以及離匯聚節(jié)點(diǎn)距離。一方面盡量縮短數(shù)據(jù)傳輸路徑,另一方面盡量選擇剩余能量高的簇頭傳輸數(shù)據(jù),避免能量過低的簇頭參與路由。
圖6 匯聚節(jié)點(diǎn)接收的數(shù)據(jù)量
針對WSNs現(xiàn)有分簇路由算法的不足,提出基于閾值修正的多跳分簇路由TCCR。TCCR路由的核心是對選擇簇頭的閾值進(jìn)行修正。即在傳統(tǒng)的LEACH簇頭選擇閾值的基礎(chǔ)上,加入節(jié)點(diǎn)的剩余能量、離匯聚節(jié)點(diǎn)距離和節(jié)點(diǎn)密度,對產(chǎn)生簇頭閾值進(jìn)行修正,進(jìn)而解決簇頭分布不合理以及能耗不均衡問題。在簇間通信階段,利用距離和能量構(gòu)建適度因子選擇下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn)。
仿真結(jié)果表明,提出的TCCR路由具有較好的穩(wěn)定性,均衡了節(jié)點(diǎn)間能耗,降低了節(jié)點(diǎn)的能耗速度,延長了網(wǎng)絡(luò)壽命,也提升了數(shù)據(jù)傳輸效率。本文只考慮了同構(gòu)網(wǎng)絡(luò),并沒有考慮到節(jié)點(diǎn)間的差異性。后期,將研究異構(gòu)網(wǎng)絡(luò)的分簇路由,這是后期的研究工作。