無線傳感網(wǎng)中的蛇形時隙存儲算法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及的是無線傳感監(jiān)測網(wǎng)中的一種數(shù)據(jù)存儲算法??蓱?yīng)用于無線傳感網(wǎng)絡(luò) 數(shù)據(jù)存儲領(lǐng)域。
【背景技術(shù)】
[0002] 無線傳感器網(wǎng)絡(luò)中,節(jié)點采集數(shù)據(jù),因為節(jié)點數(shù)比較大,帶來網(wǎng)絡(luò)數(shù)據(jù)傳輸量巨 大。對于某些應(yīng)用領(lǐng)域,節(jié)點采集數(shù)據(jù)并非實時傳輸,這樣可以將采集的數(shù)據(jù)保存在節(jié)點 (又稱存儲節(jié)點)上,需要時可從網(wǎng)內(nèi)存儲節(jié)點獲取數(shù)據(jù)。然而,存儲節(jié)點的選擇,直接影響 到查詢數(shù)據(jù)效率,以及查詢過程和數(shù)據(jù)傳輸過程中節(jié)點的能量消耗。因此,針對網(wǎng)絡(luò)數(shù)據(jù)類 型,選擇合適的存儲節(jié)點,設(shè)計能量有效的數(shù)據(jù)存儲算法顯得尤為重要。
[0003] 以數(shù)據(jù)為中心的存儲算法提供了一種基于數(shù)據(jù)屬性的信息中介機制,使得數(shù)據(jù)存 儲和查詢開銷得到平衡。DoubleRuling算法采用"存儲轉(zhuǎn)發(fā)"技術(shù)實現(xiàn)多點存儲,數(shù)據(jù)按 照一定的路徑存儲并轉(zhuǎn)發(fā),而查詢請求也按照一定的路徑傳播,只要數(shù)據(jù)的轉(zhuǎn)發(fā)路徑和查 詢傳播路徑相交,查詢就能夠得到響應(yīng)。但該算法要求網(wǎng)絡(luò)是規(guī)則的。Combs算法突破了 對規(guī)則網(wǎng)絡(luò)的要求,結(jié)合push策略與pull策略,構(gòu)建梳針查詢的策略,適合于平面結(jié)構(gòu)的 無線傳感器網(wǎng)絡(luò)進(jìn)行全局查詢。數(shù)據(jù)(或查詢請求)傳播時沿多跳路徑傳播,消耗能量的 節(jié)點太多,網(wǎng)絡(luò)的能量消耗太大,從而影響網(wǎng)絡(luò)生命周期。SCOOP算法是一種支持?jǐn)?shù)據(jù)多屬 性查詢的自適應(yīng)分布式動態(tài)存儲方法。這種算法能夠根據(jù)實際應(yīng)用情況自適應(yīng)的選擇存儲 位置,提高了數(shù)據(jù)存儲和查詢的效率;但對于大規(guī)模網(wǎng)絡(luò),查詢節(jié)點負(fù)荷較大,容易造成熱 點現(xiàn)象,而且擴展性差,因此只適用于小規(guī)模的傳感器網(wǎng)絡(luò)。GHT算法采用基于數(shù)據(jù)屬性的 命名,將數(shù)據(jù)屬性集命名為事件,借助于P2P(Peer-to-Peer對等網(wǎng)絡(luò))系統(tǒng)的DHT(以數(shù)據(jù) 為中心的散列表)思想,在節(jié)點監(jiān)測到有事件發(fā)生時,將事件映射為網(wǎng)絡(luò)中的存儲位置(傳 感器節(jié)點),采用基于位置的路由協(xié)議GPSR將數(shù)據(jù)路由到映射位置最近的節(jié)點。查詢請求 也根據(jù)關(guān)鍵字通過散列映射直接路由到相應(yīng)的位置傳感器獲取查詢結(jié)果。該算法為避免 節(jié)點死亡造成數(shù)據(jù)丟失的現(xiàn)象,需要對數(shù)據(jù)進(jìn)行存儲備份。GHT算法中,每類事件只有一個 存儲節(jié)點,會產(chǎn)生通信瓶頸和熱點現(xiàn)象;通過散列函數(shù)得到的散列位置上可能不存在節(jié)點; 沒有考慮到數(shù)據(jù)存儲和查詢過程中的能量開銷問題。
【發(fā)明內(nèi)容】
[0004] 鑒于蛇形時隙節(jié)能算法(SLPS)沒有考慮到數(shù)據(jù)傳輸過程中節(jié)點的能量消耗問 題,且越重要的數(shù)據(jù),其優(yōu)先級越高,查詢頻率也會相應(yīng)提高;故在蛇形時隙節(jié)能算法的基 礎(chǔ)上,對事件劃分優(yōu)先級,本發(fā)明提出一種無線傳感網(wǎng)中的的蛇形時隙算法(P-SLPS),通過 縮短數(shù)據(jù)存儲和查詢時數(shù)據(jù)的傳輸路徑,減少能量消耗,延長網(wǎng)絡(luò)生命周期。P-SLPS算法通 過劃分網(wǎng)格區(qū)域,將特定類型的數(shù)據(jù)存儲在相應(yīng)的網(wǎng)格中,而不是存儲在某個節(jié)點上;通過 定義事件優(yōu)先級,將高優(yōu)先級的事件存儲在距離查詢節(jié)點更近的網(wǎng)絡(luò)區(qū)域,保證高優(yōu)先級 事件最先被搜索到;根據(jù)監(jiān)測節(jié)點和存儲映射地址計算動態(tài)散列位置,將檢測事件存儲在 同一優(yōu)先級區(qū)域內(nèi)離監(jiān)測節(jié)點最近的存儲網(wǎng)格。P-SLPS算法具體如下:
[0005] 1.網(wǎng)絡(luò)劃分:假設(shè)網(wǎng)絡(luò)區(qū)域為一個L*L的正方形區(qū)域,節(jié)點均勻分布其中,且無線 傳感器網(wǎng)絡(luò)符合以下規(guī)則:網(wǎng)絡(luò)有很好的連通性,即節(jié)點密度足夠大;網(wǎng)絡(luò)部署后,Sink節(jié) 點和其它節(jié)點不再移動;網(wǎng)絡(luò)的周界已知,節(jié)點可以獲得自己的位置坐標(biāo);節(jié)點間的通信 范圍相同。另外,網(wǎng)絡(luò)中事件的產(chǎn)生是隨機的,每個事件都有事件類型,不同節(jié)點可以產(chǎn)生 相同類型的事件和數(shù)據(jù)。
[0006] 令Sink節(jié)點坐標(biāo)為(0,0),監(jiān)測事件有K類,以[IV(K+I)]*i(i= 1、2、3…K)為 半徑,(〇,〇)為頂點,畫圓構(gòu)成K個圓環(huán)區(qū)域,分別存儲K類事件,如圖1所示。每類事件賦 予一種優(yōu)先級,其值由事件按查詢頻率確定。優(yōu)先級值越小,事件優(yōu)先級越高,事件存儲區(qū) 域距離Sink節(jié)點越近。如優(yōu)先級為1的事件存儲在離Sink節(jié)點最近的圓環(huán)區(qū)域內(nèi)。
[0007] 為了使存儲節(jié)點距離監(jiān)測節(jié)點更近,提出動態(tài)散列位置的概念。首先以Sink節(jié)點 為頂點,90/n為夾角,將網(wǎng)絡(luò)區(qū)域劃分為a、b、c、d…n區(qū)。將存儲區(qū)域劃分為網(wǎng)格,如圖2 所示。
[0008] 2.節(jié)點工作時隙的分配:首先,計算每個網(wǎng)格內(nèi)的節(jié)點個數(shù),以及各個節(jié)點到網(wǎng) 格中心點的距離,按距離從小到大為節(jié)點編號(A、BC…N),用一個m行n列的矩陣T為網(wǎng)格 內(nèi)的每個節(jié)點分配偵聽或睡眠時隙。矩陣T中的元素Tu表示節(jié)點工作時隙。為保證每個 節(jié)點睡眠和偵聽周期公平,m和n的值盡量接近。矩陣T的行m和列n與網(wǎng)格內(nèi)節(jié)點數(shù)量N 的關(guān)系如公式(1)所示:
[0009]
[0010] 公式⑴中,若N為偶數(shù),滿足m=n=N/2;若N為奇數(shù),規(guī)定矩陣行數(shù)m為N/2 向上取整,列數(shù)n=N-m,m+n個節(jié)點對應(yīng)mXn個工作時隙。
[0011] 節(jié)點工作時隙L分配如公式(2)所示:
[0012]
[0013] 假設(shè)網(wǎng)格內(nèi)有7個節(jié)點(A、B、C、D、E、F、G、),則N= 7,由公式(1)計算得m= 4, n= 3。根據(jù)公式⑵帶入i,j值,構(gòu)建矩陣T如圖3所示。
[0014] 從第一行第一列開始,自左向右分配連續(xù)的時隙,如遇矩陣邊界則垂直換到下一 行,并以相反的方向在該行繼續(xù)分配連續(xù)的時隙。如圖3所示,第一行從左到右為時隙1、2、 3,第二行從右到左為時隙4、5、6,以此類推。每個節(jié)點被映射到i行或j列,保證每個時隙 內(nèi)有兩個節(jié)點處于活動狀態(tài)。矩陣T中,節(jié)點對應(yīng)行或列中的元素表示節(jié)點的工作時隙。節(jié) 點A的活動時隙為1、2、3,其余時隙處于睡眠狀態(tài)。節(jié)點E的活動時隙為1、6、7和12。采用 蛇形時序分配方式,在時隙切換時始終保證有節(jié)點處于連續(xù)工作狀態(tài),如時隙1中節(jié)點A、E 處于工作狀態(tài),當(dāng)時隙1切換到時隙2時,節(jié)點E進(jìn)入休眠狀態(tài),節(jié)點F從休眠狀態(tài)進(jìn)入工 作狀態(tài),而節(jié)點A在時隙1切換到時隙2的過程中始終處于工作狀態(tài),這種分配方式避免了 時隙切換時的丟包現(xiàn)象,保證了網(wǎng)絡(luò)運行的可靠性。
[0015]3.存儲節(jié)點的選擇:如圖4所示,監(jiān)測節(jié)點B(Xb,Yb)監(jiān)測到事件優(yōu)先級為K-1的 數(shù)據(jù),對應(yīng)存儲點應(yīng)在第K-1層環(huán)內(nèi)。利用散列表映射到散列位置G(Xg,Yg),節(jié)點B在區(qū)域b中,散列位置G在區(qū)域c中,利用監(jiān)測節(jié)點和散列位置坐標(biāo)計算動態(tài)散列位置心(Xg(l,Yg(l), 其中散列位置G和動態(tài)散列位置&位于同一半徑圓弧上,監(jiān)測節(jié)點B和動態(tài)散列位置G^位 于同一半徑軸線上。選擇動態(tài)散列位置&所在網(wǎng)格內(nèi)的工作節(jié)點作為事件存儲節(jié)點,其坐 標(biāo)由公式⑶和公式⑷求得。
[0016]
[0017]
[0018] 4.事件存儲:當(dāng)節(jié)點B監(jiān)測到事件后,經(jīng)散列運算,得到散列位置G,根據(jù)監(jiān)測節(jié) 點和散列位置坐標(biāo)求得離監(jiān)測節(jié)點距離最近的動態(tài)散列位置心,采用地理位置路由(GPSR) 算法可以將監(jiān)測到的事件路由到離動態(tài)散列位置所在的網(wǎng)格區(qū)域。當(dāng)數(shù)據(jù)送至動態(tài)散列位 置所在網(wǎng)格區(qū)域時,采用區(qū)域泛洪方式將數(shù)據(jù)保存在處于偵聽模式下的兩個節(jié)點中,如圖 5所示。收到數(shù)據(jù)的節(jié)點根據(jù)ID編號給監(jiān)測