呂淑芳,高宇鵬
(山西農(nóng)業(yè)大學(xué)信息學(xué)院,山西 晉中 030800)
無(wú)線傳感器網(wǎng)絡(luò)是一種分布式的傳感網(wǎng)絡(luò),其主要的末梢能夠感知與檢查外部世界傳感器。其中傳感器采用無(wú)線方式實(shí)現(xiàn)通信,因此網(wǎng)絡(luò)的設(shè)置較為靈活,設(shè)備能夠隨時(shí)進(jìn)行更改,同時(shí)還能夠與互聯(lián)網(wǎng)實(shí)現(xiàn)無(wú)線或者有線的方式連接。傳感器網(wǎng)絡(luò)主要有:數(shù)據(jù)傳輸、處理以及采集三種功能,它和計(jì)算機(jī)技術(shù)以及通信技術(shù)一同組成了信息技術(shù)的三大支柱[1]。它主要是通過(guò)大量靜止或移動(dòng)或靜止傳感器,通過(guò)多條以及自組織方式構(gòu)建無(wú)線網(wǎng)絡(luò),采用協(xié)作的感知、處理、采集以及傳輸網(wǎng)絡(luò),覆蓋地理區(qū)域中全部被感知的對(duì)象信息,且最終將這些數(shù)據(jù)信息發(fā)送給使用者。因?yàn)闊o(wú)線傳感器網(wǎng)絡(luò)存在眾多種類(lèi)的傳感器,能夠探測(cè)包括電磁、地震、噪聲、土壤成分、移動(dòng)物體的大小、方向、速度等。所以可以應(yīng)用在各行各業(yè)中:例如商業(yè)、工業(yè)、家居、醫(yī)療、航空、環(huán)境、軍事等領(lǐng)域。
無(wú)線傳感器網(wǎng)絡(luò)將數(shù)以萬(wàn)計(jì)的傳感器節(jié)點(diǎn)采用自由式完成結(jié)合和組織,從而形成的網(wǎng)絡(luò)模式,構(gòu)建傳感器節(jié)點(diǎn)單元分別是:數(shù)據(jù)處理單元、能量供應(yīng)單元、數(shù)據(jù)傳輸單元以及數(shù)據(jù)采集單元,其中數(shù)據(jù)采集單元主要是用來(lái)采集監(jiān)測(cè)區(qū)域內(nèi)的信息進(jìn)行轉(zhuǎn)換,例如濕度、光強(qiáng)、大氣壓力等等;數(shù)據(jù)傳輸單元是利用無(wú)線通信與交流信息的方式,來(lái)發(fā)送接收采集的數(shù)據(jù);數(shù)據(jù)處理單元主要是處理所以節(jié)點(diǎn)路由協(xié)議與管理任務(wù)以及定位設(shè)備等,能量供應(yīng)單元主要為了縮減傳感器節(jié)點(diǎn)所占據(jù)的面積。在無(wú)線傳感器網(wǎng)絡(luò)內(nèi),節(jié)點(diǎn)主要分為兩種:一種是匯聚節(jié)點(diǎn),另外一種是傳感器節(jié)點(diǎn)[2]。匯聚節(jié)點(diǎn)主要工作是通過(guò)網(wǎng)關(guān)在傳感器節(jié)點(diǎn)內(nèi),把錯(cuò)誤報(bào)告清除掉,同時(shí)將各個(gè)傳感器節(jié)點(diǎn)采集的數(shù)據(jù)整合,判斷發(fā)生的事情。用戶節(jié)點(diǎn)和中心節(jié)點(diǎn)進(jìn)行連接,就能夠借助衛(wèi)星或者是廣域網(wǎng)絡(luò)進(jìn)行直接通信,且處理收集而來(lái)的數(shù)據(jù)。
無(wú)線傳感器網(wǎng)絡(luò)組建方式自由,不受外界條件的限制隨時(shí)隨地可以組建;網(wǎng)絡(luò)拓?fù)錁?gòu)造的不確定性,從網(wǎng)絡(luò)層次方向觀察,拓?fù)浣Y(jié)構(gòu)變化不定;控制方式不集中,雖然無(wú)線傳感器將基站與傳感器節(jié)點(diǎn)控制起來(lái),不過(guò)每個(gè)傳感器間控制方式都是分散的,主機(jī)與路由功能全是利用網(wǎng)絡(luò)終端完成各個(gè)主機(jī)獨(dú)立運(yùn)行,且互為干涉,所以無(wú)線網(wǎng)絡(luò)的強(qiáng)度較高,很難被破壞。利用無(wú)線通信的方式構(gòu)成一個(gè)多跳自組織的網(wǎng)絡(luò),因?yàn)樗饕抢霉?jié)點(diǎn)進(jìn)行構(gòu)造的,包含移動(dòng)電話與電腦等設(shè)備,這些設(shè)備全是利用無(wú)線連接到彼此,接著相互之間利用網(wǎng)絡(luò)進(jìn)行轉(zhuǎn)發(fā)數(shù)據(jù),使數(shù)據(jù)從一個(gè)節(jié)點(diǎn)跳至另外一個(gè)節(jié)點(diǎn),直到目的地。除非全部節(jié)點(diǎn)出現(xiàn)故障,否則數(shù)據(jù)總是可用的,因此這種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)可靠,并且擴(kuò)展性較強(qiáng)[3]。不過(guò)一旦傳感器節(jié)點(diǎn)能量用盡,就會(huì)導(dǎo)致信息發(fā)送不出去,不能及時(shí)完成通信,所以需要對(duì)節(jié)點(diǎn)的剩余能量監(jiān)測(cè),在能量用盡時(shí),及時(shí)更換節(jié)點(diǎn),保證網(wǎng)絡(luò)通暢。為此提出一種基于多跳分簇算法的傳感器節(jié)點(diǎn)剩余能量監(jiān)測(cè)方法,為了的是及時(shí)觀察到節(jié)點(diǎn)剩余的能量,對(duì)其進(jìn)行處理,使通信過(guò)程順暢。
為了減少簇頭出現(xiàn)聚集情況以及均衡網(wǎng)絡(luò)的消耗,需要在簇頭選擇的階段,進(jìn)行充分的考慮所在區(qū)域節(jié)點(diǎn)分布密度,通過(guò)引入密度因子,將簇頭的選擇概率T(n)進(jìn)行加權(quán),而能量因子會(huì)讓能量較高的節(jié)點(diǎn)作為簇頭的概率增加,能量小的減小節(jié)點(diǎn)的概率,且密度因子會(huì)讓密度比較高的區(qū)域內(nèi)節(jié)點(diǎn)成為簇頭概率增加[4]。
當(dāng)每一輪對(duì)簇頭進(jìn)行提取時(shí),此輪就會(huì)按照固定方法生成一個(gè)閾值T(n),在網(wǎng)絡(luò)內(nèi)全部的存活節(jié)點(diǎn)會(huì)同時(shí)生成一個(gè)0至1間的隨機(jī)數(shù),假如該數(shù)比閾值T(n)小時(shí),就會(huì)成為簇頭,反之即為普通節(jié)點(diǎn)。從閾值計(jì)算公式可以看出,每個(gè)節(jié)點(diǎn)在被選出簇頭概率是相等的,能夠在網(wǎng)絡(luò)起始化時(shí)刻可以均衡網(wǎng)絡(luò)內(nèi)每個(gè)節(jié)點(diǎn)的能量消耗,不過(guò)因?yàn)闆](méi)有考慮節(jié)點(diǎn)目前所剩余的能量是否適合做觸頭,經(jīng)過(guò)工作一定時(shí)間之后,在網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)的剩余能量比較少的會(huì)成為簇頭,加速能量損耗[5]。若在擔(dān)當(dāng)簇頭期間它的能量損耗盡,那么會(huì)導(dǎo)致該輪中,此簇頭節(jié)點(diǎn)信息無(wú)法發(fā)送,嚴(yán)重則會(huì)導(dǎo)致網(wǎng)絡(luò)出現(xiàn)不連通,使網(wǎng)絡(luò)數(shù)據(jù)無(wú)法進(jìn)行采集工作。
而在無(wú)線傳感器網(wǎng)絡(luò)內(nèi),需要充分通過(guò)節(jié)點(diǎn)自身有限資源以及信息來(lái)盡量降低節(jié)點(diǎn)能耗,無(wú)線傳感器網(wǎng)絡(luò)的節(jié)點(diǎn)通常都知道本身剩余能量以及鄰居節(jié)點(diǎn)個(gè)數(shù)。其中一個(gè)節(jié)點(diǎn)鄰居個(gè)數(shù)就能夠直接反映出此節(jié)點(diǎn)所在區(qū)域節(jié)點(diǎn)的大致密度。而鄰居節(jié)點(diǎn)越多,那么此區(qū)域節(jié)點(diǎn)的密度就越大,否則密度就越小。
引入能量因子,選取簇頭時(shí),需要對(duì)節(jié)點(diǎn)目前剩余能量進(jìn)行考慮,通過(guò)增加剩余能量的節(jié)點(diǎn)當(dāng)選概率,然后引入能量的調(diào)節(jié)參數(shù),具體公式為
(1)
式中:Esur(n)代表節(jié)點(diǎn)n目前剩余的能量值,Ea代表此輪網(wǎng)絡(luò)全部節(jié)點(diǎn)能量預(yù)期平均值,具體大小公式為
(2)
式中:Et代表網(wǎng)絡(luò)起始時(shí)全部節(jié)點(diǎn)能量的總和,r代表目前輪數(shù),N代表網(wǎng)絡(luò)起始時(shí)刻全部活動(dòng)節(jié)點(diǎn)數(shù)目,rmax代表網(wǎng)絡(luò)預(yù)期能夠工作輪數(shù)。
引入密度因子,在網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)通信時(shí),通常接收節(jié)點(diǎn)所接收到的信息內(nèi),會(huì)具有一個(gè)信號(hào)的強(qiáng)度值,依據(jù)該值能夠計(jì)算出發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)間的距離[6],能夠確定鄰居節(jié)點(diǎn)個(gè)數(shù),既而引入密度的調(diào)節(jié)參數(shù),具體公式為
(3)
式中:Neighbor(n)代表節(jié)點(diǎn)n鄰居節(jié)點(diǎn)個(gè)數(shù),Nr代表目前輪數(shù)全部存活節(jié)點(diǎn)個(gè)數(shù),H代表最佳簇頭數(shù)。
在數(shù)據(jù)的傳輸過(guò)程中,采用多跳方式,那么就具有多跳路經(jīng)選取,通過(guò)改進(jìn)的蟻群算法來(lái)優(yōu)化多跳路徑,具體如下所示:
1)引入全局更新,由于引進(jìn)蟻群算法是對(duì)簇頭節(jié)點(diǎn)和匯聚節(jié)點(diǎn)之間距離進(jìn)行優(yōu)化,所以螞蟻并沒(méi)有爬完全部節(jié)點(diǎn)[7],而為了防止螞蟻不選取未爬過(guò)的路經(jīng)上面信息素降低,通過(guò)引入全局更新的機(jī)制,將最大最小的系統(tǒng)以及螞蟻系統(tǒng)的兩個(gè)特征進(jìn)行結(jié)合,從而完成全局更新,具體信息素的更新公式選取為
τij(t+1)=(1-ρ)τij(t)+ρΔτij(t,t+1)
(4)
通過(guò)引入信息素值上下界,就是τij(t)∈[τmin,τmax]。
2)改變啟發(fā)式因子,將發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)間的距離設(shè)置為dij,在dij (5) 3)能量損耗的最小路經(jīng),蟻群算法主要是求距離的最小值,在本著降低能量消耗,提升無(wú)線傳感器網(wǎng)絡(luò)的使用壽命下,因?yàn)榫嚯x和能耗是不成線性的變化,因此把求路經(jīng)長(zhǎng)度最小值更改成求能量消耗最小值,所以Δτij(t,t+1)同樣需要變動(dòng),具體公式為 (6) 求解路經(jīng)應(yīng)該是從簇頭節(jié)點(diǎn)至基站路經(jīng),就是目標(biāo)節(jié)點(diǎn)子終點(diǎn)路經(jīng)[9]。 簇頭至匯聚節(jié)點(diǎn)的通信路經(jīng)主要有蟻群優(yōu)化,因此最佳簇頭數(shù)和單跳網(wǎng)絡(luò)不一樣,利用dtoBS代表簇頭和匯聚節(jié)點(diǎn)通信多跳路經(jīng),在理想的狀態(tài)下,簇頭間數(shù)據(jù)的傳輸主要是自由空間傳輸數(shù)據(jù)的衰減模型,所以可以得到公式為 (7) (8) 在無(wú)線傳感器網(wǎng)絡(luò)的剩余監(jiān)測(cè)工作過(guò)程中,簇頭始終是處于活動(dòng)的智能體,來(lái)進(jìn)行計(jì)算處理、傳輸通信以及數(shù)據(jù)采集等工作,而絕大部分能量的消耗都用于傳輸通信,在休眠狀態(tài)下的節(jié)點(diǎn)則會(huì)關(guān)閉無(wú)線通信的模塊,并不會(huì)進(jìn)行通信傳輸?shù)膭?dòng)作,而能量的消耗只是在本身所執(zhí)行監(jiān)測(cè)任務(wù)時(shí)消耗的能量,對(duì)于活動(dòng)節(jié)點(diǎn)通信的能量損耗是忽略不計(jì)的,因此本文監(jiān)測(cè)的剩余能量消耗都是指通信傳輸?shù)牟糠帧?/p> 而對(duì)于通信傳輸?shù)南哪芰?,主要是用于?shù)據(jù)接收以及發(fā)送,假設(shè)簇內(nèi)的活動(dòng)節(jié)點(diǎn)Agenti與Agentj處于標(biāo)準(zhǔn)距離d0下,其最小通信能量的消耗是P0,那么Agenti通信能量消耗Pi和兩個(gè)節(jié)點(diǎn)的空間距離dij有關(guān),具體表達(dá)式為 (9) 從網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)智能體轉(zhuǎn)換成本身的狀態(tài),可以通過(guò)監(jiān)測(cè)能耗的角度對(duì)其有效性進(jìn)行分析,計(jì)算能量的消耗,觀察是否需要對(duì)其進(jìn)行監(jiān)測(cè)[12]。如果簇頭節(jié)點(diǎn)Agenti在活動(dòng)的狀態(tài)下功耗是Pactive,而處于休眠的狀態(tài)時(shí)功耗會(huì)降為Psleep,如果它處于tsleep時(shí)刻是由活動(dòng)狀態(tài)轉(zhuǎn)換到休眠的狀態(tài)時(shí),其轉(zhuǎn)換所需要花費(fèi)的時(shí)間為τoff,若在τoff內(nèi)的平均能耗是Eoff=τoff(Pactive+Psleep)/2,接著維持Psleep直到tactive時(shí)再度被激活,那么休眠狀態(tài)所需要的能量公式為 Esleep=τoff(Pactive+Psleep)/2+Psleep(tactive-tsleep-τoff) (10) 從另外一方面如果它從tsleep到tactive的時(shí)間段內(nèi),一直處于維持活動(dòng)的狀態(tài),而不進(jìn)行狀態(tài)的轉(zhuǎn)換,那么Agenti即為此時(shí)間段中能耗,具體公式為 Eactive=Pactive(tactive-tsleep) (11) 如果tactive時(shí)刻Agenti再次被監(jiān)測(cè)的電場(chǎng)強(qiáng)度值超出閾值,則重新激活需要時(shí)間為τon,相同設(shè)置τon時(shí)間中轉(zhuǎn)換能量消耗為Eon=τon(Pactive+Psleep)/2,因此只有在Esaved>Eon時(shí),Agenti經(jīng)過(guò)轉(zhuǎn)換至休眠狀態(tài)時(shí),所進(jìn)行的節(jié)能方式才會(huì)有效。 如果檢測(cè)過(guò)程內(nèi),節(jié)點(diǎn)智能體從休眠到再度被激活之間,會(huì)具有很大的時(shí)間間隔,或者是智能體在轉(zhuǎn)換本身狀態(tài)時(shí)所消耗的能量會(huì)比較小,可以忽略不計(jì)。因此只需要監(jiān)測(cè)正常通信的過(guò)程中,所消耗的能量,完成剩余節(jié)點(diǎn)的能量監(jiān)測(cè)。 為了驗(yàn)證本文方法的有效性,在無(wú)線傳感器的網(wǎng)絡(luò)平臺(tái)上,使用Micaz進(jìn)行分析。先將收集到的數(shù)據(jù)信號(hào)傳輸至電腦上,利用電腦記錄實(shí)時(shí)測(cè)量數(shù)據(jù)且繪制能量消耗曲線。因?yàn)镸icaZ節(jié)點(diǎn)運(yùn)行的是開(kāi)源嵌入式操作系統(tǒng)上點(diǎn)的Blink程序,程序在操作節(jié)點(diǎn)上3個(gè)LED顯示燈是以不同頻率進(jìn)行閃爍的。通常處理器經(jīng)過(guò)定時(shí)從休眠的狀態(tài)下喚醒,且操作LED燈開(kāi)關(guān),在完成處理器的任務(wù)之后,從空閑的狀態(tài)又重新進(jìn)入休眠的狀態(tài)。其整體過(guò)程是處于Ti-nyOS動(dòng)態(tài)能量消耗的管理框架下自動(dòng)運(yùn)轉(zhuǎn)的,以此就能觀察到LED燈與處理器的工作狀態(tài)。 實(shí)驗(yàn)設(shè)置如下:將供電電壓設(shè)置為3.3V,而傳感器部分,對(duì)MTS310CA傳感器板上的每個(gè)傳感器進(jìn)行供電,具體每一個(gè)傳感器的工作狀態(tài)所消耗電流如表1所示。 表1 感應(yīng)器供電狀態(tài)下能量消耗 對(duì)硬件方面考慮,無(wú)線傳感器的節(jié)點(diǎn)消耗部分,主要有:無(wú)線通信模塊、處理器模塊以及傳感器模塊。因?yàn)閭鞲衅鞯慕^大部分能量都是損耗在無(wú)線通信的模塊上,具體如圖1所示。 圖1 無(wú)線傳感器網(wǎng)絡(luò)的能量消耗 通過(guò)圖1能夠看出,傳感器與處理器在工作時(shí)能量所消耗的比例已經(jīng)非常小了,以此即可證明,其中絕大部分能量都是消耗在無(wú)線通信的模塊上。所以在圖1內(nèi)給出了詳細(xì)無(wú)線通信的各工作模式下功耗,但并沒(méi)有對(duì)處理器以及傳感器工作狀態(tài)進(jìn)行討論。 在采用本文的節(jié)點(diǎn)剩余能量監(jiān)測(cè)方法,對(duì)MicaZ節(jié)點(diǎn)和配套的MTS310CA的傳感器板能量消耗進(jìn)行監(jiān)測(cè),具體如圖2所示。 圖2 剩余能量消耗監(jiān)測(cè) 通過(guò)圖2所得到的監(jiān)測(cè)數(shù)據(jù),與歷史所監(jiān)測(cè)到的數(shù)據(jù)進(jìn)行對(duì)比,數(shù)據(jù)幾乎相同。其中,處理器的部分采取的是單片機(jī)活動(dòng)狀態(tài),并沒(méi)有休眠機(jī)制,而無(wú)線部分采用的是無(wú)線監(jiān)聽(tīng),讓無(wú)線模塊一直處于在接收監(jiān)聽(tīng)的狀態(tài)。以此可以看出,各部分未使用休眠策略,無(wú)線傳感器的實(shí)際損耗能量并沒(méi)有像圖1所示一樣。在對(duì)無(wú)線通信采用了能量管理策略下(把無(wú)線傳感器的節(jié)點(diǎn)發(fā)射功率設(shè)置成0、-3、-6、-9dBm),例如:動(dòng)態(tài)功耗的管理TinyOS系統(tǒng),通信與處理器的能耗都獲得了管理優(yōu)化,此時(shí)傳感器的能量消耗會(huì)具有不可忽視比重。 除此之外,通過(guò)改變發(fā)送數(shù)據(jù)包大小和改變通信距離,對(duì)節(jié)點(diǎn)的剩余能量進(jìn)行監(jiān)測(cè),具體可以獲得的監(jiān)測(cè)數(shù)據(jù)結(jié)果如表2和表3所示。 表2 改變發(fā)送的數(shù)據(jù)包大小節(jié)點(diǎn)能量消耗測(cè)試 表3 改變通信距離節(jié)點(diǎn)能量的消耗測(cè)試 由表2和表3可以驗(yàn)證,傳輸通信消耗和兩個(gè)節(jié)點(diǎn)之間的距離成正比關(guān)系,可得出本文檢測(cè)方法能夠敏銳感知節(jié)點(diǎn)能量變化,通過(guò)實(shí)時(shí)監(jiān)測(cè)傳感器的能量損耗,得出自身節(jié)點(diǎn)剩余的能量多少,且監(jiān)測(cè)的數(shù)據(jù)精準(zhǔn),效果良好。 本文提出的基于多跳分簇算法的傳感器節(jié)點(diǎn)剩余能量監(jiān)測(cè)方法,能夠及時(shí)地對(duì)剩余能量進(jìn)行監(jiān)測(cè),且監(jiān)測(cè)的數(shù)據(jù)精確,效果良好,不過(guò)由于網(wǎng)絡(luò)的技術(shù)快速發(fā)展,所需求的工作量也越來(lái)越大,這就導(dǎo)致節(jié)點(diǎn)的能量消耗也越來(lái)越快,所以未來(lái)本文還需要進(jìn)一步研究,爭(zhēng)取能夠更加精確快速地監(jiān)測(cè)剩余能量。2.3 鄰居節(jié)點(diǎn)
2.4 傳感器節(jié)點(diǎn)剩余能量監(jiān)測(cè)
3 實(shí)驗(yàn)證明
3.1 實(shí)驗(yàn)數(shù)據(jù)
3.2 傳感器剩余能量損耗監(jiān)測(cè)
4 結(jié)束語(yǔ)