專利名稱:一種基于能量的無線傳感網(wǎng)絡(luò)簇頭繼承分簇方法
技術(shù)領(lǐng)域:
本發(fā)明屬于無線傳感器網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體是一種能量高效的基于簇頭繼承 機(jī)制的無線傳感器網(wǎng)絡(luò)路由方法,解決資源受限的無線傳感器網(wǎng)絡(luò)高效路由的問題,此方 法適用于分層的傳感器網(wǎng)絡(luò)結(jié)構(gòu)。在無線傳感器網(wǎng)絡(luò)中應(yīng)用此方法能夠減少網(wǎng)絡(luò)的能量損 耗,平衡網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的負(fù)載,防止部分節(jié)點(diǎn)因能量消耗過快而失效,延長網(wǎng)絡(luò)的生存時(shí) 間。
背景技術(shù):
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks)是由部署在監(jiān)測區(qū)域內(nèi)大量的微 型傳感器節(jié)點(diǎn)通過無線通信形成的一個(gè)多跳的自組織網(wǎng)絡(luò)系統(tǒng),其目的是協(xié)作地感知、采 集和處理網(wǎng)絡(luò)覆蓋區(qū)域里被監(jiān)測對象的信息,并發(fā)送給觀察者。無線傳感器網(wǎng)絡(luò)是一種無中心節(jié)點(diǎn)的全分布系統(tǒng)。通過隨機(jī)投放的方式,眾多傳 感器節(jié)點(diǎn)被密集部署于監(jiān)控區(qū)域。這些傳感器節(jié)點(diǎn)集成有傳感器,數(shù)據(jù)處理單元和通信模 塊,他們通過無線信道相連,自組織地構(gòu)成網(wǎng)絡(luò)系統(tǒng)。傳感器節(jié)點(diǎn)之間具有良好的協(xié)作能 力,通過局部的數(shù)據(jù)交換來完成全局任務(wù)。由于傳感器網(wǎng)絡(luò)的節(jié)能要求,多跳,對等通信方 式交織傳統(tǒng)的單跳、主從通信方式更適合于無線傳感器網(wǎng)絡(luò),同時(shí)還可有效避免在長距離 無線通信過程中所遇到的衰減和干擾等各種問題。通過網(wǎng)關(guān),傳感器網(wǎng)絡(luò)還可以連接到現(xiàn) 有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施上(如Internet,移動(dòng)通信網(wǎng)絡(luò)等),從而將采集到的信息傳給遠(yuǎn)程的終 端用戶使用。在無線傳感網(wǎng)絡(luò)的研究中,由于節(jié)點(diǎn)的能量有限,如何更有效的利用節(jié)點(diǎn)能量,均 衡網(wǎng)絡(luò)負(fù)載,以延長網(wǎng)絡(luò)的生存時(shí)間是最重要的問題。對于擁有大量節(jié)點(diǎn)的無線傳感網(wǎng) 絡(luò),分層的拓?fù)浣Y(jié)構(gòu)在網(wǎng)絡(luò)管理和可擴(kuò)展性上具有較多的優(yōu)勢。在這種網(wǎng)絡(luò)結(jié)構(gòu)中,簇頭 (Cluster Head, CH)承擔(dān)簇內(nèi)的數(shù)據(jù)收集和處理工作,收集的數(shù)據(jù)通過簇頭間的路由發(fā)送 至Sink節(jié)點(diǎn)。分簇算法也是目前的主流路由算法,在眾多的分簇算法中,LEACHdowenergy adaptive clustering hierarchy)算法是比較成熟且常用的分簇路由算法,它的成簇方法 貫穿于其后提出的很多層次路由協(xié)議中,如PEGASIS,HEED等。LEACH是一種基于簇的低 能耗自適應(yīng)的路由協(xié)議,其操作被分為若干的輪(round),每輪包括簇的建立階段和穩(wěn)定階 段,如圖1所示。在簇的建立階段,節(jié)點(diǎn)被選擇擔(dān)任簇頭的概率將由一個(gè)閾值T(i)確定,網(wǎng) 絡(luò)中每個(gè)節(jié)點(diǎn)i將產(chǎn)生一個(gè)(Tl之間的隨機(jī)數(shù),并將其與T(i)進(jìn)行比較,產(chǎn)生的隨機(jī)數(shù)小 于T(i)的節(jié)點(diǎn)將被選擇擔(dān)任簇頭,其它節(jié)點(diǎn)則作為非簇頭節(jié)點(diǎn),選擇距離自己最近的簇頭 加入。T(i)表示如下 其中k是每輪中的簇頭期望個(gè)數(shù),N是網(wǎng)絡(luò)中的節(jié)點(diǎn)總數(shù),r表示當(dāng)前的輪次
0 ≤r < 1/p,G是前r輪數(shù)據(jù)傳輸過程中均未擔(dān)任過簇頭的節(jié)點(diǎn)的集合;在數(shù)據(jù)通信階段,
簇內(nèi)節(jié)點(diǎn)把數(shù)據(jù)發(fā)送給簇頭,簇頭進(jìn)行數(shù)據(jù)融合并將結(jié)果發(fā)送給Sink節(jié)點(diǎn)。LEACH算法能夠保證各節(jié)點(diǎn)等概率地?fù)?dān)任簇頭,使得網(wǎng)絡(luò)中的節(jié)點(diǎn)相對均衡地消耗能量。但LEACH算法 也存在許多局限,如需要頻繁定期地對簇結(jié)構(gòu)進(jìn)行重構(gòu),采用完全隨機(jī)的方式選擇簇頭,未 考慮節(jié)點(diǎn)剩余能量等。針對LEACH算法存在的局限,國內(nèi)外學(xué)者提出了許多改進(jìn)的算法, PEGASIS (Power-Efficient Gathering in Sensor Information System)算法提出 了族 內(nèi)多跳的概念,通過在簇內(nèi)建立一條遍歷所有簇成員節(jié)點(diǎn)的鏈路,每個(gè)節(jié)點(diǎn)只與距離自己 最近的節(jié)點(diǎn)通信,并且在每一跳均進(jìn)行數(shù)據(jù)融合,進(jìn)一步降低了網(wǎng)絡(luò)能耗。HEED(Hybrid Energy Efficient Distributed)算法針對LEACH簇頭分布不均勻這一問題進(jìn)行了改進(jìn),在 簇頭選擇中考慮了節(jié)點(diǎn)的剩余能量,并以主從關(guān)系引入了多個(gè)約束條件作用于簇頭的選擇 過程,能產(chǎn)生分布更加均勻的簇頭。2009年,筆者針對LEACH算法中簇頭選取機(jī)制的不足進(jìn) 行了改進(jìn),提出了基于軟閾值的簇頭選舉方法(STCS,SoftThreshold based Cluster-head Selection Method)。該算法不同于LEACH所采用的硬性閾值策略,而使用一種動(dòng)態(tài)調(diào)整閾 值的方式,根據(jù)節(jié)點(diǎn)在上一輪擔(dān)任的角色以及簇內(nèi)節(jié)點(diǎn)的數(shù)目進(jìn)行調(diào)整,而不是在每次擔(dān) 任過簇頭之后簡單地將閾值設(shè)為O。軟閾值的設(shè)置如公式(2)所示同樣r表示當(dāng)前的輪次(0 ≤r < 1/p,ρ是預(yù)先設(shè)定的節(jié)點(diǎn)被選中擔(dān)任簇頭的初始 概率),當(dāng)r= 0時(shí),T(i)|r=p;當(dāng) r>0 時(shí), Grt表示在第r-1輪中被選擇擔(dān)任簇頭的節(jié)點(diǎn)集合,C(i)表示節(jié)點(diǎn)i在第r_l輪 中所屬的簇,NUM(C(i))表示該簇C(i)的簇成員數(shù)目。ε作為軟閾值參數(shù),用于對軟閾值 進(jìn)行調(diào)整,它的取值將影響節(jié)點(diǎn)在每一輪中成為簇頭的概率。前面提到的算法大都是基于輪次(round)進(jìn)行的,并且主要是從LEACH算法的閾 值設(shè)置上進(jìn)行改進(jìn)。本發(fā)明不同于前面提到的諸多改進(jìn)算法,它將從一種全新的角度對 LEACH算法進(jìn)行改進(jìn),摒棄了輪次的概念,避免了頻繁定期地對簇進(jìn)行重構(gòu),更有效地節(jié)省 網(wǎng)絡(luò)能耗,延長網(wǎng)絡(luò)的生存時(shí)間。
發(fā)明內(nèi)容
本發(fā)明主要針對LEACH算法中需要頻繁定期地進(jìn)行簇的重構(gòu)操作所帶來的能耗, 以及LEACH中并未考慮節(jié)點(diǎn)的剩余能量,不利于節(jié)點(diǎn)能耗均衡的問題進(jìn)行改進(jìn),提出了一種 基于能量的簇頭繼承分簇方法(ECI,Energy based Cluster-head InheritanceMethod)。該方法摒棄了傳統(tǒng)無線傳感網(wǎng)絡(luò)分簇協(xié)議中的輪的概念,分簇的過程不必定期的進(jìn)行,并 且在簇頭選擇的過程中考慮節(jié)點(diǎn)的剩余能量信息。另外,簇頭選舉將采用繼承的方式,由原 簇頭節(jié)點(diǎn)在簇內(nèi)挑選剩余能量最多的節(jié)點(diǎn)作為繼任簇頭,從而在簇內(nèi)自組織地完成簇頭更 換的過程。通過減少簇的頻繁重構(gòu),并且在簇頭選擇過程中考慮節(jié)點(diǎn)的剩余能量因素,能夠 更好的均衡網(wǎng)絡(luò)能耗,延長網(wǎng)絡(luò)生存時(shí)間。本發(fā)明的操作過程主要分為三個(gè)步驟初始化階 段,穩(wěn)定階段和簇頭繼承階段,其操作過程示意圖如圖2所示。1.初始化階段 初始化階段將完成整個(gè)算法過程的初始化過程,為后面的算法正常執(zhí)行建立基 礎(chǔ)。網(wǎng)絡(luò)中的所有傳感器節(jié)點(diǎn)均同構(gòu),并且具有相同的初始能量,因此初始化可以采用與 LEACH相同的構(gòu)建簇方式,基于隨機(jī)概率選擇初始時(shí)的簇頭節(jié)點(diǎn)。網(wǎng)絡(luò)中的節(jié)點(diǎn)在初始化階段以相同的初始概率參與簇頭選舉,該初始概率記為 Pinit,它是網(wǎng)絡(luò)中簇頭節(jié)點(diǎn)占網(wǎng)絡(luò)節(jié)點(diǎn)總數(shù)比例最優(yōu)值。同樣地,每個(gè)節(jié)點(diǎn)產(chǎn)生一個(gè)介于0 到1之間的隨機(jī)數(shù),然后將其和Pinit比較,如果隨機(jī)值小于Pinit,節(jié)點(diǎn)被選中擔(dān)任簇頭節(jié)點(diǎn)。 作為簇頭節(jié)點(diǎn),需要首先為自己設(shè)置一個(gè)能量閾值E_thresh(比如為節(jié)點(diǎn)當(dāng)前剩余能量的 一半),以決定何時(shí)更換簇頭,設(shè)置好能量閾值后,節(jié)點(diǎn)廣播ADV_CH消息,通知其他節(jié)點(diǎn)自 己擔(dān)任簇頭,ADV_CH消息中包含簇頭的ID,之后簇頭節(jié)點(diǎn)等待來自成員節(jié)點(diǎn)的請求加入消 息;如果節(jié)點(diǎn)產(chǎn)生的隨機(jī)數(shù)大于或等于Pinit,則作為簇成員節(jié)點(diǎn),等待來自所有其他簇頭節(jié) 點(diǎn)所廣播的ADV_CH消息,然后根據(jù)接收到的ADV_CH報(bào)文的信號(hào)強(qiáng)度選擇距離自己最近的 簇頭節(jié)點(diǎn),并向該節(jié)點(diǎn)發(fā)送J0IN_REQ消息請求加入該簇,簇頭節(jié)點(diǎn)收到簇內(nèi)節(jié)點(diǎn)的J0IN_ REQ消息后,為簇內(nèi)各個(gè)節(jié)點(diǎn)分配TDMA時(shí)隙,并將該信息通過ADV_SCH報(bào)文廣播給簇內(nèi)的節(jié) 點(diǎn),當(dāng)簇內(nèi)的節(jié)點(diǎn)收到該報(bào)文后,算法的初始化階段結(jié)束。各個(gè)簇內(nèi)節(jié)點(diǎn)將在自己分配到的 時(shí)隙發(fā)送DATA報(bào)文給簇頭節(jié)點(diǎn),其他時(shí)間即進(jìn)入休眠狀態(tài)以節(jié)省能量。2.穩(wěn)定傳輸階段一旦簇的結(jié)構(gòu)在初始化階段構(gòu)建好之后,ECI操作步驟進(jìn)入穩(wěn)定傳輸階段,在這個(gè) 階段中,各個(gè)簇內(nèi)自組織地進(jìn)行數(shù)據(jù)傳輸,簇成員節(jié)點(diǎn)將自己在環(huán)境中監(jiān)測到的信息包含 在DATA報(bào)文中,同時(shí)附帶自身當(dāng)前的剩余能量信息curEnergy,然后,在穩(wěn)定階段的每一幀 中TDMA調(diào)度表所分配的時(shí)隙內(nèi)將DATA報(bào)文發(fā)送給簇頭節(jié)點(diǎn)。當(dāng)簇內(nèi)節(jié)點(diǎn)將DATA報(bào)文發(fā) 送給簇頭節(jié)點(diǎn)之后,并不是像以往算法那樣簡單地進(jìn)入休眠狀態(tài),然后等待下一次的傳輸, 而是繼續(xù)等待一個(gè)時(shí)隙的時(shí)間,監(jiān)聽是否有來自簇頭節(jié)點(diǎn)的CHG_CH消息,如果收到該消息 的話,節(jié)點(diǎn)將進(jìn)入簇頭繼承階段,否則節(jié)點(diǎn)進(jìn)入休眠狀態(tài),等待下一幀的數(shù)據(jù)發(fā)送;作為簇 頭節(jié)點(diǎn),當(dāng)收到來自各個(gè)簇內(nèi)的DATA報(bào)文之后,提取各個(gè)簇內(nèi)節(jié)點(diǎn)的剩余能量信息,并將 其存儲(chǔ)于簇內(nèi)節(jié)點(diǎn)剩余能量列表CMEnergyList中,當(dāng)收集完一幀中所有簇內(nèi)節(jié)點(diǎn)的監(jiān)測 數(shù)據(jù)后,簇頭將收集到的數(shù)據(jù)與自身的數(shù)據(jù)進(jìn)行一些相應(yīng)的融合操作,然后發(fā)送給Sink節(jié) 點(diǎn),此時(shí)即完成了穩(wěn)定階段一個(gè)幀中的數(shù)據(jù)傳輸。在每個(gè)幀的末尾,簇頭將會(huì)判斷自己當(dāng)前 所剩余的能量值是否仍然大于剛開始擔(dān)任簇頭時(shí)所設(shè)置的能量閾值E_Thresh,若是,簇頭 節(jié)點(diǎn)將繼續(xù)下一幀的數(shù)據(jù)傳輸,等待接收來自簇內(nèi)的DATA報(bào)文,否則簇頭節(jié)點(diǎn)進(jìn)入簇頭繼 承階段。3.簇頭繼承階段在簇頭繼承階段,原簇頭節(jié)點(diǎn)將會(huì)把自己擔(dān)任的簇頭位置移交給同一個(gè)簇內(nèi)的其他節(jié)點(diǎn),也即簇頭繼承的過程。新簇頭節(jié)點(diǎn)的選擇將依據(jù)簇內(nèi)節(jié)點(diǎn)的剩余能量信息來確定。 簇頭節(jié)點(diǎn)在進(jìn)入簇頭繼承階段后,將根據(jù)之前存儲(chǔ)的簇內(nèi)剩余能量列表CMEnergyList選 擇剩余能量最多的簇內(nèi)節(jié)點(diǎn)作為繼任的簇頭節(jié)點(diǎn),然后將繼任節(jié)點(diǎn)的ID包含在CHG_CH報(bào) 文中,然后在下一幀中各個(gè)簇內(nèi)節(jié)點(diǎn)發(fā)送DATA數(shù)據(jù)的下一個(gè)時(shí)隙,將CHG_CH報(bào)文分別發(fā)送 給簇內(nèi)的節(jié)點(diǎn)。簇內(nèi)節(jié)點(diǎn)收到CHG_CH報(bào)文后,首先比較自身的ID是否與CHG_CH報(bào)文中包 含的ID相同,若是,則節(jié)點(diǎn)得知自己即被選中作為繼任簇頭節(jié)點(diǎn),將擔(dān)任新的簇內(nèi)傳輸?shù)?簇頭,新簇頭同樣需要設(shè)置一個(gè)能量閾值E_thresh,然后等待新的簇內(nèi)成員發(fā)送的請求加 入報(bào)文;若簇內(nèi)節(jié)點(diǎn)比較自身的ID與CHG_CH報(bào)文包含的ID不一樣時(shí),知道自己并沒有被 選中擔(dān)任簇頭,然后在本地將新的簇頭節(jié)點(diǎn)ID保存為CHG_CH報(bào)文所包含的ID值,并向新 簇頭節(jié)點(diǎn)發(fā)送JOIN_REQ消息請求加入,實(shí)際也相當(dāng)于向新的簇頭節(jié)點(diǎn)注冊的操作。隨后的 過程和前面初始階段描述的相同,當(dāng)新的簇內(nèi)節(jié)點(diǎn)分配好TDMA調(diào)度表后,ECI方法再次進(jìn) 入穩(wěn)定階段。
圖ILEACH算法的簡要流程圖;圖2ECI方法的操作過程示意圖; 圖3ECI方法與LEACH和STCS算法節(jié)點(diǎn)存活數(shù)隨時(shí)間的變化曲線圖,圖3a為場景 1,圖3b為場景2。
具體實(shí)施例方式具體實(shí)施方案可分為初始化階段,穩(wěn)定階段,簇頭繼承階段三個(gè)部分。初始化階段首先將節(jié)點(diǎn)以一定的密度部署在監(jiān)測區(qū)域,各傳感器節(jié)點(diǎn)燒錄對應(yīng) 的協(xié)議程序。i表示傳感器節(jié)點(diǎn)的編號(hào),各節(jié)點(diǎn)設(shè)置簇頭選舉的初始概率Pinit均設(shè)置為 0.05。每個(gè)節(jié)點(diǎn)產(chǎn)生一個(gè)0到1之間的隨機(jī)數(shù)。將該數(shù)與初始概率Pinit進(jìn)行比較,若隨機(jī) 數(shù)小于Pinit,則節(jié)點(diǎn)設(shè)置自身為當(dāng)前輪的簇頭節(jié)點(diǎn),同時(shí)設(shè)置一個(gè)能量閾值E_thresh為自 身當(dāng)前剩余能量的1/2,并廣播ADV_CH報(bào)文通告自身的簇頭信息。否則,若隨機(jī)數(shù)大于或等 于Pinit,則節(jié)點(diǎn)設(shè)置自身為簇成員節(jié)點(diǎn),等待接受來自簇頭的ADV_CH消息。當(dāng)簇成員節(jié)點(diǎn) 接收到來自周圍各簇頭發(fā)送的ADV_CH消息之后,將比較接收到各簇頭報(bào)文的信號(hào)強(qiáng)度,然 后選擇信號(hào)最強(qiáng)的節(jié)點(diǎn)作為自己將要加入簇的簇頭節(jié)點(diǎn),并向其發(fā)送J0IN_REQ消息。簇頭 節(jié)點(diǎn)接收到簇成員節(jié)點(diǎn)發(fā)送的J0IN_REQ消息后,將其設(shè)置為本簇的簇成員節(jié)點(diǎn),并記錄。 如此,距離較近的節(jié)點(diǎn)將組成簇,簇頭節(jié)點(diǎn)為簇內(nèi)成員分配TDMA調(diào)度表并發(fā)送至各成員節(jié) 點(diǎn),網(wǎng)絡(luò)中簇的初始劃分過程結(jié)束。穩(wěn)定階段穩(wěn)定階段由若干的幀組成,每一幀完成一次簇成員節(jié)點(diǎn)的數(shù)據(jù)的收集。 在每個(gè)幀中,簇成員節(jié)點(diǎn)根據(jù)簇頭節(jié)點(diǎn)分配的TDMA時(shí)隙,在指定的時(shí)間進(jìn)行數(shù)據(jù)傳輸。數(shù) 據(jù)報(bào)文DATA將包括節(jié)點(diǎn)自身監(jiān)測到的數(shù)據(jù)信息以及節(jié)點(diǎn)自身當(dāng)前的剩余能量curEnergy, 被傳給簇頭節(jié)點(diǎn),然后簇內(nèi)節(jié)點(diǎn)將等待一個(gè)時(shí)隙,監(jiān)測是否有來自簇頭節(jié)點(diǎn)的CHG_CH報(bào) 文,若有,節(jié)點(diǎn)進(jìn)入簇頭繼承階段,否則節(jié)點(diǎn)進(jìn)入休眠狀態(tài),等待下一幀中的TDMA時(shí)隙進(jìn)行 數(shù)據(jù)采集傳輸。簇頭節(jié)點(diǎn)收到來自所有簇成員的數(shù)據(jù)之后,提取DATA報(bào)文中的數(shù)據(jù)信息以及發(fā)送節(jié)點(diǎn)的剩余能量信息,將節(jié)點(diǎn)剩余能量存儲(chǔ)于簇內(nèi)節(jié)點(diǎn)剩余能量列表CMEnergyList 中,當(dāng)收集完一幀中所有簇內(nèi)節(jié)點(diǎn)的數(shù)據(jù)后,簇頭節(jié)點(diǎn)將對所有簇內(nèi)節(jié)點(diǎn)的數(shù)據(jù)以及自身 監(jiān)測的數(shù)據(jù)進(jìn)行一定的融合操作,然后將數(shù)據(jù)傳送至Sink節(jié)點(diǎn)。這時(shí)即完成了一幀的數(shù)據(jù) 傳輸,簇頭節(jié)點(diǎn)將檢查自己當(dāng)前的剩余能量是否低于初始擔(dān)任簇頭時(shí)所設(shè)置的能量閾值E_ thresh,若是,將觸發(fā)簇頭繼承操作,節(jié)點(diǎn)進(jìn)入簇頭繼承階段。否則繼續(xù)等待下一幀的數(shù)據(jù)傳輸。簇頭繼承階段簇頭繼承階段將完成簇頭的更換過程,作為簇頭節(jié)點(diǎn),當(dāng)判斷自身 的剩余能量低于初始擔(dān)任簇頭時(shí)所設(shè)置的能量閾值時(shí),它將從前面存儲(chǔ)的CMEnergyList 列表中選擇剩余能量最多的節(jié)點(diǎn)擔(dān)任繼任簇頭,然后將繼任簇頭的ID保存在CHG_CH報(bào)文 中,在下一幀時(shí)分別給簇內(nèi)節(jié)點(diǎn)發(fā)送更換簇頭的CHG_CH消息。簇成員節(jié)點(diǎn)在發(fā)送完DATA之 后,等待一個(gè)時(shí)隙,收到來自簇頭節(jié)點(diǎn)發(fā)送的CHG_CH報(bào)文后,首先判斷報(bào)文中包含的ID是 否與自己的ID相同,若是,簇內(nèi)節(jié)點(diǎn)得知自己被選中擔(dān)任繼任簇頭,然后設(shè)置自己為簇頭 節(jié)點(diǎn),同時(shí)將能量閾值E_thresh設(shè)置為當(dāng)前剩余能量的1/2,之后等待其它節(jié)點(diǎn)發(fā)送J0IN_ REQ消息向新簇頭注冊。如果簇內(nèi)節(jié)點(diǎn)發(fā)現(xiàn)自己的ID與CHG_CH報(bào)文包含的ID不同時(shí),則 保存新簇頭節(jié)點(diǎn)的ID,并向新的簇頭節(jié)點(diǎn)發(fā)送J0IN_REQ消息進(jìn)行注冊,新簇頭也即繼任簇 頭收集完來自簇頭節(jié)點(diǎn)的J0IN_REQ消息后,分別為簇內(nèi)節(jié)點(diǎn)分配新的TDMA調(diào)度表并廣播 通知簇內(nèi)節(jié)點(diǎn)。這樣即完成簇頭繼承操作過程。示范性實(shí)例分析網(wǎng)絡(luò)生存時(shí)間(life-time)是衡量無線傳感器網(wǎng)絡(luò)路由協(xié)議性能的核心指標(biāo)。由 于傳感器節(jié)點(diǎn)能量有限,如何最大限度的利用傳感器能量,盡可能地延長網(wǎng)絡(luò)使用壽命是 諸多協(xié)議首要考慮的問題,基于能量的簇頭繼承分簇方法主要針對以LEACH為代表的傳統(tǒng) 分簇協(xié)議通常需要頻繁定期地進(jìn)行分簇所帶來的能量過快損耗的問題,采用能量閾值觸發(fā) 簇頭更換的方式,能夠更有效的均衡網(wǎng)絡(luò)的能耗,延長網(wǎng)絡(luò)的生存時(shí)間,為了驗(yàn)證ECI方法 的有效性,從傳感器節(jié)點(diǎn)的平均能量消耗以及存活節(jié)點(diǎn)數(shù)對所提出的方法進(jìn)行仿真,并與 筆者之前提出的STCS算法以及經(jīng)典的LEACH算法進(jìn)行比較分析。使用的仿真工具是被業(yè) 界公認(rèn)的NS2仿真工具。為了測試網(wǎng)絡(luò)規(guī)模對路由協(xié)議的性能影響,設(shè)置了兩種節(jié)點(diǎn)部署場景場景1 將100個(gè)節(jié)點(diǎn)隨機(jī)分布在100*100m2的區(qū)域內(nèi),Sink節(jié)點(diǎn)部署在(50,175) 處的位置;場景2 將400個(gè)節(jié)點(diǎn)隨機(jī)分布在400*400m2的區(qū)域內(nèi),Sink節(jié)點(diǎn)部署在(200, 500)處的位置;每個(gè)傳感器節(jié)點(diǎn)的初始能量設(shè)為2J?;谀芰康拇仡^繼承分簇方法ECI與基于軟 閾值的簇頭選舉方法STCS以及LEACH的網(wǎng)絡(luò)生存時(shí)間與節(jié)點(diǎn)存活數(shù)比較曲線圖如圖3的 (a)、(b)所示。圖3 (a)所示為在場景1下分別仿真LEACH,STCS和ECI方法。從圖中我們可以清 晰地看出,ECI在很大程度上提高了網(wǎng)絡(luò)生存時(shí)間不僅在第一個(gè)節(jié)點(diǎn)失效時(shí)間上,而且總 的網(wǎng)絡(luò)生存時(shí)間都遠(yuǎn)超過LEACH和STCS。STCS算法由于允許節(jié)點(diǎn)多次參與簇頭選舉,雖然 讓每一輪簇頭選舉有了更多的選擇,不至于讓網(wǎng)絡(luò)中可以選擇擔(dān)任簇頭的范圍越來越小, 但是允許節(jié)點(diǎn)不止一次的參與簇頭選舉,導(dǎo)致一些節(jié)點(diǎn)可能會(huì)在算法初期由于多次擔(dān)任簇頭而過快耗盡了節(jié)點(diǎn)的能量,因此STCS的第一個(gè)節(jié)點(diǎn)失效時(shí)間總是早于LEACH算法。而 ECI方法采用基于能量的簇頭繼承機(jī)制,有效地均衡了網(wǎng)絡(luò)中的節(jié)點(diǎn)能耗,延長了網(wǎng)絡(luò)的生 存周期,并且不存在節(jié)點(diǎn)過早失效的問題。圖3(a)很好地反映了 ECI方法的性能。另外,為了觀察ECI方法在網(wǎng)絡(luò)規(guī)模增大的情況下的性能,我們在場景2下進(jìn)行仿 真。在監(jiān)測區(qū)域和網(wǎng)絡(luò)中的節(jié)點(diǎn)數(shù)目均擴(kuò)大為原來四倍的較大規(guī)模網(wǎng)絡(luò)場景中,我們同樣 分別對ECI,STCS和LEACH三種算法進(jìn)行仿真,并比較各自的網(wǎng)絡(luò)存活節(jié)點(diǎn)隨著時(shí)間軸的變 化曲線,如圖3(b)所示。從圖3(b)可以看出,在較大規(guī)模的網(wǎng)絡(luò)場景下,算法的性能與場景1中的性能有 些許差異,在ECI方法中,第一個(gè)節(jié)點(diǎn)失效的時(shí)間早于其他兩種算法,但整個(gè)變化曲線較為 平緩,并且在總體上的網(wǎng)絡(luò)生存時(shí)間上仍然超過了 STCS和LEACH兩種算法,因此從總體上 來說,ECI在網(wǎng)絡(luò)規(guī)模擴(kuò)大四倍的情況下性能仍然是最優(yōu)的,網(wǎng)絡(luò)生存時(shí)間仍然得到了擴(kuò)展。
綜上所述,基于能量的簇頭繼承分簇方法在平均網(wǎng)絡(luò)能耗,延長網(wǎng)絡(luò)生存時(shí)間等 方面相較LEACH和STCS而言都表現(xiàn)出了良好的性能,隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,本方法仍然能 夠表現(xiàn)出較好的性能,顯示了良好的可擴(kuò)展性。符號(hào)說明WSN:無線傳感器網(wǎng)絡(luò)Sink:匯聚節(jié)點(diǎn),基站ECI 基于能量的簇頭繼承分簇方法STCS 基于軟閾值的簇頭選舉算法LEACH 低開銷自適應(yīng)分簇路由算法TDMA 時(shí)分多址Pinit 節(jié)點(diǎn)被選中擔(dān)任簇頭的初始概率E_thresh 節(jié)點(diǎn)能量閾值,決定何時(shí)更換簇頭CMEnergyList 簇內(nèi)節(jié)點(diǎn)剩余能量列表,保存簇內(nèi)各節(jié)點(diǎn)的剩余能量curEnergy 節(jié)點(diǎn)當(dāng)前剩余能量報(bào)文類型ADV_CH 廣播通知其它節(jié)點(diǎn)自己擔(dān)任簇頭的報(bào)文J0IN_REQ 請求加入簇的報(bào)文ADV_SCH 分配TDMA調(diào)度表的廣播報(bào)文DATA 傳感器監(jiān)測數(shù)據(jù)的報(bào)文CHG_CH 通知繼任簇頭的報(bào)文
權(quán)利要求
一種應(yīng)用于分簇路由協(xié)議的基于能量的簇頭繼承方法,具體步驟主要包括初始化階段,穩(wěn)定階段和簇頭繼承階段;初始化階段的操作步驟如下步驟1.1設(shè)Pinit為初始化階段各節(jié)點(diǎn)被選擇擔(dān)任簇頭的概率,各個(gè)節(jié)點(diǎn)分別設(shè)置Pinit=0.05,初始化階段將完成網(wǎng)絡(luò)分簇和首次簇頭選舉的過程;步驟1.2各節(jié)點(diǎn)在初始化階段將分別產(chǎn)生一個(gè)0~1之間的隨機(jī)數(shù),將該隨機(jī)數(shù)與Pinit進(jìn)行比較,若隨機(jī)數(shù)小于閾值,則節(jié)點(diǎn)設(shè)置自身為簇頭節(jié)點(diǎn),作為簇頭節(jié)點(diǎn),首先需要為自己設(shè)置一個(gè)能量閾值E_thresh,以決定何時(shí)更換簇頭;設(shè)置好能量閾值后,節(jié)點(diǎn)廣播ADV_CH消息,通知其他節(jié)點(diǎn)自己擔(dān)任簇頭,ADV_CH消息中包含簇頭的ID,然后簇頭節(jié)點(diǎn)等待來自簇成員節(jié)點(diǎn)的請求加入消息;若節(jié)點(diǎn)產(chǎn)生的隨機(jī)數(shù)大于或等于Pinit,節(jié)點(diǎn)設(shè)置自身為簇成員節(jié)點(diǎn),等待來自所有簇頭節(jié)點(diǎn)所廣播的ADV_CH消息;步驟1.3當(dāng)簇成員節(jié)點(diǎn)接收到來自周圍各簇頭發(fā)送的ADV_CH消息之后,將根據(jù)接收到的ADV_CH報(bào)文的信號(hào)強(qiáng)度選擇距離自己最近的簇頭節(jié)點(diǎn),并向該節(jié)點(diǎn)發(fā)送JOIN_REQ消息請求加入該簇;步驟1.4簇頭節(jié)點(diǎn)收到簇成員節(jié)點(diǎn)的JOIN_REQ消息后,為簇成員節(jié)點(diǎn)分配TDMA時(shí)隙,并將該信息通過ADV_SCH報(bào)文廣播給簇成員節(jié)點(diǎn),當(dāng)簇成員節(jié)點(diǎn)收到該報(bào)文后,網(wǎng)絡(luò)的分簇及首次簇頭選舉完成,初始化階段結(jié)束;穩(wěn)定階段的操作步驟如下步驟2.1簇成員節(jié)點(diǎn)根據(jù)簇頭節(jié)點(diǎn)分配的TDMA時(shí)隙,在每一幀指定的時(shí)隙內(nèi)向簇頭節(jié)點(diǎn)發(fā)送DATA報(bào)文,報(bào)文中捎帶簇成員節(jié)點(diǎn)自身的當(dāng)前剩余能量,記為curEnergy;步驟2.2簇成員節(jié)點(diǎn)每次發(fā)送完DATA報(bào)文后,將繼續(xù)等待一個(gè)時(shí)隙的時(shí)間,監(jiān)聽是否有來自簇頭節(jié)點(diǎn)的CHG_CH消息,若收到的話,節(jié)點(diǎn)進(jìn)入簇頭繼承階段,否則,節(jié)點(diǎn)進(jìn)入休眠狀態(tài),等待下一幀的數(shù)據(jù)傳輸;步驟2.3簇頭節(jié)點(diǎn)收到來自簇成員節(jié)點(diǎn)的DATA報(bào)文后,將提取各個(gè)簇成員節(jié)點(diǎn)的剩余能量信息,并記錄在一個(gè)簇內(nèi)節(jié)點(diǎn)剩余能量列表CMEnergyList中,同時(shí)將收集到的簇成員節(jié)點(diǎn)采集的數(shù)據(jù)與自身的數(shù)據(jù)進(jìn)行相應(yīng)的融合操作,然后發(fā)送給基站(Sink節(jié)點(diǎn));步驟2.4簇頭節(jié)點(diǎn)在將數(shù)據(jù)發(fā)送給Sink節(jié)點(diǎn)之后,判斷自身當(dāng)前所剩余的能量值是否仍然大于初始擔(dān)任簇頭時(shí)所設(shè)置的能量閾值E_thresh;若是,簇頭節(jié)點(diǎn)將繼續(xù)下一幀的數(shù)據(jù)傳輸,等待接收來自簇成員節(jié)點(diǎn)的DATA報(bào)文,否則簇頭節(jié)點(diǎn)進(jìn)入簇頭繼承階段;簇頭繼承階段的操作步驟如下步驟3.1原簇頭節(jié)點(diǎn)進(jìn)入簇頭繼承階段,將根據(jù)CMEnergyList列表選擇簇內(nèi)成員中剩余能量最多的節(jié)點(diǎn)擔(dān)任繼承簇頭,將繼承節(jié)點(diǎn)的ID包含在CHG_CH報(bào)文中,在下一幀中分別發(fā)送給各個(gè)成員節(jié)點(diǎn);步驟3.2簇成員節(jié)點(diǎn)在等待的時(shí)隙中收到來自簇頭的CHG_CH報(bào)文,進(jìn)入簇頭繼承階段,首先節(jié)點(diǎn)判斷CHG_CH報(bào)文中包含的節(jié)點(diǎn)ID是否與自身的ID相同,如果是,節(jié)點(diǎn)得知自己被選中擔(dān)任繼任簇頭,將自身設(shè)置為簇頭節(jié)點(diǎn),同時(shí)設(shè)置能量閾值E_thresh,然后等待其他成員節(jié)點(diǎn)的請求加入報(bào)文;步驟3.3如果節(jié)點(diǎn)判斷CHG_CH報(bào)文包含的ID與自身ID不同,則將該ID保存為新的簇頭節(jié)點(diǎn)ID,并向新的簇頭節(jié)點(diǎn)發(fā)送JOIN_RFQ報(bào)文請求加入;繼任簇頭收到簇成員節(jié)點(diǎn)發(fā)送過來的JOIN_REQ報(bào)文后,為簇成員節(jié)點(diǎn)分配TDMA調(diào)度表,并通過ADV_SCH報(bào)文廣播給簇成員節(jié)點(diǎn);當(dāng)簇成員節(jié)點(diǎn)收到該報(bào)文后,簇頭繼承操作結(jié)束,轉(zhuǎn)到步驟2.1。
全文摘要
本發(fā)明公開一種能量高效的基于簇頭繼承機(jī)制的無線傳感器網(wǎng)絡(luò)路由方法,適用于分層的傳感器網(wǎng)絡(luò)結(jié)構(gòu)。本路由方法由初始化,穩(wěn)定傳輸和簇頭繼承三個(gè)階段組成。初始化階段完成整個(gè)網(wǎng)絡(luò)的初始化分簇過程;穩(wěn)定傳輸階段,各個(gè)簇分別對簇內(nèi)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行收集并轉(zhuǎn)發(fā)給基站;當(dāng)簇頭節(jié)點(diǎn)的剩余能量低于節(jié)點(diǎn)在首次擔(dān)當(dāng)簇頭時(shí)所設(shè)置的能量閾值時(shí),即進(jìn)入簇頭繼承階段,本階段將進(jìn)行簇頭繼承操作。本路由方法主要針對傳統(tǒng)分簇算法需要定期地根據(jù)一個(gè)隨機(jī)概率頻繁更換簇頭所帶來的問題進(jìn)行改進(jìn),通過能量閾值參數(shù)的設(shè)置,使得網(wǎng)絡(luò)中節(jié)點(diǎn)的能耗更加均衡,并且簇頭更加自主動(dòng)態(tài)地進(jìn)行更換,從而更有效地延長網(wǎng)絡(luò)的生存時(shí)間。
文檔編號(hào)H04L12/56GK101841884SQ20101016728
公開日2010年9月22日 申請日期2010年4月30日 優(yōu)先權(quán)日2010年4月30日
發(fā)明者丁嶸, 楊冰 申請人:北京航空航天大學(xué)