丁忠祥 楊彥紅
(北京印刷學(xué)院信息工程學(xué)院,北京 102600)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)是由大量靜止或移動的傳感器以自組織和多跳的方式構(gòu)成的無線網(wǎng)絡(luò),以協(xié)作地感知、采集、處理和傳輸網(wǎng)絡(luò)覆蓋地理區(qū)域內(nèi)被感知對象的信息,并最終把這些信息發(fā)送給網(wǎng)絡(luò)的所有者[1]。無線傳感器節(jié)點通常部署在一些危險的或者人們不能輕易抵達的地方,執(zhí)行環(huán)境監(jiān)測任務(wù),例如化工廠的管道狀態(tài)監(jiān)測,森林中的環(huán)境監(jiān)控等,都有著廣泛的應(yīng)用前景[2]。
由于無線傳感器節(jié)點存儲能力、計算能力和傳輸能力受限,且通常是用微型電池提供能量,面對電池能量有限且運行在惡劣甚至危險的自然環(huán)境中能量難以補充的問題,怎樣提高網(wǎng)絡(luò)中節(jié)點能量的有效利用率,延長無線傳感器網(wǎng)絡(luò)的生命周期,是非常重要的問題。另外網(wǎng)絡(luò)中的節(jié)點受各種因素的影響,集中式算法往往需要較長的時間去獲取網(wǎng)絡(luò)狀態(tài),而分布式的算法具有更好的適應(yīng)性和可擴展性,因此研究一種分布式的聚類方法,使得節(jié)點聚類成簇,減少網(wǎng)絡(luò)的無線通信次數(shù),兼顧數(shù)據(jù)傳輸?shù)脱舆t的要求,使得網(wǎng)絡(luò)中傳感器節(jié)點能耗均衡,達到延長整個網(wǎng)絡(luò)的生命周期的目的。
LEACH協(xié)議是無線傳感器網(wǎng)絡(luò)中經(jīng)典的聚類協(xié)議,在節(jié)點內(nèi)部生成一個隨機數(shù)與當(dāng)前的閾值進行比較,實現(xiàn)網(wǎng)絡(luò)中簇頭節(jié)點的選擇[3]。若隨機數(shù)小于閾值,則節(jié)點成為簇頭節(jié)點;非簇頭節(jié)點選擇最近的一個簇頭節(jié)點作為自身簇頭;閾值隨網(wǎng)絡(luò)的聚類次數(shù)不斷變化。在LEACH協(xié)議的基礎(chǔ)上,Manjeshwar等人提出了TEEN協(xié)議[4]。當(dāng)節(jié)點將采集的數(shù)據(jù)大于設(shè)置的Hard Threshold和Soft Threshold時,數(shù)據(jù)才會被發(fā)送出去,大大減少了網(wǎng)絡(luò)中需要傳輸?shù)臄?shù)據(jù)。Lindsey等人提出了PEGASIS協(xié)議,根據(jù)部署節(jié)點間的距離,產(chǎn)生一條數(shù)據(jù)傳輸鏈,隨機選擇鏈中的一個節(jié)點作為簇頭節(jié)點[5]。Quan Wang等人提出了EECSR壓縮感知算法,通過備份簇頭降低轉(zhuǎn)換簇頭的開銷,從而降低網(wǎng)絡(luò)電量消耗[6]。Xiang等人提出了一種利用壓縮傳感數(shù)據(jù)的方法實現(xiàn)任意無線傳感器能量效率和恢復(fù)保真度的數(shù)據(jù)聚集方案[7]。
無線傳感器網(wǎng)絡(luò)部署按照隨機概率散布在一個范圍確定的區(qū)域內(nèi),除基站外,所有節(jié)點都是對等的,通過自組織(Ad-hoc)的方式形成一個網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。節(jié)點的發(fā)送功率決定了節(jié)點傳輸?shù)姆秶?在本文中假定所有節(jié)點都可以通過增大電量的方式和基站進行直接通信,但是為了降低功耗采用了聚類傳輸模型來提高網(wǎng)絡(luò)的性能,以下將從傳輸模型、電量消耗模型和性能評價指標(biāo)進行表述。
假定網(wǎng)絡(luò)中的所有傳感器節(jié)點都直接向基站發(fā)送數(shù)據(jù),當(dāng)網(wǎng)絡(luò)中節(jié)點數(shù)量較大時,將會產(chǎn)生信道爭用的情況,大量的信息傳輸會發(fā)生碰撞從而使網(wǎng)絡(luò)無法正常地工作。因此采用聚類的方式,將節(jié)點劃分為不同的區(qū)域,如圖1所示,每個節(jié)點是一個小圓點,將網(wǎng)絡(luò)范圍劃分成若干區(qū)域,在圖中用虛線劃分不同的區(qū)域,使得每個區(qū)域的節(jié)點數(shù)盡可能相同。每個區(qū)域內(nèi)選取一個簇頭節(jié)點,在圖1中以黑色的小圓點表示。簇頭節(jié)點負(fù)責(zé)收集自己區(qū)域內(nèi)節(jié)點產(chǎn)生的數(shù)據(jù),在節(jié)點內(nèi)部將采集的數(shù)據(jù)進行數(shù)據(jù)的聚合,然后通過簇頭節(jié)點直接發(fā)送給基站(圖中左下角黑色小方塊)。簇內(nèi)節(jié)點進行通信時,可以降低發(fā)送功率,減少簇與簇之間的干擾,同時還可以增加節(jié)點工作壽命。
圖1 聚類傳輸模型示意圖
傳感器節(jié)點在感測、接收和傳輸數(shù)據(jù)時消耗能量。不同的運行方式對傳感器節(jié)點的能耗影響較大。一般來說,傳感器節(jié)點有四種模式,即空閑、發(fā)送、接收和休眠模式。然而,大部分能量消耗在傳輸和接收數(shù)據(jù)上。Shih等人在2002年的Mobicom會議上指出,傳感器的大部分能量消耗在通信模塊中,而在睡眠模式下的能量消耗通??梢院雎圆挥媅8]。因此,在降低通信成本的前提下,可以大大提高能源利用率。
本文采用一階無線傳輸模型[3,6]來描述節(jié)點傳輸?shù)哪芎?即向距離為d的節(jié)點傳輸一個k-bit大小的數(shù)據(jù)包需要消耗的能量為:
接收這個數(shù)據(jù)需要消耗的能量為:
其中,Eelec是節(jié)點無線通訊消耗的能量,εamp是信號放大器消耗的能量。
由于在測試的過程中,各個算法依據(jù)初始條件的設(shè)置,所發(fā)送的數(shù)據(jù)包的大小的差異并不大,因此在本論文的仿真過程中假定k為固定值。當(dāng)簇頭節(jié)點向基站發(fā)送數(shù)據(jù)時,距離是能量消耗的主要影響的變量。
在傳感器網(wǎng)絡(luò)中,網(wǎng)絡(luò)的性能包括低延遲,抗干擾、低功耗等,存在不同的計算公式和評價指標(biāo)。在本文中將采用以下性能評價指標(biāo)并給出計算依據(jù)。
(1)存活節(jié)點數(shù)量
存活節(jié)點數(shù)量(Number of Available Nodes)是統(tǒng)計網(wǎng)絡(luò)中可以運行的節(jié)點的數(shù)量。在網(wǎng)絡(luò)運行的時刻t,節(jié)點v的電池電量vele大于正常工作的電池電量最小閾值Emin,則認(rèn)為該節(jié)點v是存活的。
(2)網(wǎng)絡(luò)生命周期
網(wǎng)絡(luò)生命周期(Network Lifetime)是表示網(wǎng)絡(luò)從開始運行到結(jié)束的周期。網(wǎng)絡(luò)開始運行開始記為時刻t1。當(dāng)節(jié)點中所有的節(jié)點不是存活狀態(tài)或以一定比例存活節(jié)點數(shù)量的時刻為t2。網(wǎng)絡(luò)生命周期則是t1和t2的差值。
(3)平均最大數(shù)據(jù)延遲
平均最大數(shù)據(jù)延遲(AverageMaximumData Delay)是表示網(wǎng)絡(luò)中所有節(jié)點數(shù)據(jù)達到基站的平均最大延遲。一個節(jié)點v周期性產(chǎn)生數(shù)據(jù)包p1,p2,…,pn。產(chǎn)生這些數(shù)據(jù)包的時間分別為Gp1,Gp2, … ,Gpn。這些數(shù)據(jù)包達到基站的時間分別為Rp1, Rp2, … ,Rpn,則節(jié)點的最大數(shù)據(jù)延遲vdelay是時間差值的最大值。
對于全網(wǎng)來說就是所有節(jié)點的最大數(shù)據(jù)延遲的平均值為:
本文提出了一種基于分布式聚類的數(shù)據(jù)傳輸方法,無線傳感器網(wǎng)絡(luò)周期性的進行工作,每個周期分為節(jié)點聚類階段和穩(wěn)定傳輸階段。在節(jié)點聚類階段,傳感器節(jié)點采用剩余電量聚類算法(Residual Electricity Clustering Algorithm, RECA)選取合適的簇頭節(jié)點,使得網(wǎng)絡(luò)中的節(jié)點被劃分成各個分簇中;在穩(wěn)定傳輸階段,簇內(nèi)節(jié)點將采集到的數(shù)據(jù)發(fā)送給簇頭節(jié)點,簇頭節(jié)點再將接收到的數(shù)據(jù)傳輸?shù)交局小?/p>
節(jié)點進入聚類階段時,產(chǎn)生一個廣播隨機數(shù)定時器,觸發(fā)時間事件后,節(jié)點廣播自己的節(jié)點信息,其中節(jié)點信息不限于自己的剩余電量。其他時隙節(jié)點處于接收狀態(tài),接收其它節(jié)點的廣播信息,以獲取周圍節(jié)點的最新狀態(tài)。再等待廣播消息一段時間后,節(jié)點將按照下一節(jié)中描述的RECA過程,先對周圍鄰居節(jié)點的狀態(tài)進行分析,從中選擇一個合適的節(jié)點作為自身的簇頭節(jié)點。當(dāng)一個節(jié)點成為簇頭節(jié)點或者簇內(nèi)節(jié)點數(shù)量發(fā)生變化時,節(jié)點需要重新廣播自己簇內(nèi)節(jié)點信息。
節(jié)點聚類周期結(jié)束后,網(wǎng)絡(luò)中所有的節(jié)點被劃分在各個分簇當(dāng)中。每個分簇中的非簇頭節(jié)點在感知周圍的環(huán)境信息后,將信息發(fā)送給簇頭節(jié)點;簇頭節(jié)點將自身的感知信息與接收到的其他節(jié)點的感知信息進行聚合,并發(fā)送給基站。
剩余電量聚類算法是一種節(jié)點根據(jù)周圍鄰居節(jié)點的狀態(tài)信息(包括是否為簇頭節(jié)點、剩余電量、簇內(nèi)節(jié)點數(shù)量等信息),從中選取出一個簇頭節(jié)點,完成聚類的方法。節(jié)點開始聚類時,周圍鄰居節(jié)點有以下兩種狀態(tài):
(1)鄰居節(jié)點中沒有簇頭節(jié)點
如圖2中a所示,節(jié)點A的鄰居節(jié)點中沒有簇頭節(jié)點,則建立新的簇,并比較節(jié)點A與周圍鄰居節(jié)點的剩余電量。假設(shè)節(jié)點A的剩余電量最多,則節(jié)點A改變自身狀態(tài),成為新分簇的簇頭節(jié)點,廣播自己新的狀態(tài)信息,如圖2中b所示。假設(shè)鄰居節(jié)點B的剩余電量最多,則節(jié)點A向節(jié)點B發(fā)送入簇請求包;節(jié)點B在收到請求包后,改變自身狀態(tài),成為新分簇的簇頭節(jié)點,廣播自己新的狀態(tài)信息,將節(jié)點A加入自己的簇內(nèi),并回復(fù)應(yīng)答包;節(jié)點A收到應(yīng)答包后,確認(rèn)加入分簇成功后,將節(jié)點B設(shè)為自己的簇頭節(jié)點,如圖2中c所示。
圖2 簇頭形成的過程類別情況
(2)鄰居節(jié)點中有簇頭節(jié)點
如圖3中a所示,節(jié)點A的鄰居節(jié)點中有簇頭節(jié)點,分別為簇頭節(jié)點B、C、D、E。節(jié)點A依次向周圍分簇的簇頭節(jié)點發(fā)送入簇請求包,直到成功加入一個分簇。簇頭節(jié)點在收到入簇請求包后,若簇內(nèi)節(jié)點個數(shù)未達到最大值,則入簇成功,簇頭節(jié)點將節(jié)點A加入簇內(nèi);若簇內(nèi)節(jié)點個數(shù)達到最大值,則入簇失敗。簇頭節(jié)點向節(jié)點A發(fā)送應(yīng)答包,告知其入簇結(jié)果。假設(shè)節(jié)點A向簇頭節(jié)點D發(fā)出入簇請求后加入分簇成功,則節(jié)點A將簇頭節(jié)點D設(shè)為自己的簇頭節(jié)點,如圖3中b所示。
圖3 節(jié)點加入周圍簇過程
RECA偽代碼如算法1所示。算法的輸入為node、neighbor、maxMembers,分別代表的是進行聚類的節(jié)點編號、周圍鄰居節(jié)點的集合和簇內(nèi)最大成員數(shù)。算法的輸出為true,即聚類完成。首先,將節(jié)點node設(shè)為當(dāng)前剩余電量最多的節(jié)點(行2、3)。隨后開始對所有鄰居節(jié)點進行遍歷(行4),若i所代表的鄰居節(jié)點是簇頭節(jié)點且簇內(nèi)的節(jié)點數(shù)量小于簇內(nèi)最大成員數(shù)(行5、6),則節(jié)點node將其i所代表的節(jié)點設(shè)為簇頭節(jié)點(行8),i所代表的節(jié)點的簇內(nèi)節(jié)點個數(shù)加一(行9),節(jié)點node聚類完成(行9);若i所代表的鄰居節(jié)點不是簇頭節(jié)點(行11),則將其剩余電量與當(dāng)前最大剩余電量對比,如果i所代表的鄰居節(jié)點的剩余電量大于當(dāng)前剩余電量最多的節(jié)點(行12),則i所代表的鄰居節(jié)點被視為當(dāng)前剩余電量最多的節(jié)點(行13、14)。若遍歷完所有鄰居節(jié)點后,未能完成聚類,則將當(dāng)前剩余電量最多的節(jié)點設(shè)為的簇頭節(jié)點,其簇內(nèi)節(jié)點數(shù)加一(行18、19),節(jié)點node將其設(shè)置自身的簇頭節(jié)點(行20),聚類完成(行21)。
算法1 分布式節(jié)點聚類方法輸入:node節(jié)點號,neighbor鄰居節(jié)點集合,maxMembers簇內(nèi)最大成員數(shù)輸出:聚類結(jié)果1: function selectClusterHead(node,neighbor,maxMembers)2: maxEnergy ← node.energy 3: maxEnergyNode ← node 4: for each i ∈neighbor do 5: if i.isClusterHead then 6: if i.membersNum < maxMembers then 7: node.clusterHead ← i 8: i.membersNum++9: return true 10: end if 11: else 12: if i.energy > maxEnergy then 13: maxEnergy ← i.energy 14: maxEnergyNode ← i 15: end if 16: end if 17: end for 18: maxEnergyNode.isClusterHead ← true 19: maxEnergyNode. membersNum++20: node.clusterHead ← maxEnergyNode 21: return true 22: end function
為了將RECA和其他算法進行比較,使用java實現(xiàn)了RECA、LEACH、TEEN和PEGASIS。表1給出了在仿真測試時,網(wǎng)絡(luò)的相關(guān)參數(shù)。網(wǎng)絡(luò)范圍是指節(jié)點散布的平面空間范圍,這里全部的算法都是100*100。網(wǎng)絡(luò)節(jié)點個數(shù)是網(wǎng)絡(luò)中初始化的節(jié)點個數(shù),這里假設(shè)節(jié)點個數(shù)是100。從這兩個條件可以看出,網(wǎng)絡(luò)基本上是屬于一種稀疏狀態(tài),因此在廣播鄰居信息、節(jié)點信息和簇信息時,發(fā)生碰撞的概率并不大,可以依靠重傳機制予以避免。數(shù)據(jù)生成周期是節(jié)點每隔一定時間就獲取一次傳感的數(shù)據(jù),這里假定所有算法的模擬測試中都是每隔30個時隙產(chǎn)生一個數(shù)據(jù)。節(jié)點聚類周期設(shè)置的都是1000個時隙,也就是1000個時隙之后要重新選取簇頭。簇內(nèi)最大節(jié)點數(shù)限制了一個簇內(nèi)所擁有的簇內(nèi)成員,RECA中規(guī)定不超過5個。LEACH和TEEN都需要設(shè)置網(wǎng)絡(luò)簇頭節(jié)點的百分比,這里我們設(shè)定的是0.2,在RECA中簇頭節(jié)點的百分比也近似是這個比例。初始能量是節(jié)點在網(wǎng)絡(luò)運行前的最大電量,隨著發(fā)送和接收,能量值逐漸降低。
表1 網(wǎng)絡(luò)運行參數(shù)
本文對所有協(xié)議進行100次的仿真實驗,TEEN協(xié)議采用的是hard模式。結(jié)果如下:
圖4為各協(xié)議在仿真時,節(jié)點存活數(shù)量隨時間變化情況對比圖。在存活節(jié)點數(shù)量為100的時候,RECA的生命周期最長。LEACH協(xié)議在進行簇頭節(jié)點選擇的時候,依賴于節(jié)點生成的隨機數(shù),存在有簇頭節(jié)點數(shù)量過多或過少、簇頭節(jié)點分布不均勻的問題,導(dǎo)致一些節(jié)點能量消耗較快而過早死亡。TEEN協(xié)議在LEACH的基礎(chǔ)上增加了Hard Threshold和Soft Threshold,減少了節(jié)點發(fā)送的數(shù)據(jù)量,但仍然存在同樣的問題。PEGASIS協(xié)議將所有節(jié)點連成一條鏈,位于鏈的中間區(qū)域的節(jié)點需要進行大量的數(shù)據(jù)轉(zhuǎn)發(fā)工作,加劇了節(jié)點的死亡。
圖4 存活節(jié)點數(shù)量對比
圖5為各協(xié)議在仿真時,基站收到的信息量隨時間變化情況對比圖。圖中可以看出,在網(wǎng)絡(luò)運行相同時間的情況下,采用RECA時,基站接收的信息量最大。LEACH協(xié)議在網(wǎng)絡(luò)運行前期與RECA的信息發(fā)送量大致相同,但隨著網(wǎng)絡(luò)中存活節(jié)點的減少,需要發(fā)送信息的也在減少。TEEN協(xié)議主要是通過減少信息的發(fā)送來延長網(wǎng)絡(luò)的生命,因此基站接收的信息量較少。PEGASIS協(xié)議同樣由于節(jié)點的大量死亡,信息發(fā)送量減少。
圖5 基站接收的信息量對比
圖6為各協(xié)議在仿真時,網(wǎng)絡(luò)平均最大數(shù)據(jù)延遲對比圖。RECA相比于其他聚類協(xié)議,有著較低的平均最大數(shù)據(jù)延遲,節(jié)點的感知數(shù)據(jù)能較快發(fā)送到基站中。LEACH協(xié)議的平均最大數(shù)據(jù)延遲達到2000以上,PEGASIS的延遲更大。因此,RECA具有高效的傳輸性能。
圖6 平均最大數(shù)據(jù)延遲對比
無線傳感器網(wǎng)絡(luò)的分布式數(shù)據(jù)高效傳輸一直以來都影響大規(guī)模網(wǎng)絡(luò)部署應(yīng)用。本論文在以剩余電量作為重要的指標(biāo)在聚類階段完成選取簇頭和形成簇的過程,提出了基于分布式聚類的數(shù)據(jù)傳輸方法。通過仿真測試,該方法數(shù)據(jù)延遲非常低,網(wǎng)絡(luò)生命周期達平均水平,網(wǎng)絡(luò)整體電池消耗速率均勻,能夠高效地進行數(shù)據(jù)傳輸。