劉 佳,黃友銳,唐超禮,曲立國(guó),韓 濤
(安徽理工大學(xué)電氣與信息工程學(xué)院,安徽淮南 232001)
無(wú)線傳感器網(wǎng)絡(luò)(WSN)中的傳感器節(jié)點(diǎn)通常處在不易接近的惡劣環(huán)境中,并采用能量有限的電池供電[1],由于電池不能隨時(shí)更換[2],所以設(shè)計(jì)能量消耗低,能量消耗均勻,網(wǎng)絡(luò)生命周期長(zhǎng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)至關(guān)重要[3]。
LEACH算法[4-5]是最早提出的一種自適應(yīng)分簇拓?fù)渌惴?,其簇頭節(jié)點(diǎn)能量消耗較大,且未考慮節(jié)點(diǎn)的剩余能量;HEED[6-7]作為一種完全分布式成簇算法,已將剩余能量作為參量引入其中,但對(duì)影響簇頭選舉的因素考慮不全,致使簇頭節(jié)點(diǎn)的選舉不合理?;诙鄼?quán)值優(yōu)化的分簇算法[8](MWBC)選取多個(gè)網(wǎng)絡(luò)參數(shù)作為簇頭選舉的依據(jù),但其未考慮簇頭節(jié)點(diǎn)到匯聚節(jié)點(diǎn)的距離,對(duì)簇頭節(jié)點(diǎn)的能量消耗影響較大。
文中提出的基于Agent技術(shù)的無(wú)線傳感網(wǎng)絡(luò)拓?fù)浞执厮惴▽gent應(yīng)用到分簇算法中,由于Agent[9]可以過濾掉大量的冗余信息,所以在簇頭選舉階段可以有效減少通信量,降低網(wǎng)絡(luò)的能量消耗,在簇的更新階段節(jié)約了路由空洞和定時(shí)分簇造成的不必要的能量消耗。仿真結(jié)果表明,該算法可以節(jié)約網(wǎng)絡(luò)流量,延長(zhǎng)整個(gè)網(wǎng)絡(luò)的生命周期。
假設(shè)1:每個(gè)節(jié)點(diǎn)Agent上都有移動(dòng)Agent的運(yùn)行環(huán)境,且初始能量基本相同。
假設(shè)2:無(wú)線傳感器網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)Agent都有唯一編號(hào),且已知自己和鄰居節(jié)點(diǎn)Agent的編號(hào)。
假設(shè)3:部署的節(jié)點(diǎn)Agent分布在一個(gè)二維平面內(nèi),可用坐標(biāo)(xv,yv)標(biāo)識(shí)自己的位置。
將無(wú)線傳感器網(wǎng)絡(luò)看作是一個(gè)多Agent系統(tǒng),系統(tǒng)框圖如圖1所示。
圖1 基于Agent的WSN網(wǎng)絡(luò)框圖
圖1中系統(tǒng)包括6種類型Agent,類型及功能定義如下:節(jié)點(diǎn)Agent:存儲(chǔ)與節(jié)點(diǎn)相鄰的節(jié)點(diǎn)信息,并向移動(dòng)Agent提供外部訪問和更新簇信息的接口;簇頭Agent:收集簇內(nèi)節(jié)點(diǎn)Agent發(fā)送的數(shù)據(jù);簇內(nèi)移動(dòng)Agent:由簇頭Agent產(chǎn)生,用于修復(fù)路由空洞和孤立節(jié)點(diǎn)問題;簇間移動(dòng)Agent:由匯聚Agent產(chǎn)生,將用戶布置的任務(wù)分配給簇頭Agent,并將簇頭Agent收集到的數(shù)據(jù)傳送給匯聚Agent處理;匯聚Agent:處理簇頭Agent收集的信息和向簇頭Agent發(fā)送用戶發(fā)布的任務(wù);用戶Agent:對(duì)傳感器網(wǎng)絡(luò)發(fā)布任務(wù),收集匯聚Agent數(shù)據(jù)等。
該算法分為首輪成簇和簇的更新2個(gè)階段。
3.1首輪成簇階段
簇頭Agent由每個(gè)節(jié)點(diǎn)Agent的剩余能量、發(fā)射范圍內(nèi)的鄰居數(shù)目、與所有鄰居的平均距離、與基站的距離4個(gè)因素共同決定,通過計(jì)算各節(jié)點(diǎn)Agent的權(quán)值大小,選出最佳簇頭Agent節(jié)點(diǎn)。
具體操作流程如下:
步驟1:每個(gè)節(jié)點(diǎn)Agent向其周圍節(jié)點(diǎn)Agent發(fā)送詢問報(bào)文,收到詢問報(bào)文的節(jié)點(diǎn)Agent回復(fù)應(yīng)答報(bào)文,節(jié)點(diǎn)Agent每收到一個(gè)應(yīng)答報(bào)文,計(jì)數(shù)器加1,以統(tǒng)計(jì)發(fā)射范圍內(nèi)的節(jié)點(diǎn)Agent數(shù)目之和,用Nv表示。
步驟2:節(jié)點(diǎn)Agent已知自身的位置信息(xv,yv),通過接收到應(yīng)答報(bào)文中包含的鄰居節(jié)點(diǎn)Agent的位置信息(xn,yn),可計(jì)算出節(jié)點(diǎn)Agent到其鄰居節(jié)點(diǎn)Agent的平均距離Dnv。
(1)
步驟3:網(wǎng)絡(luò)中的節(jié)點(diǎn)Agent接收到匯聚節(jié)點(diǎn)Agent發(fā)送的詢問報(bào)文后,提取出匯聚節(jié)點(diǎn)Agent的位置信息(xb,yb),通過計(jì)算得出自己和匯聚節(jié)點(diǎn)Agent的距離Dbv.
(2)
步驟4:各Agent利用已知信息,計(jì)算其剩余能量EV.計(jì)算公式如下:
(3)
式中:Ev和E0分別為節(jié)點(diǎn)Agent的剩余能量和初始能量;T1和T2分別為節(jié)點(diǎn)Agent擔(dān)任簇頭Agent和未擔(dān)任簇頭Agent的時(shí)間;Nv為節(jié)點(diǎn)Agent發(fā)射范圍內(nèi)節(jié)點(diǎn)的數(shù)目之和;countv表示各鄰居節(jié)點(diǎn)Agent發(fā)送給該節(jié)點(diǎn)Agent的總數(shù)據(jù)量;e表示簇頭Agent融合單位數(shù)據(jù)所消耗的能量。
步驟5:完成以上各步驟后,節(jié)點(diǎn)Agent利用式(4)計(jì)算各自的權(quán)值。
(4)
式中:δ為一般情況下簇頭Agent能夠處理的理想節(jié)點(diǎn)數(shù);λ1~λ4為權(quán)重因子,理想節(jié)點(diǎn)數(shù)和權(quán)重因子均可根據(jù)節(jié)點(diǎn)所處的環(huán)境變化隨時(shí)調(diào)整,且權(quán)重因子之和為1。
步驟6:每個(gè)節(jié)點(diǎn)Agent計(jì)算出自己的權(quán)值后向全網(wǎng)廣播自己的權(quán)值,并將接收到鄰居節(jié)點(diǎn)Agent報(bào)文中的權(quán)值與自己的權(quán)值比較,若其在鄰居節(jié)點(diǎn)Agent中具有最小權(quán)值,則該節(jié)點(diǎn)Agent成為簇頭Agent并向周圍節(jié)點(diǎn)Agent發(fā)送通知報(bào)文,宣布自己成為簇頭Agent。
步驟7:節(jié)點(diǎn)Agent根據(jù)接收到信號(hào)強(qiáng)度的大小,向信號(hào)強(qiáng)度最大的簇頭Agent發(fā)送請(qǐng)求報(bào)文,申請(qǐng)加入該簇,經(jīng)過簇頭Agent同意后加入該簇。
步驟8:重復(fù)步驟6~步驟7,所有節(jié)點(diǎn)Agent都加入到某一特定的簇后,完成分簇過程。
3.2簇的更新階段
該算法不是周期性地進(jìn)行簇頭選舉,而是采用事件通知Agent的啟發(fā)機(jī)制,簇內(nèi)移動(dòng)Agent若發(fā)現(xiàn)路由空洞問題或孤立節(jié)點(diǎn)存在,修復(fù)后及時(shí)通知簇內(nèi)節(jié)點(diǎn)Agent進(jìn)行新一輪的簇頭選舉;或當(dāng)簇頭節(jié)點(diǎn)Agent的權(quán)值高于簇內(nèi)其他節(jié)點(diǎn)Agent時(shí),也會(huì)進(jìn)行新一輪的簇頭選舉。
3.2.1路由空洞的修復(fù)
對(duì)于節(jié)點(diǎn)A來(lái)講,到達(dá)簇頭節(jié)點(diǎn)一個(gè)正常的路線是AFIO,如圖2(a)所示。若節(jié)點(diǎn)E和F已經(jīng)失效,通常節(jié)點(diǎn)B被選擇作為節(jié)點(diǎn)A的下一跳節(jié)點(diǎn),路由是ABCDGHIO,形成了路由空洞問題,如圖2(b)所示。
(a)正常路由
(b)路由空洞
圖2路由空洞
有時(shí)繞過空洞不是最優(yōu)解,A直接發(fā)送到I的能量消耗遠(yuǎn)小于繞過空洞所消耗的能量。此時(shí),簇內(nèi)移動(dòng)Agent可以用來(lái)控制節(jié)點(diǎn)A的發(fā)射功率。當(dāng)簇內(nèi)移動(dòng)Agent從A到達(dá)I,發(fā)現(xiàn)發(fā)送到I的能量消耗遠(yuǎn)小于繞過空洞所消耗的能量,再回到節(jié)點(diǎn)A,通知節(jié)點(diǎn)A直接發(fā)送至節(jié)點(diǎn)I,如圖3所示。
圖3移動(dòng)Agent解決路由空洞
移動(dòng)Agent將會(huì)在每個(gè)節(jié)點(diǎn)上做出一個(gè)判斷,如果移動(dòng)Agent發(fā)現(xiàn)在節(jié)點(diǎn)k處滿足式(5),然后它回到節(jié)點(diǎn)i處,讓i直接發(fā)送到節(jié)點(diǎn)k。
ETX(i,k) (5) 此外,考慮到能源假設(shè)的平衡,傳輸功率應(yīng)該有一個(gè)上限Emax,若一個(gè)節(jié)點(diǎn)長(zhǎng)期使用大功率傳輸,它將很快耗盡自己的能量。因此,能量假設(shè)應(yīng)該滿足式(6)的制約條件。 ETX(i,k) (6) 3.2.2孤立節(jié)點(diǎn)的修復(fù) 若一個(gè)或一些節(jié)點(diǎn)和網(wǎng)絡(luò)的其他部分失去連接,則稱為孤立節(jié)點(diǎn),如圖4所示。事實(shí)上,孤立節(jié)點(diǎn)的數(shù)據(jù)仍是有價(jià)值的,不應(yīng)該被浪費(fèi)。 圖4 發(fā)現(xiàn)孤立節(jié)點(diǎn) 圖5 孤立節(jié)點(diǎn)重新加入 定義一個(gè)時(shí)間閾值Tmax,如果節(jié)點(diǎn)超過Tmax時(shí)間沒收到簇內(nèi)移動(dòng)Agent,它將把本身作為一個(gè)孤立節(jié)點(diǎn)。然后用最大發(fā)射功率周期性進(jìn)行廣播。移動(dòng)Agent收到這個(gè)消息后,通知孤立節(jié)點(diǎn)通過相應(yīng)的傳輸功率創(chuàng)建新的鏈接,如圖5所示。當(dāng)節(jié)點(diǎn)A重新加入網(wǎng)絡(luò),新的路線是BCADE。 文中采用OMNET++仿真平臺(tái)[10-11]作為仿真工具,并將新提出的算法和MWBC算法在OMNET++仿真平臺(tái)上運(yùn)行,對(duì)整個(gè)網(wǎng)絡(luò)的分簇能量消耗、丟包率、生存周期(第一個(gè)節(jié)點(diǎn)死亡時(shí)的分簇輪數(shù))3個(gè)方面進(jìn)行仿真分析和比較,仿真結(jié)果如圖6、圖7、圖8所示。 文中算法初始仿真環(huán)境主要參數(shù)配置情況如下:初始能量E0為12 J,權(quán)重因子λ1、λ2、λ3、λ4分別為0.3 J、0.2 J、0.2 J、0.3 J,節(jié)點(diǎn)距離臨界值d0為150 m,仿真區(qū)域面積為100×100 m2,Eelec為50 nJ/bit·m-1,εfx為10 pJ/bit·m-2. 圖6 每輪分簇消耗能量對(duì)比圖 圖6所示是每輪分簇能量的消耗,兩種算法每輪分簇消耗的能量均隨著節(jié)點(diǎn)數(shù)的增多而增多,因?yàn)殡S著節(jié)點(diǎn)數(shù)的增多分簇時(shí)需要處理的數(shù)據(jù)量增多,加大了能量消耗,而文中算法明顯比MWBC算法[8]節(jié)省能量。因?yàn)樾畔鬏斶^程去除了大量冗余信息,減少了通信消耗的能量。此外,在分簇過程中簇內(nèi)移動(dòng)Agent及時(shí)對(duì)路由空洞問題進(jìn)行修復(fù),節(jié)省了由于路由空洞造成的能量浪費(fèi)。 由圖7可知,文中算法丟包率比MWBC算法[8]小,是因?yàn)槲闹兴惴ɡ肁gent的思想,每個(gè)節(jié)點(diǎn)Agent都具有分布式數(shù)據(jù)處理功能,減少了所需傳輸?shù)臄?shù)據(jù)量,使得數(shù)據(jù)傳輸過程中的數(shù)據(jù)沖突減少,在簇的更新階段利用移動(dòng)Agent進(jìn)行孤立節(jié)點(diǎn)的修復(fù),也有利于降低丟包率。 圖7 丟包率對(duì)比圖 由圖8可以看出,文中提出的算法比MWBC算法[6]具有更長(zhǎng)的網(wǎng)絡(luò)生存時(shí)間,節(jié)點(diǎn)數(shù)增多時(shí)這種優(yōu)勢(shì)更加明顯。文中算法將簇頭Agent到匯聚Agent的距離作為簇頭選舉的參量之一,可使簇頭的選舉更合理,能量消耗更加均勻;在簇的更新階段采用啟發(fā)機(jī)制減少了由于定時(shí)分簇造成的能量浪費(fèi)。此外,利用簇間移動(dòng)Agent把簇頭Agent收集的信息直接傳送給匯聚Agent,也可節(jié)省簇頭Agent的能量,減少簇頭節(jié)點(diǎn)因處理大量信息而提前死亡的風(fēng)險(xiǎn)。 圖8 網(wǎng)絡(luò)生存時(shí)間對(duì)比圖 文中提出了一種基于Agent技術(shù)的無(wú)線傳感網(wǎng)絡(luò)拓?fù)浞执厮惴ǎ撍惴ㄔ诜执爻跗谌婵紤]影響簇頭選舉的多種因素,根據(jù)不同的應(yīng)用環(huán)境動(dòng)態(tài)調(diào)整加權(quán)因子;在簇的更新階段利用移動(dòng)Agent及時(shí)對(duì)簇內(nèi)問題進(jìn)行發(fā)現(xiàn)和修復(fù),修復(fù)完成后進(jìn)行新一輪的簇頭選舉。仿真結(jié)果表明文中提出的算法比HEED算法[6]和MWBC算法[6]更具優(yōu)勢(shì),可以獲得更加合理的簇分布,節(jié)省能量,延長(zhǎng)整個(gè)網(wǎng)絡(luò)的生命周期。適合在大規(guī)模部署或處在惡劣環(huán)境中的網(wǎng)絡(luò)中推廣。參考文獻(xiàn): [1]周治平,王亭.一種節(jié)能的無(wú)線傳感器網(wǎng)絡(luò)分簇算法.計(jì)算機(jī)工程,2011,37(22):85-87. [2]孫利民,李建中,陳渝.無(wú)線傳感器網(wǎng)絡(luò).北京:清華大學(xué)出版社,2005:95-98. [3]劉新華,李方敏.一種基于負(fù)載均衡的無(wú)線傳感器網(wǎng)絡(luò)分布式定向分簇算法.計(jì)算機(jī)研究與發(fā)展,2009,46(12):2044-2052. [4]潘霞,于宏毅.一種基于LEACH的能耗均衡分群算法.電路與系統(tǒng)學(xué)報(bào),2012,17(1):75-80. [5]呂濤,朱清新等.一種能耗均衡的無(wú)線傳感器網(wǎng)絡(luò)分簇算法.計(jì)算機(jī)應(yīng)用,2012,32(11):3107-3111. [6]黃河清,姚道遠(yuǎn).一種基于多權(quán)值優(yōu)化的無(wú)線傳感器網(wǎng)分簇算法研究.電子與信息學(xué)報(bào),2008,30(6):1489-1492. [7]DIMOKAS N,KATSAROS D,MANOLOPOULOS Y.Energy-efficient distributed clustering in wireless sensor networks.Journal of Parallel and Distributed Computing,2010,70(4):371-383. [8]劉安豐,任炬.基于Omnet++的WSN路由實(shí)驗(yàn)教學(xué)平臺(tái).計(jì)算機(jī)工程,2012,38(11):258-261. [9]曹永潔,齊建東.無(wú)線傳感器網(wǎng)絡(luò)能耗均衡的流量調(diào)節(jié)機(jī)制.計(jì)算機(jī)工程,2012,32(11):99-101. [10]楊光旭,劉方愛.OMNeT++平臺(tái)上無(wú)線傳感器網(wǎng)絡(luò)仿真系統(tǒng)的研究.計(jì)算機(jī)應(yīng)用研究,2011,28(9):3443-3446. [11]王燕,張銳.基于三步簇頭競(jìng)爭(zhēng)機(jī)制的分簇算法研究.儀表技術(shù)與傳感器,2013(4):90-93.4 仿真結(jié)果分析
5 結(jié)束語(yǔ)