張 馳
(河南財經(jīng)政法大學(xué) 計算機與信息工程學(xué)院,河南 鄭州 450046)
目前,有向傳感網(wǎng)絡(luò)(directional sensor networks,DSNs)[1,2]在智慧城市中廣泛使用。DSN網(wǎng)絡(luò)是由微型的有向傳感節(jié)點(directional sensor nodes,DNs)組成。通過DNs覆蓋目標,并感知目標狀態(tài),再將數(shù)據(jù)傳輸至基站(信宿),進而實現(xiàn)對監(jiān)測區(qū)域的目的。
與全向傳感節(jié)點不同,有向傳感節(jié)點的通信區(qū)域和感測區(qū)域具有方向性[3]。通常,DNs的通信半徑是有限的,且由電池供電。因此,DN需通過多跳才能將數(shù)據(jù)傳輸至基站。
通過分簇算法,將網(wǎng)絡(luò)劃分為層次化結(jié)構(gòu),有利于提高數(shù)據(jù)傳輸效率和網(wǎng)絡(luò)連通率,進而節(jié)省網(wǎng)絡(luò)能量。每個簇有一個簇頭(cluster head,CH),簇頭收集本簇內(nèi)的節(jié)點(簡稱簇成員)數(shù)據(jù)[4]。簇頭通過網(wǎng)關(guān)節(jié)點將數(shù)據(jù)傳輸至基站(base station,BS)?,F(xiàn)存的分簇算法多數(shù)是針對全向傳感網(wǎng)絡(luò),它們都沒有考慮到DNs的特性,如有限的工作方向、窄小的通信視角。因此,將這些分簇算法直接應(yīng)用于DSNs[5-7],難以獲取良好的網(wǎng)絡(luò)性能。
目前,只有少數(shù)文獻研究了DSN網(wǎng)絡(luò)的分簇問題。文獻[8]提出自動分簇算法(autonomous clustering algorithm,ACA)。但是,ACA算法最初在選擇簇頭時,并沒有考慮節(jié)點能量。只是在后續(xù)簇頭更新時,考慮了節(jié)點剩余能量。文獻[9]提出了基于目標覆蓋的分布式分簇(target coverage-based distributed clustering,TDC)算法。TDC算法在選擇簇頭時,考慮了節(jié)點密度、剩余能量以及離基站的距離。
然而,上述算法并沒有考慮到DNs朝向基站的扇區(qū)問題。實質(zhì)上,優(yōu)先選擇朝向基站的扇區(qū)內(nèi)節(jié)點作為簇頭,可能會提高數(shù)據(jù)包傳輸效率。
為此,提出面向通信扇區(qū)優(yōu)化的簇(communication sector optimization-based clustering,CSOC)路由。CSOC路由先從扇區(qū)角度,構(gòu)建候選扇區(qū)集,再從候選扇區(qū)集中擇優(yōu)選擇簇頭。簇頭間再選擇網(wǎng)關(guān),進而構(gòu)建頭的數(shù)據(jù)傳輸路徑。仿真結(jié)果表明,提出的CSOC路由降低了能耗,減少了數(shù)據(jù)傳輸路徑。
圖1 有向傳感器感知和通信模型
令(xi,yi)表示DNsi的位置坐標。對于位于(x,y)位置的目標b,若滿足式(1),則目標b在節(jié)點si覆蓋范圍內(nèi)
(1)
隨著電子技術(shù)的發(fā)展,DN的感知方向可以繞定點旋轉(zhuǎn)。即DN可以有多個扇區(qū)。當(dāng)然,在特定時刻,只有一個扇區(qū)在工作。因此,假定DN有Ωc、Ωs個通信扇區(qū)、感知扇區(qū)。用(Fk,Fk+1)表示第k個通信扇區(qū)的兩條邊線,且k∈Ωc。類似地,用(Gk,Gk+1)表示第k個感知扇區(qū)的兩條邊線,且k∈Ωs。圖2顯示了Ωc=Ωs=6的節(jié)點扇區(qū)示例。
圖2 扇區(qū)示例
CSOC路由通過考慮節(jié)點的扇區(qū)信息、節(jié)點能量以及離基站距離,選擇最優(yōu)的簇頭和網(wǎng)關(guān)。先尋找候選扇區(qū),再計算候選扇區(qū)的權(quán)重值。然后, 再考慮節(jié)點的能量、距離信息選擇簇頭。再依據(jù)簇頭,選擇網(wǎng)關(guān)。
以快速傳輸數(shù)據(jù)、減少通信跳數(shù)為原則構(gòu)建候選扇區(qū)。盡量選擇扇區(qū)指向基站的節(jié)點作為簇頭。因此,將指向基站的扇區(qū)納入候選扇區(qū)。引用布爾變量bi,k。若bi,k=1,表示節(jié)點si的第k個通信扇區(qū)指向基站;反之,該扇區(qū)未指向基站。
對于任意節(jié)點si,其有Ωc個通信扇區(qū)。將節(jié)點si與基站位置連成線sib。對于任意一個扇區(qū)k∈Ωc,若sib與扇區(qū)邊線Fk、Fk+1的兩個夾角只要有一個小于90度,該扇區(qū)i,kF就納入候選扇區(qū)集ψc。
具體而言,對于節(jié)點si的扇區(qū)i,kF,若滿足式(2),則將i,kF加入ψc
(2)
如圖3所示,節(jié)點si的扇區(qū)i,2F的邊線F2、F3與sib的兩個夾角為∠biF2、∠biF3。依據(jù)式(2),扇區(qū)i,1F、i,2F、i,3F和i,6F可納入候選扇區(qū)集ψc。因此,bi,1=bi,2=bi,3=bi,6=1。
圖3 構(gòu)建候選扇區(qū)的過程
從圖3可知,位于不同扇區(qū)內(nèi)的節(jié)點向基站傳輸數(shù)據(jù)的路徑并不相同。應(yīng)先從扇區(qū)角度,選擇最優(yōu)扇區(qū),再選擇簇頭。為此,先計算候選扇區(qū)ψc內(nèi)扇區(qū)的權(quán)重值。令Wi,k表示節(jié)點si的第k個的權(quán)重值
(3)
再針對節(jié)點扇區(qū)的權(quán)重值,并考慮節(jié)點的鄰居節(jié)點、距離以及能量信息,產(chǎn)生簇頭。令Qi,k表示位于以扇區(qū)k作為與基站的通信區(qū)的節(jié)點i成為簇頭的概率
(4)
(5)
(6)
(7)
依據(jù)式(4)計算Qi,k后,再根據(jù)式(8)產(chǎn)生簇頭。即將具有最大Qi,c值的節(jié)點成為簇頭
(8)
若滿足式(8),就宣告自己成為簇頭。并向鄰居節(jié)點廣播通告消息Ann_CH。Ann_CH消息內(nèi)包含了簇頭的ID號以及工作的通信扇區(qū)。
收到Ann_CH后(假定節(jié)點si為簇頭,其工作的通信扇區(qū)為k),說明已有節(jié)點成為簇頭。據(jù)此,鄰居節(jié)點sj∈ni,k就加入該簇,以節(jié)點si為簇頭。
簇頭間通過網(wǎng)關(guān)通信。因此,每個簇頭先利用式(9)構(gòu)建候選網(wǎng)關(guān)節(jié)點集
i←j|(sj∈Mi)&(sh∈nj,k&sh∈M)
(9)
(10)
在CSOC路由中,簇頭負責(zé)向基站傳輸數(shù)據(jù)。因此,相比于其它節(jié)點,簇頭的能耗速度可能更快。為此,需要對簇頭進行更新,避免簇頭能量過低,甚至消耗殆盡。
當(dāng)簇頭的能量低于預(yù)定閾值Eth時,就重新啟動簇頭的選擇過程??紤]到所有節(jié)點的能量逐步減少,對閾值Eth進行動態(tài)調(diào)整,每執(zhí)行一次簇頭選擇,閾值Eth就降低一部分
Eth=Eth,0<<1
(11)
在區(qū)域1000 m×1000 m內(nèi)部署200~1000個節(jié)點,目標數(shù)為50~200個目標。通過NS-2仿真軟件構(gòu)建仿真平臺[11]。具體的仿真參數(shù)見表1。
表1 仿真參數(shù)
為了更好地分析CSOC路由性能,選擇同類路由TDC進行比較。選擇覆蓋目標數(shù)-簇率(coverage targets-cluster ratio,CTCR)、系統(tǒng)開銷率、網(wǎng)絡(luò)壽命以及平均路徑跳數(shù)。覆蓋目標數(shù)-簇率等于所覆蓋的目標數(shù)與簇的比例。該值越大,說明性能越好。
首先分析節(jié)點數(shù)對目標數(shù)-簇率的性能影響,其中節(jié)點數(shù)從200至900變化,每個節(jié)點的扇區(qū)數(shù)為4。目標數(shù)為120。
圖4 節(jié)點數(shù)對目標數(shù)-簇率影響
圖4顯示節(jié)點數(shù)對目標數(shù)-簇率的影響。從數(shù)據(jù)顯示,最初節(jié)點數(shù)的增加,目標數(shù)-簇率快速下降。但當(dāng)節(jié)點下降至400后,目標數(shù)-簇率下降速度變緩。這符合預(yù)期,在目標數(shù)固定的情況下,節(jié)點數(shù)越多,所形成的簇越多,目標數(shù)與簇數(shù)的比值自然越小。相比于TDC,提出的CSOC路由的目標數(shù)-簇率得到提升,平均約提升至1.2。
本小節(jié),分析節(jié)點數(shù)和目標數(shù)對網(wǎng)絡(luò)壽命的影響。采用文獻[12]的定義,將部署網(wǎng)絡(luò)開始時間t0至網(wǎng)絡(luò)內(nèi)出現(xiàn)第一個能量消耗殆盡的節(jié)點時間t1的差,即將t1-t0作為網(wǎng)絡(luò)壽命。
圖5顯示了目標數(shù)為120、每個節(jié)點的扇區(qū)為4時,節(jié)點數(shù)對網(wǎng)絡(luò)壽命的影響。從圖5可知,節(jié)點數(shù)的增加,提升了網(wǎng)絡(luò)壽命。原因在于:節(jié)點數(shù)越多,網(wǎng)絡(luò)的總體能量越高。相比于TDC,CSOC路由的網(wǎng)絡(luò)得到提升。原因在于:CSOC路由優(yōu)化了簇頭選擇,平衡了網(wǎng)絡(luò)能耗。
圖5 節(jié)點數(shù)對網(wǎng)絡(luò)壽命的影響
圖6顯示了節(jié)點數(shù)為600、每個節(jié)點的扇區(qū)數(shù)為4時,目標個數(shù)對網(wǎng)絡(luò)壽命的影響。從圖可知,在節(jié)點數(shù)一定情況下,目標數(shù)的增加,降低了網(wǎng)絡(luò)壽命。這符合邏輯。目標數(shù)的增加,就需要更多節(jié)點覆蓋目標,這就加大了能量消耗。
圖6 目標數(shù)對網(wǎng)絡(luò)壽命的影響
先分析系統(tǒng)開銷率隨節(jié)點數(shù)的變化情況,如圖7所示,其中目標數(shù)為100,每個節(jié)點的扇區(qū)數(shù)為4。
圖7 節(jié)點數(shù)對開銷率的影響
從圖7可知,節(jié)點數(shù)的增加提升了系統(tǒng)開銷率。原因在于:節(jié)點數(shù)越多,需要交互的控制包就越多,這必然增加了開銷率。與TDC算法相比,CSOC路由控制了開銷率。
圖8顯示了節(jié)點數(shù)為300時,目標數(shù)為120時,節(jié)點扇區(qū)數(shù)對開銷率的影響。從圖8可知,扇區(qū)數(shù)的增加使開銷率呈上升趨勢。這主要是因為:節(jié)點扇區(qū)越多,選擇候選扇區(qū)以及簇頭越復(fù)雜,所產(chǎn)生的開銷就越多。與圖7類似,相比于TDC,CSOC路由仍控制了開銷。
圖8 扇區(qū)數(shù)對開銷率的影響
最后,分析節(jié)點數(shù)對路徑跳數(shù)的影響,如圖9所示,其中目標數(shù)為120,每個節(jié)點的扇區(qū)數(shù)為4。
圖9 節(jié)點數(shù)對路徑跳數(shù)的影響
從圖9可知,最初(節(jié)點數(shù)從200至400變化期間),路徑跳數(shù)隨節(jié)點數(shù)的增加,快速下降。但當(dāng)節(jié)點數(shù)增加至400后,路徑跳數(shù)隨節(jié)點數(shù)增加而下降的速度變緩。原因在于:節(jié)點數(shù)越多,節(jié)點密度越高,可選的數(shù)據(jù)傳輸路徑越多,進而產(chǎn)生最短路徑的可能性越大。相比于TDC,CSOC路由控制了路徑跳數(shù)。
簇結(jié)構(gòu)是提高數(shù)據(jù)傳輸效率,減少能耗的有效策略。為此,本文針對有向傳感網(wǎng)絡(luò),面向通信扇區(qū)優(yōu)化的簇CSOC路由。CSOC路由從通信扇區(qū)角度選擇簇頭。簇頭再從兩跳鄰居節(jié)點擇優(yōu)節(jié)點網(wǎng)關(guān)。仿真結(jié)果表明,提出的CSOC路由降低了能耗,延長了網(wǎng)終壽命。