王施雨, 劉 唐
(1. 東北師范大學(xué) 物理學(xué)院, 吉林 長春 130024; 2. 四川師范大學(xué) 基礎(chǔ)教學(xué)學(xué)院, 四川 成都 610066)
近年來,隨著無線通信技術(shù)與微電子技術(shù)的持續(xù)發(fā)展,無線傳感器網(wǎng)絡(luò)(WSN)[1]得到越來越廣泛的應(yīng)用.傳感器網(wǎng)絡(luò)中的節(jié)點通常由能量有限的電池供電,這些節(jié)點在部署后難以更換電池,所以無線傳感器網(wǎng)絡(luò)有著嚴(yán)重的能量約束問題[2].
在采用多跳數(shù)據(jù)傳輸?shù)臒o線傳感器網(wǎng)絡(luò)中,如果某些節(jié)點承擔(dān)了更大的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù),它們的能量消耗速度會明顯快于其他節(jié)點,因而這些節(jié)點會首先死亡.在這些節(jié)點死亡后,它們負(fù)責(zé)轉(zhuǎn)發(fā)的數(shù)據(jù)將很難再有效傳輸至sink,此時網(wǎng)絡(luò)壽命結(jié)束,而網(wǎng)絡(luò)中其他節(jié)點內(nèi)大量的剩余能量被浪費(fèi),這種現(xiàn)象被稱為“能量空洞”[3-4].文獻(xiàn)[5]的實驗結(jié)果表明當(dāng)網(wǎng)絡(luò)中出現(xiàn)能量空洞,網(wǎng)絡(luò)壽命結(jié)束時,網(wǎng)絡(luò)中還剩余高達(dá)90%的能量被浪費(fèi).
在無線傳感器網(wǎng)絡(luò)的真實應(yīng)用場景下,傳感器節(jié)點的數(shù)據(jù)產(chǎn)生量會根據(jù)環(huán)境實時發(fā)生變化.例如,對用于面向人群監(jiān)控任務(wù)的傳感器網(wǎng)絡(luò),節(jié)點的數(shù)據(jù)產(chǎn)生速率與被監(jiān)控的人員數(shù)量密切相關(guān).由于人類出行的時空規(guī)律性[6],在不同時間被某個節(jié)點監(jiān)控的人員數(shù)量會有所不同,這使得該節(jié)點的數(shù)據(jù)產(chǎn)生速率會呈現(xiàn)有規(guī)律的動態(tài)變化.因此,網(wǎng)絡(luò)中的節(jié)點的能耗負(fù)載也呈現(xiàn)出動態(tài)變化的特點.
近年來,盡管能量空洞現(xiàn)象已經(jīng)引起了研究者們的廣泛關(guān)注,并取得了一定的研究成果,但是還沒有面向由真實場景下節(jié)點的數(shù)據(jù)產(chǎn)生速率動態(tài)變化造成的能量空洞問題的解決方案.
在對前人工作進(jìn)行總結(jié)的基礎(chǔ)上,為有效避免由節(jié)點數(shù)據(jù)產(chǎn)生速率動態(tài)發(fā)生變化造成的節(jié)點能量空洞現(xiàn)象,提出了一種數(shù)據(jù)引流的非均勻分簇算法FRUC.本文主要工作如下:
1) 利用分簇進(jìn)行數(shù)據(jù)收集與傳輸,但與傳統(tǒng)的非均勻分簇不同,FRUC算法在網(wǎng)絡(luò)初始階段對網(wǎng)絡(luò)進(jìn)行分層,每層網(wǎng)絡(luò)層高不等,簇的范圍限制在層內(nèi);
2) 考慮所有節(jié)點的數(shù)據(jù)平均產(chǎn)生率,給出網(wǎng)絡(luò)各層內(nèi)的簇頭節(jié)點完成一次簇內(nèi)、簇間數(shù)據(jù)處理所消耗能量的計算方法,并讓網(wǎng)絡(luò)各層的層高取值滿足各層之間的所有簇頭節(jié)點的能耗均衡;
3) 考慮節(jié)點數(shù)據(jù)產(chǎn)生率的動態(tài)變化對路由負(fù)載的影響,引入基于數(shù)據(jù)引流的數(shù)據(jù)傳輸方法,讓一個簇的發(fā)送數(shù)據(jù)量發(fā)生變化時,數(shù)據(jù)不再只發(fā)送給一個固定的簇頭,而是動態(tài)地將數(shù)據(jù)引流到多個簇頭.
目前,能量空洞作為無線傳感器網(wǎng)絡(luò)中一個瓶頸性的問題,國內(nèi)外許多研究者進(jìn)行了大量研究.
為了有效均衡網(wǎng)絡(luò)內(nèi)節(jié)點能耗,解決能量空洞問題,研究者們提出了許多不同的策略來緩解能量空洞現(xiàn)象造成的影響.其中,研究者利用的技術(shù)包括:部署移動sink、利用非均勻分簇算法、采用不同的傳輸策略、傳感器節(jié)點的非均勻分布等.下面介紹與本文研究相關(guān)的非均勻分簇算法研究.
與LEACH[7]、HEED[8]這樣的傳統(tǒng)分簇算法不同,非均勻分簇算法讓網(wǎng)絡(luò)中的各個簇具有不等的簇規(guī)模,以使有更大能耗的區(qū)域簇規(guī)模減小,有更小能耗的區(qū)域簇規(guī)模增大,從而均衡網(wǎng)絡(luò)內(nèi)各區(qū)域的節(jié)點負(fù)載,延遲能量空洞的出現(xiàn)并延長網(wǎng)絡(luò)壽命.
文獻(xiàn)[9]提出了一種分布式分簇路由協(xié)議DEBUC,該協(xié)議采用基于時間的簇頭競爭算法,節(jié)點的廣播時間由其鄰居節(jié)點和候選簇頭的當(dāng)前剩余能量決定.同時,通過控制不同網(wǎng)絡(luò)區(qū)域的候選簇頭的競爭半徑,使得距離sink較近的簇規(guī)模較小.與之相類似的還包括文獻(xiàn)[10]提出的EEUC算法,該算法通過控制簇頭的競爭半徑來調(diào)整簇的規(guī)模,使靠近sink的簇比遠(yuǎn)離sink的簇?fù)碛懈〉拇匕霃?
文獻(xiàn)[11]將非均勻分簇引入節(jié)點非均勻分布的網(wǎng)絡(luò),以避免能量空洞問題,并提出了一個最小化網(wǎng)絡(luò)內(nèi)所有節(jié)點能耗的最優(yōu)簇結(jié)構(gòu)方法,還設(shè)計了一個簡單的分布式路由協(xié)議以實現(xiàn)所有節(jié)點能耗均衡.
文獻(xiàn)[12]提出了ACT分簇路由協(xié)議.該協(xié)議將網(wǎng)絡(luò)分層,簇的規(guī)模限制在層內(nèi).文獻(xiàn)[12]計算了簇頭節(jié)點的能耗,并讓網(wǎng)絡(luò)各層的大小滿足在一個簇周期,各層內(nèi)的單個簇頭節(jié)點的能耗相等.但是,由于各層規(guī)模不同,各層內(nèi)的簇頭節(jié)點數(shù)目也不同.因此該算法并沒有保證在一個簇周期內(nèi)各層中所有的節(jié)點能耗之和相等,因而該協(xié)議并不能真正均衡各層的能耗.
文獻(xiàn)[6]研究了異構(gòu)網(wǎng)絡(luò)中如何避免能量空洞.針對異構(gòu)環(huán)境下各個簇產(chǎn)生的數(shù)據(jù)量不等且未知的條件,文獻(xiàn)[6]提出了一種基于反饋機(jī)制的分均勻成簇算法.
文獻(xiàn)[13]的研究針對由初始能量較大節(jié)點擔(dān)任簇頭、初始能量較小的節(jié)點作為簇內(nèi)成員節(jié)點的異構(gòu)傳感器網(wǎng)絡(luò),提出了基于不等簇半徑的能量空洞避免策略.文獻(xiàn)[13]從理論上推導(dǎo)出距離sink不同距離處簇半徑的大小,并給出了不等簇半徑的取值與優(yōu)化方法.
文獻(xiàn)[14]提出了一個能量有效的分布式成簇算法,該算法根據(jù)與sink節(jié)點的數(shù)據(jù)轉(zhuǎn)發(fā)距離確定適當(dāng)?shù)拇匕霃?以實現(xiàn)節(jié)點壽命的大致均衡.文獻(xiàn)[14]還提出了一個簡單的高效節(jié)能多跳數(shù)據(jù)收集協(xié)議來對成簇算法進(jìn)行評價,并計算出該協(xié)議的能耗.
文獻(xiàn)[15]提出了一個模糊能量感知的非均勻分簇算法EAUCF.該算法為降低靠近sink的簇頭節(jié)點和低剩余能量簇頭節(jié)點的工作負(fù)載,引入模糊邏輯方法以處理簇頭半徑估計的不確定性.
文獻(xiàn)[16]提出了一種流量均衡路由算法FBR.與已有的路由算法不同,FBR的骨干網(wǎng)絡(luò)構(gòu)造算法構(gòu)建了一種新的多層次骨干網(wǎng)絡(luò),該網(wǎng)絡(luò)不同于傳統(tǒng)樹形的簇頭通信拓?fù)浣Y(jié)構(gòu),而是每個簇頭擁有多個父節(jié)點.簇頭間進(jìn)行數(shù)據(jù)傳遞時,簇頭將待發(fā)送數(shù)據(jù)分發(fā)給多個父節(jié)點,以平衡父節(jié)點的能耗,延長網(wǎng)絡(luò)壽命.但是該分簇算法讓每個簇的簇半徑相等,因此各簇能耗很難實現(xiàn)完全均衡.同時,該算法并未讓所有的節(jié)點輪流擔(dān)當(dāng)簇頭,因此簇頭節(jié)點能耗速度明顯快于普通節(jié)點.
2.1網(wǎng)絡(luò)模型本文定義W×L(m)的矩形網(wǎng)絡(luò)中分布著N個傳感器節(jié)點.圖1給出了網(wǎng)絡(luò)模型示意圖,表1為相關(guān)符號說明.設(shè)該傳感器網(wǎng)絡(luò)性質(zhì)如下:
1) 唯一的sink節(jié)點位于網(wǎng)絡(luò)邊緣,sink以基站形式部署;
2) 網(wǎng)絡(luò)中所有的傳感器節(jié)點滿足隨機(jī)分布,節(jié)點的發(fā)射功率可調(diào),且在部署后靜止不動;
3) 傳感器節(jié)點被組織成簇的形式,各簇的范圍限制在網(wǎng)絡(luò)分層內(nèi),簇頭節(jié)點在完成簇內(nèi)數(shù)據(jù)收集后,以簇間多跳形式將數(shù)據(jù)發(fā)送到sink節(jié)點;
4) 傳感器節(jié)點在不同時刻的數(shù)據(jù)產(chǎn)生率動態(tài)變化,根據(jù)監(jiān)控區(qū)域的歷史數(shù)據(jù),在網(wǎng)絡(luò)生命周期內(nèi)的節(jié)點平均數(shù)據(jù)產(chǎn)生率可知.
2.2能耗模型本文采用典型的能量消耗模型[17],在數(shù)據(jù)傳輸過程中,傳感器節(jié)點傳輸lbit數(shù)據(jù)經(jīng)過距離d,產(chǎn)生的能耗為
ETx(l,d)=ETx_elec(k)+ETTx_amp(l,d)=
(1)
接收端所產(chǎn)生的能耗為
ERx(l)=ERx_elec(l)=lEelec,
(2)
其中,d0為一閾值,當(dāng)數(shù)據(jù)傳輸距離小于d0時,發(fā)送方的能耗與距離的平方成正比,否則與距離的4次方成正比.Eelec表示發(fā)送或接收1 bit數(shù)據(jù)時的能量消耗,εfsd2和εmpd4是發(fā)送1 bit數(shù)據(jù)放大器的能量消耗.
圖 1 網(wǎng)絡(luò)模型結(jié)構(gòu)
符號含義W網(wǎng)絡(luò)寬度L網(wǎng)絡(luò)長度Li第i層網(wǎng)絡(luò)Hi第i層網(wǎng)絡(luò)的層高Ci第i層網(wǎng)絡(luò)中的簇‖Ci‖簇Ci的面積r(Cj)簇Ci的半徑ρ網(wǎng)絡(luò)中的節(jié)點密度ECHi簇Ci的簇頭節(jié)點在一個簇周期內(nèi)的能耗Eini簇Ci的簇頭節(jié)點一個簇周期內(nèi)用于完成簇內(nèi)數(shù)據(jù)處理的能耗Eiti簇Ci的簇頭節(jié)點一個簇周期內(nèi)用于完成簇間數(shù)據(jù)處理的能耗Ei第i層網(wǎng)絡(luò)中所有簇頭節(jié)點在一個簇周期的總能耗
在多跳傳感器網(wǎng)絡(luò)中,靠近sink的簇頭節(jié)點由于承擔(dān)更多的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù),因而有著更大的能耗.通過傳感器節(jié)點的平均數(shù)據(jù)產(chǎn)生率,建立網(wǎng)絡(luò)各簇頭節(jié)點的能耗計算模型,提出基于網(wǎng)絡(luò)層次劃分的非均勻分簇模型,讓靠近sink的網(wǎng)絡(luò)分層內(nèi)的簇規(guī)模更小,讓遠(yuǎn)離sink的網(wǎng)絡(luò)分層內(nèi)的簇規(guī)模更大.
π(r(Ci))2ρlEelec.
(3)
因此,簇頭節(jié)點CHi接收外層網(wǎng)絡(luò)的數(shù)據(jù)所消耗的能量為
簇頭節(jié)點CHi發(fā)送到內(nèi)層網(wǎng)絡(luò)的數(shù)據(jù)包括接收的外層網(wǎng)絡(luò)數(shù)據(jù)及簇內(nèi)節(jié)點發(fā)送到簇頭的數(shù)據(jù),因此CHi需要發(fā)送到內(nèi)層網(wǎng)絡(luò)的數(shù)據(jù)總量為
根據(jù)能量消耗模型,簇頭節(jié)點CHi發(fā)送所有數(shù)據(jù)所消耗的能量為
根據(jù)(5)和(7)式能得出簇頭節(jié)點CHi在一個簇周期完成簇間數(shù)據(jù)處理所消耗的能量為
傳感器網(wǎng)絡(luò)中,簇頭節(jié)點承擔(dān)了數(shù)據(jù)收集和轉(zhuǎn)發(fā)任務(wù),它們的能耗遠(yuǎn)大于簇內(nèi)普通節(jié)點.為避免能量空洞現(xiàn)象的出現(xiàn),應(yīng)著重考察在一個簇周期內(nèi),簇內(nèi)節(jié)點的能耗.由于網(wǎng)絡(luò)各層的簇頭節(jié)點數(shù)量不等,因而僅僅比較網(wǎng)絡(luò)各層內(nèi)單個簇頭節(jié)點的能耗,并不能有效平衡網(wǎng)絡(luò)各層的總能耗.因此,為避免能量空洞現(xiàn)象的出現(xiàn),平衡網(wǎng)絡(luò)各層的能耗,在一個簇周期內(nèi)網(wǎng)絡(luò)各層內(nèi)的所有簇頭節(jié)點的能耗之和應(yīng)相等.
對第i層網(wǎng)絡(luò),其所有簇頭節(jié)點的總能耗為
(9)
(10)式給出了為平衡網(wǎng)絡(luò)各層的能耗,各層層高應(yīng)滿足的條件
(10)
下面首先討論如何選擇簇頭,進(jìn)一步給出基于數(shù)據(jù)引流的路由算法.
4.1簇頭選擇在網(wǎng)絡(luò)首輪成簇前,網(wǎng)絡(luò)內(nèi)的所有節(jié)點使用一定的傳輸能量進(jìn)行全網(wǎng)廣播,利用信號強(qiáng)度在傳輸過程中的衰減,節(jié)點可以感知相互之間的距離.文獻(xiàn)[17]給出了節(jié)點通過信號發(fā)送強(qiáng)度和接收強(qiáng)度之間的關(guān)系得出節(jié)點間相互距離的計算方法
(11)
sink在網(wǎng)絡(luò)初始階段以覆蓋全網(wǎng)絡(luò)范圍的廣播強(qiáng)度進(jìn)行一次廣播,網(wǎng)絡(luò)中的各節(jié)點在收到sink的廣播后根據(jù)(11)式得到自身與sink的距離,確定所屬網(wǎng)絡(luò)層次.進(jìn)一步,各節(jié)點在所屬網(wǎng)絡(luò)分層內(nèi)廣播包含自身當(dāng)前剩余能量信息的簇頭競爭消息.如果某節(jié)點發(fā)現(xiàn)自身的當(dāng)前剩余能量大于收到廣播的其他節(jié)點能量,該節(jié)點就發(fā)布成為簇頭的廣播.
4.2數(shù)據(jù)引流簇頭節(jié)點在每個簇周期收到簇內(nèi)各節(jié)點的數(shù)據(jù)后,需要將這些數(shù)據(jù)在網(wǎng)絡(luò)分層中進(jìn)行轉(zhuǎn)發(fā),以最終發(fā)送至sink.在傳統(tǒng)的多跳傳感器網(wǎng)絡(luò)中,一個數(shù)據(jù)包到sink之間只有一條固定的簇間路由路徑,如圖2所示.
圖 2 固定路由示意圖
這種固定簇間路由存在的問題如下:
1) 由于網(wǎng)絡(luò)各層的層高不等,各層內(nèi)的簇頭數(shù)量也不等,因而在簇頭數(shù)量較多的內(nèi)層網(wǎng)絡(luò)中,各簇頭的負(fù)載必然不均衡,會出現(xiàn)某些簇頭承擔(dān)了較多的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)而某些簇頭沒有承擔(dān)轉(zhuǎn)發(fā)任務(wù).如圖2所示,越靠近sink的簇頭節(jié)點會呈現(xiàn)更大的路由負(fù)載不均衡現(xiàn)象.以最內(nèi)層網(wǎng)絡(luò)為例,路由負(fù)載最大的節(jié)點,承擔(dān)了來自5個簇的數(shù)據(jù)轉(zhuǎn)發(fā)量,而該層網(wǎng)絡(luò)中有的簇頭并未承擔(dān)外層網(wǎng)絡(luò)的數(shù)據(jù)轉(zhuǎn)發(fā).
2) 難以適應(yīng)節(jié)點的數(shù)據(jù)產(chǎn)生率隨網(wǎng)絡(luò)環(huán)境變化的動態(tài)場景.在節(jié)點數(shù)據(jù)產(chǎn)生率動態(tài)變化的場景下,每個簇頭節(jié)點在每個簇周期接收到的簇內(nèi)成員產(chǎn)生的數(shù)據(jù)量也會隨之改變.如果采用傳統(tǒng)的固定簇間路由方法,數(shù)據(jù)轉(zhuǎn)發(fā)量的動態(tài)變化會加重同層內(nèi)的各個簇頭間的能耗負(fù)載不均現(xiàn)象,從而更快的導(dǎo)致節(jié)點的死亡并出現(xiàn)能量空洞.
為解決上述問題,平衡網(wǎng)絡(luò)內(nèi)各簇簇頭的路由負(fù)載,本文提出一種基于數(shù)據(jù)引流的路由方法,讓一個簇的數(shù)據(jù)轉(zhuǎn)發(fā)到下一層時,不再只轉(zhuǎn)發(fā)到一個簇頭,而是根據(jù)各個簇當(dāng)前需要轉(zhuǎn)發(fā)的數(shù)據(jù)量,實時將數(shù)據(jù)引流到多個簇頭.數(shù)據(jù)引流的思想如下:
1) 每個簇頭進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)時,將本簇產(chǎn)生的數(shù)據(jù)和收到的來自外層簇頭發(fā)送來的數(shù)據(jù),引流到內(nèi)層網(wǎng)絡(luò)中的多個簇頭;
2) 為實現(xiàn)避免個別節(jié)點提前死亡的目的,讓有更多剩余能量的簇頭承擔(dān)更大的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù).在每個簇周期,各個簇產(chǎn)生的數(shù)據(jù)量會動態(tài)變化,因此在每個簇周期開始簇間數(shù)據(jù)傳輸時,考察每個簇頭的剩余能量和每個簇頭所在簇內(nèi)的數(shù)據(jù)產(chǎn)生量.在某個簇頭有數(shù)據(jù)需要轉(zhuǎn)發(fā)時,將更多的數(shù)據(jù)引流到剩余能量更多、簇內(nèi)數(shù)據(jù)量更少的簇頭,以平衡下層網(wǎng)絡(luò)內(nèi)的各個簇頭的能耗.
對Li(i≠1)層網(wǎng)絡(luò)中的第j個簇頭節(jié)點CHi,j,設(shè)當(dāng)前簇周期需傳輸至下一層網(wǎng)絡(luò)的數(shù)據(jù)量為li,j,CHi,j首先啟動路由發(fā)現(xiàn)過程,向下一層網(wǎng)絡(luò)中發(fā)出路由請求消息.Li-1層網(wǎng)絡(luò)中所有簇頭在收到請求后,以一定功率發(fā)出包含自身能量信息和當(dāng)前簇周期所在簇的簇內(nèi)數(shù)據(jù)量的應(yīng)答消息.
簇頭節(jié)點CHi,j根據(jù)計算得出的引流值,將數(shù)據(jù)分為大小不等的若干份,發(fā)送至下一層的各個簇頭節(jié)點.當(dāng)新一輪簇周期,各個簇產(chǎn)生的數(shù)據(jù)量和各個簇頭的剩余能量發(fā)生變化時,數(shù)據(jù)引流量也會動態(tài)更新.
圖 3 數(shù)據(jù)引流示意圖
圖3給出了在一個簇周期進(jìn)行簇間路由時的數(shù)據(jù)引流示意圖.可以看出,各簇的數(shù)據(jù)被引流到下一層網(wǎng)絡(luò)的多個簇頭,以平衡每一層內(nèi)的各簇之間的能量消耗,避免部分節(jié)點能量耗盡形成能量空洞.數(shù)據(jù)引流算法流程如下:
For 每一個簇周期
For 每一個簇
選舉能量最大的節(jié)點成為簇頭節(jié)點
End for
For 從外到內(nèi)的每一層網(wǎng)絡(luò)
For 每一個簇頭節(jié)點
計算簇頭需要發(fā)送的數(shù)據(jù)量
啟動路由發(fā)現(xiàn)過程
收到下一層網(wǎng)絡(luò)的應(yīng)答消息
計算引流到下一層每個簇頭節(jié)點的數(shù)據(jù)量
End for
End for
各個簇頭進(jìn)行數(shù)據(jù)發(fā)送
End for
將在Matlab仿真實驗平臺下,驗證提出的算法是否能有效避免.首先對網(wǎng)絡(luò)分均勻分層進(jìn)行驗證,給出在默認(rèn)網(wǎng)絡(luò)環(huán)境下,網(wǎng)絡(luò)各層層高的取值;其次,將討論在網(wǎng)絡(luò)非均勻分層的情況下,數(shù)據(jù)引流對網(wǎng)絡(luò)性能提升的影響;進(jìn)一步,將對比LEACH、DEBUC、FBR和本文提出的FRUC4種算法不同的表現(xiàn).選擇這3個算法進(jìn)行對比的原因是LEACH是經(jīng)典的分簇算法;DEBUC為了實現(xiàn)網(wǎng)絡(luò)內(nèi)節(jié)點能量均勻消耗,通過給出每個簇頭不同的簇頭競爭半徑值以實現(xiàn)非均勻分簇;FBR則是首先提出數(shù)據(jù)引流思想的路由算法.
表 2 實驗參數(shù)
在仿真實驗中,網(wǎng)絡(luò)默認(rèn)規(guī)模為250 m×150 m的矩形區(qū)域,唯一的sink位于網(wǎng)絡(luò)的邊緣位置.網(wǎng)絡(luò)帶寬為10 kbps,其他網(wǎng)絡(luò)參數(shù)以及相應(yīng)的缺省值見表2.實驗結(jié)果若未特別說明,均為100次獨立實驗結(jié)果的均值.
5.1網(wǎng)絡(luò)分層性能首先,在節(jié)點的數(shù)據(jù)產(chǎn)生率不變的條件下,考察網(wǎng)絡(luò)分層的情況,并對網(wǎng)絡(luò)最優(yōu)分層時各層內(nèi)的簇頭節(jié)點的能耗情況進(jìn)行分析.
表3給出了每個節(jié)點產(chǎn)生的數(shù)據(jù)消息大小為1 000 bit時,由(10)式得出的網(wǎng)絡(luò)各層規(guī)模.
表 3 分層高度
從表3可以看出,在250 m×150 m的網(wǎng)絡(luò)分為了4層,越靠近sink的網(wǎng)絡(luò)分層層高越小,越遠(yuǎn)離sink的網(wǎng)絡(luò)分層層高越大.此時網(wǎng)絡(luò)壽命(第一個節(jié)點的死亡時間)為371輪.進(jìn)一步,隨機(jī)選擇了10輪簇周期,分布考察每個網(wǎng)絡(luò)分層內(nèi)的簇頭節(jié)點的總能耗.圖4給出了各網(wǎng)絡(luò)各層內(nèi)的簇頭節(jié)點在隨機(jī)選擇的10個簇周期的總能耗.可以看出,網(wǎng)絡(luò)4層內(nèi)的簇頭節(jié)點,在這10個簇周期的總能耗,一直處于相對均衡的狀態(tài),能耗值基本上在39~52 mJ之間.這說明了,隨著網(wǎng)絡(luò)被劃分成了高度不等的分層,非均勻分簇能有效平衡網(wǎng)絡(luò)各區(qū)域節(jié)點的能耗.
圖 4 各層簇頭總能耗
進(jìn)一步,圖5顯示了在這10個簇周期,網(wǎng)絡(luò)各層簇頭節(jié)點總能耗的標(biāo)準(zhǔn)差.可以看出,在隨機(jī)選取的10個簇周期中,除了2個簇周期以外,其他8個簇周期各層簇頭節(jié)點的總能耗差異都很小,其標(biāo)準(zhǔn)差都在3以內(nèi),而層間能耗差異較大的2個簇周期,標(biāo)準(zhǔn)差也在4.5以內(nèi).這表明了,FRUC算法能有效平衡層間的簇頭能耗.
圖6顯示了每個網(wǎng)絡(luò)分層內(nèi)的簇頭節(jié)點在10個簇周期的總能耗標(biāo)準(zhǔn)差.可以看出,在更靠近sink的內(nèi)層網(wǎng)絡(luò)內(nèi),各簇頭節(jié)點總能耗在各個簇周期差異很小,而在遠(yuǎn)離sink的外層網(wǎng)絡(luò),各個簇周期節(jié)點能耗差異較大.
圖 5 層間簇頭節(jié)點能耗標(biāo)準(zhǔn)差
圖 6 層內(nèi)簇頭節(jié)點能耗標(biāo)準(zhǔn)差
5.2數(shù)據(jù)引流性能下面在對數(shù)據(jù)引流對網(wǎng)絡(luò)性能的影響進(jìn)行分析.首先,比較在默認(rèn)網(wǎng)絡(luò)環(huán)境下有無數(shù)據(jù)引流時的網(wǎng)絡(luò)壽命.
表 4 數(shù)據(jù)引流對網(wǎng)絡(luò)壽命的影響
從表4可以看出,數(shù)據(jù)引流能有效提升網(wǎng)絡(luò)壽命,延緩節(jié)點死亡時間.由于數(shù)據(jù)引流能有效平衡簇頭節(jié)點間的能耗負(fù)載,并能讓具有更多剩余能量和更小數(shù)據(jù)傳輸距離的簇頭節(jié)點承擔(dān)更多的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù),因而更有利于節(jié)省數(shù)據(jù)路由過程中的能耗開銷.因此,在層間路由未進(jìn)行負(fù)載引流時,網(wǎng)絡(luò)壽命僅為211輪,而采用數(shù)據(jù)引流后,網(wǎng)絡(luò)壽命提升到376輪.
圖7給出了未采用數(shù)據(jù)引流時,網(wǎng)絡(luò)各分層中的簇頭節(jié)點在一個簇周期的能耗.可以看出,在內(nèi)層網(wǎng)絡(luò)中由于不同的簇頭節(jié)點承擔(dān)了不均衡的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù),因而各簇頭節(jié)點間的能耗差異極大.以L1層網(wǎng)絡(luò)為例,能耗最高的一個簇頭節(jié)點在一個簇周期消耗了24.215 mJ能量,這是能耗最低的簇頭節(jié)點的20.875倍.
圖 7 無數(shù)據(jù)引流時簇頭節(jié)點能耗
圖8顯示了采用數(shù)據(jù)引流后,網(wǎng)絡(luò)各層中的簇頭節(jié)點在一個簇周期的能耗.顯然可以從圖8看出,與圖7相比,L1層和L2層網(wǎng)絡(luò)中的簇頭節(jié)點的能耗得到了相當(dāng)大的平衡.這是因為通過引流,L1層和L2層網(wǎng)絡(luò)中的所有簇頭節(jié)點都承擔(dān)了數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù),因而有效均衡了所有簇頭節(jié)點的能耗負(fù)載,這也有助于避免某些簇頭節(jié)點因能耗過大提前死亡而造成的能量空洞現(xiàn)象.
圖 8 數(shù)據(jù)引流時簇頭節(jié)點能耗
5.34種算法對比通過實驗比較本文提出的基于數(shù)據(jù)引流的非均勻分簇算法FRUC、LEACH算法、DEBUC算法及FBR算法在網(wǎng)絡(luò)壽命和網(wǎng)絡(luò)首節(jié)點死亡時節(jié)點能量剩余率方面的性能.
圖9給出了在默認(rèn)網(wǎng)絡(luò)環(huán)境下,4個算法所取得的網(wǎng)絡(luò)壽命.可以看出LEACH算法由于是簇間單跳路由,因此有著最低的網(wǎng)絡(luò)壽命.DEBUC算法作為一種典型的非均勻分簇算法,網(wǎng)絡(luò)壽命相對于LEACH算法得到了明顯提升.FBR算法由于引入了引流機(jī)制,網(wǎng)絡(luò)壽命高于LEACH和DEBUC,但是FBR由于讓固定的節(jié)點擔(dān)當(dāng)簇頭,同時網(wǎng)絡(luò)內(nèi)所有簇規(guī)模相等,因此靠近sink的簇頭節(jié)點的死亡時間會早于其他普通節(jié)點,從而使網(wǎng)絡(luò)壽命低于本文提出的FRUC算法.
圖 9 網(wǎng)絡(luò)壽命對比
圖10比較了4個算法在默認(rèn)網(wǎng)絡(luò)參數(shù)下,首節(jié)點死亡時所有節(jié)點的平均剩余能量.可以看到,對于LEACH算法,在網(wǎng)絡(luò)壽命結(jié)束時所有節(jié)點平均剩余能量最高,達(dá)到了0.472 8 J,這也與文獻(xiàn)[5]的實驗結(jié)論相符.DEBUC算法和FBR算法的節(jié)點平均剩余能量分別為0.341 1 J和0.247 8 J.本文提出的FRUC算法能最好地利用節(jié)點能量,非均勻分簇保證了網(wǎng)絡(luò)各層之間簇頭節(jié)點能耗均衡,數(shù)據(jù)引流又保證了網(wǎng)絡(luò)各層內(nèi)的簇頭節(jié)點能量均衡消耗,因此當(dāng)網(wǎng)絡(luò)中出現(xiàn)第一個死亡節(jié)點時,網(wǎng)絡(luò)所有節(jié)點平均剩余能量僅為0.193 8 J.
圖 10 節(jié)點平均剩余能量對比
進(jìn)一步,改變節(jié)點初始能量,對4個算法的網(wǎng)絡(luò)壽命進(jìn)行比較,圖11給出了實驗結(jié)果.可以看到,隨著節(jié)點初始能量的增加,4個算法所取得的網(wǎng)絡(luò)壽命均得到了提升,其中FRUC、DEBUC、FRB等3個算法網(wǎng)絡(luò)壽命的提升明顯.而節(jié)點初始能量取值不同時,FRUC算法均有著最高的網(wǎng)絡(luò)壽命.
圖 11 不同節(jié)點初始能量下的網(wǎng)絡(luò)壽命
圖12給出了改變網(wǎng)絡(luò)中的節(jié)點密度,4個算法所取得的網(wǎng)絡(luò)壽命.可以看到,隨著節(jié)點數(shù)目的增加,LEACH和DEBUC算法的網(wǎng)路壽命均下降明顯,這是因為節(jié)點數(shù)目越多,網(wǎng)絡(luò)內(nèi)產(chǎn)生的監(jiān)控數(shù)據(jù)也隨之增加,節(jié)點消耗了更多的能量進(jìn)行數(shù)據(jù)傳輸,從而降低了網(wǎng)絡(luò)壽命.FBR算法由于數(shù)據(jù)引流的作用,網(wǎng)絡(luò)壽命在節(jié)點數(shù)目增加到350個以后,才出現(xiàn)下降,且下降趨勢明顯緩于DEBUC算法.本文提出的FRUC算法在網(wǎng)絡(luò)節(jié)點密度較低節(jié)點數(shù)目僅為300個時,網(wǎng)絡(luò)壽命略低于DEBUC和FBR算法.這是因為FRUC算法對網(wǎng)絡(luò)進(jìn)行了分層,且越靠近sink的網(wǎng)絡(luò)分層規(guī)模越小,這樣在節(jié)點低密度狀態(tài)下,L1層網(wǎng)絡(luò)內(nèi)節(jié)點數(shù)目很少,從而少量的節(jié)點承擔(dān)了簇頭節(jié)點的工作,影響了網(wǎng)絡(luò)壽命.而在其他節(jié)點密度下,FRUC算法均有著最高的網(wǎng)絡(luò)壽命,并且由于數(shù)據(jù)引流平衡了簇頭節(jié)點的能耗,因此在節(jié)點數(shù)目大于400個以后,網(wǎng)絡(luò)壽命才出現(xiàn)了下降.
圖 12 不同節(jié)點密度下的網(wǎng)絡(luò)壽命
本文對無線傳感器網(wǎng)絡(luò)的能量空洞問題進(jìn)行了研究,提出了一種基于數(shù)據(jù)引流的非均勻分簇能量空洞避免策略FRUC.與已有工作相比,FRUC的主要貢獻(xiàn)表現(xiàn)在以下2個方面:
1) 不同于傳統(tǒng)的非均勻分簇算法DEBUC與EEUC,FRUC不再通過計算不同節(jié)點的不同簇頭競爭半徑,從而實現(xiàn)非均勻分簇.FRUC在網(wǎng)絡(luò)初始階段對網(wǎng)絡(luò)進(jìn)行非均勻分層,并讓簇的范圍限制在層內(nèi),以實現(xiàn)非均勻分簇,從而保證了網(wǎng)絡(luò)各層之間簇頭節(jié)點的能耗均衡;
2) FRUC算法引入了數(shù)據(jù)引流,讓一個簇的數(shù)據(jù)發(fā)送給下一層時,不再只發(fā)送給一個簇頭,而是將數(shù)據(jù)引流到多個簇頭,這樣平衡了網(wǎng)絡(luò)各層內(nèi)各個簇頭節(jié)點的能耗均衡.
仿真實驗結(jié)果表明,FRUC算法能夠獲得比LEACH、DEBUC、FBR等主要數(shù)據(jù)傳輸算法更均衡的節(jié)點能耗負(fù)載、更長的網(wǎng)絡(luò)壽命,并能有效避免能量空洞現(xiàn)象的出現(xiàn).