趙高麗,宋軍平
(1.河南科技學(xué)院信息工程學(xué)院,河南 新鄉(xiāng) 453003;2.武漢理工大學(xué)信息工程學(xué)院,湖北 武漢 430070;3.河南科技學(xué)院新科學(xué)院,河南 新鄉(xiāng) 453003)
水下傳感器網(wǎng)絡(luò)最引人注目的是可以在無人值守的水下嚴(yán)酷環(huán)境里工作、減少人力成本,同時提供一種完全自動化的數(shù)據(jù)收集系統(tǒng),在水下傳感器網(wǎng)絡(luò)應(yīng)用里,傳感器節(jié)點(diǎn)的處理能力是有限的,因此期望部署的傳感器組成了一種連通的網(wǎng)絡(luò),在運(yùn)行任務(wù)時,互相協(xié)作,把采集到的數(shù)據(jù)輸送至基站,因?yàn)閭鞲衅鞴?jié)點(diǎn)的能量來源是電池供電設(shè)備,導(dǎo)致水下傳感器會受到能量耗盡導(dǎo)致設(shè)備停運(yùn)的影響,并且,水下惡劣環(huán)境與惡意攻擊也容易使節(jié)點(diǎn)出現(xiàn)大規(guī)模損壞,在這些情況中,水下傳感器網(wǎng)絡(luò)的通信就容易斷開,數(shù)據(jù)的傳輸就會收到限制。對此國內(nèi)外學(xué)者提出了以下解決方法。
文獻(xiàn)[1]使用拓?fù)浞治龇▽鞲衅鳈z測,確定受損區(qū)域,并更新主網(wǎng)絡(luò)拓?fù)鋮?shù),之后通過孤島方案提升DG的利用率同時恢復(fù)最大負(fù)荷量,最后將DG并網(wǎng)從而恢復(fù)傳感器網(wǎng)絡(luò)連通。但是該方法只是單純的通過檢測來判斷受損區(qū)域,并未對受損區(qū)域進(jìn)行劃分,在恢復(fù)時這就需要對所有水下傳感器區(qū)域進(jìn)行檢測,導(dǎo)致資源大量消耗。文獻(xiàn)[2]通過譜類算法對傳感器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)優(yōu)化,進(jìn)而縮短連通恢復(fù)的時間,之后構(gòu)建恢復(fù)路徑與負(fù)荷恢復(fù)模型,再從連通性恢復(fù)時間、路徑非連通修正與不確定負(fù)荷恢復(fù)效率的角度,再次進(jìn)行針對性優(yōu)化,最后在融入電壓強(qiáng)約束從而完成對傳感器網(wǎng)絡(luò)連通的恢復(fù)。但是該方法并沒有精準(zhǔn)的獲得受損壞的傳感器區(qū)域,這就導(dǎo)致了在最后完成連通恢復(fù)后,容易出現(xiàn)傳感器網(wǎng)絡(luò)遺留的問題。文獻(xiàn)[3]首先通過聯(lián)合稀疏分解方法,融合所有傳感器受損的信號,并進(jìn)行分類,進(jìn)而確定傳感器受損的區(qū)域,之后提取共通分量,利用信號分塊方法,減少起始稀疏度和步長所帶來的影響,最后將共通分量融入到受損的傳感器網(wǎng)絡(luò)節(jié)點(diǎn)內(nèi),進(jìn)而恢復(fù)傳感器的連通性。但是該方法只是對網(wǎng)絡(luò)的連通性數(shù)據(jù)進(jìn)行了恢復(fù),并沒有對整體傳感器進(jìn)行受損預(yù)防和實(shí)體恢復(fù),導(dǎo)致后期傳感器網(wǎng)絡(luò)可能會出現(xiàn)二次受損。
上述問題中存在的資源消耗大、損毀檢測不精準(zhǔn)與二次損壞問題,對此本文提出了一種水下傳感器網(wǎng)絡(luò)自組織連通恢復(fù)方法,通過MACRA算法和第二備用節(jié)點(diǎn)選擇夠有效的對傳感器網(wǎng)絡(luò)的自組織連通恢復(fù),并且恢復(fù)的效率較高,不會出現(xiàn)大量的資源浪費(fèi)情況。
本文研究的是部署在水下環(huán)境內(nèi)監(jiān)控指定區(qū)域的傳感器,節(jié)點(diǎn)即靜態(tài)的,其感知半徑與通信半徑是不會出現(xiàn)變化的,傳感器節(jié)點(diǎn)只要位于通信半徑的范圍里就能夠互相通信,并把獲得的數(shù)據(jù)傳輸至基站內(nèi)進(jìn)行對應(yīng)的處理,傳感器節(jié)點(diǎn)[4]可以使用相關(guān)的定位方法得到自身坐標(biāo)信息,整體網(wǎng)絡(luò)使用分簇式層次拓?fù)浣Y(jié)構(gòu)。
通常情況下,傳感器節(jié)點(diǎn)有可能因?yàn)橘Y源的消耗而失效,但一般狀態(tài)下只會導(dǎo)致少數(shù)的節(jié)點(diǎn)失效,如果不干擾網(wǎng)絡(luò)的連通,就能夠不做任何處理;反之也只是需要探測找出對應(yīng)的失效節(jié)點(diǎn),然后在重新放置節(jié)點(diǎn)即可。但在本文關(guān)注的水下環(huán)境里,除了能量消耗失效外,傳感器網(wǎng)絡(luò)節(jié)點(diǎn)也可能會受到水下環(huán)境的干擾,導(dǎo)致大規(guī)模失效,在此狀態(tài)下可能會出現(xiàn)整體網(wǎng)絡(luò)遭到破壞,具體場景如圖1所示。
圖1 水下傳感器網(wǎng)絡(luò)遭到破壞場景圖
在該狀態(tài)下,實(shí)現(xiàn)網(wǎng)絡(luò)連通[5]要求部署新的節(jié)點(diǎn),不論是特定的用在通信的中繼節(jié)點(diǎn),還是新部署和初始節(jié)點(diǎn)同樣的傳感器節(jié)點(diǎn),增加節(jié)點(diǎn)同時對其進(jìn)行部署都是需要大量成本的,所以通過最少的節(jié)點(diǎn)來完成網(wǎng)絡(luò)連通恢復(fù)是本文主要目的。把每一個新部署的節(jié)點(diǎn)叫做中繼節(jié)點(diǎn),同時擬定這些節(jié)點(diǎn)在水下同為靜止不懂,并擁有相同的通信半徑R。傳感器網(wǎng)絡(luò)受到破壞后被劃分的獨(dú)立子網(wǎng)絡(luò)叫做分區(qū)。
在傳感器網(wǎng)絡(luò)劃分為多種獨(dú)立的分區(qū)后,節(jié)點(diǎn)經(jīng)過互相通信就可以得到處理相同分區(qū)的其它節(jié)點(diǎn)[6]信息,同時選擇適合的代替節(jié)點(diǎn),把分區(qū)擬定成代替節(jié)點(diǎn)的位置。網(wǎng)絡(luò)連通問題擬定成圖連通問題,同時擬定n種分區(qū),然后通過網(wǎng)絡(luò)的全局分區(qū)信息,借助特定的巡視裝置把分區(qū)的信息輸送至基站。
怎樣搜索獨(dú)立的分區(qū)和找到所有分區(qū)的代替?zhèn)鞲衅鞴?jié)點(diǎn),是在部署中繼節(jié)點(diǎn)之前就需要解決的兩種問題。對此,本文利用構(gòu)造連通支配集方法建造出所有獨(dú)立分區(qū)的連通子樹[7],通過所有沒被破壞的節(jié)點(diǎn)確定自身屬于的分區(qū),同時了解分區(qū)的信息。對于每一個獨(dú)立的分區(qū),本文取連通子樹里節(jié)點(diǎn)度最大的節(jié)點(diǎn)當(dāng)做所有分區(qū)的代替節(jié)點(diǎn),大致流程如下所示:
首先利用關(guān)聯(lián)分簇方法選擇節(jié)點(diǎn),之后簇頭節(jié)點(diǎn)傳輸信息至其周圍的鄰居節(jié)點(diǎn),通過一段時間收斂獲得所有鄰居節(jié)點(diǎn)的回復(fù)信息,憑借接收的回復(fù)信息取距離簇頭節(jié)點(diǎn)距離最長的鄰居節(jié)點(diǎn)當(dāng)做支配節(jié)點(diǎn)。對應(yīng)的支配節(jié)點(diǎn)繼續(xù)運(yùn)行上述流程,直至確定所有獨(dú)立分區(qū)的支配集,從而形成多種連通子樹。最后取連通子樹立節(jié)點(diǎn)度最大的節(jié)點(diǎn)當(dāng)做所有分區(qū)的代替節(jié)點(diǎn),如果存在多種節(jié)點(diǎn)度同等的節(jié)點(diǎn),就取ID最小的節(jié)點(diǎn)當(dāng)做代替節(jié)點(diǎn)。
確定了所有分區(qū)的代替節(jié)點(diǎn)之后,把代替節(jié)點(diǎn)的坐標(biāo)信息和節(jié)點(diǎn)的ID傳輸至分區(qū)里所有節(jié)點(diǎn)內(nèi),使得相同分區(qū)所有節(jié)點(diǎn)都儲存有代替節(jié)點(diǎn)的ID與坐標(biāo)信息。
在巡視裝置對所部署監(jiān)控區(qū)進(jìn)行巡視采集時,巡視裝置只要接到分區(qū)里任意一種節(jié)點(diǎn)就能夠得到該分區(qū)的代替節(jié)點(diǎn)的ID與位置,最后把每一個分區(qū)代替節(jié)點(diǎn)信息傳輸至基站。
本文提出的MACRA算法,即完成水下傳感器網(wǎng)絡(luò)的自組織連通恢復(fù),使用多種節(jié)點(diǎn)在多種獨(dú)立分區(qū)之間進(jìn)行移動,進(jìn)而將連通恢復(fù)。MACRA算法擁有模糊連通恢復(fù)機(jī)制[8]與精確連通恢復(fù)機(jī)制兩個部分,這兩種部分的目標(biāo)就是找出適合的水下傳感器節(jié)點(diǎn)和在分區(qū)之間定位合適的移動路線終點(diǎn)與起點(diǎn)位置。下面詳細(xì)描述MACRA的模糊連通恢復(fù)機(jī)制與精準(zhǔn)連通恢復(fù)機(jī)制。
2.3.1 模糊連通恢復(fù)機(jī)制
模糊連通恢復(fù)首先通過網(wǎng)絡(luò)分割技術(shù)把整體水下傳感器網(wǎng)絡(luò)分割成多種具有一定規(guī)則的區(qū)域,并使用A1,A2,A3來代替,每種網(wǎng)絡(luò)點(diǎn)都?xì)w屬至一種特定的區(qū)域Ak,區(qū)域的尺寸通過用戶的需求來擬定,在網(wǎng)絡(luò)里多種獨(dú)立分區(qū)組成后對所有分區(qū)進(jìn)行所占區(qū)域的編號標(biāo)記。如圖2所示,分區(qū)G1占A1與A2兩種區(qū)域。相較于隨機(jī)一種獨(dú)立分區(qū)需要選取一種中繼分區(qū)Gy來完成連通,基站sink能夠當(dāng)做為一種獨(dú)立的中繼分區(qū)。
圖2 區(qū)域劃分
MACRA算法的模糊連通機(jī)制是以網(wǎng)絡(luò)區(qū)域當(dāng)做估算單位,首先定位選擇連接的兩種分區(qū)Gx與Gy所占據(jù)的區(qū)域,對這兩種區(qū)域的確定需要在兩點(diǎn)要求之間進(jìn)行權(quán)衡。這兩種要求為兩種區(qū)域長度盡量短與重新連接[9]方位應(yīng)該符合現(xiàn)實(shí)輸送目的,即新的傳輸方位應(yīng)該盡可能的偏向基站傳輸。用數(shù)學(xué)公式介紹就是選擇滿足模糊定位函數(shù)f1(Gx)最小值的兩種區(qū)域,函數(shù)f1(Gx)表示成
minf1(Gx)=αD(Ai,Aj)+βD(Aj,Ak)
(1)
式中D(Ai,Aj)代表Ai至Aj的歐式長度,D(Aj,Ak)代表Aj至Ak的歐式長度,此處通過區(qū)域的中心代替區(qū)域的坐標(biāo)[10],而α與β即常系數(shù)。如圖3所示,白色的點(diǎn)表示區(qū)域的中心位置,相較于獨(dú)立分區(qū)G3選取G2當(dāng)做中繼分區(qū),而Ai至Aj即水下傳感器節(jié)點(diǎn)的連接區(qū)域。
2.3.2 精準(zhǔn)連通恢復(fù)機(jī)制
模糊定位函數(shù)在很大程度上減少了移動節(jié)點(diǎn)的選取范圍,只需要在大體定位的合適的傳感器節(jié)點(diǎn)進(jìn)行輔助移動[11]至指定位置來恢復(fù)網(wǎng)絡(luò)的連通,精準(zhǔn)連通恢復(fù)機(jī)制即同于完成這種目的,大致傳感器節(jié)點(diǎn)與移動位置的選擇綜合考慮尺寸與節(jié)點(diǎn)局部密度兩種因素。相較于隨機(jī)傳感器節(jié)點(diǎn)i,以該節(jié)點(diǎn)為中心的一種指定范圍的圓形區(qū)域里,部署的傳感器節(jié)點(diǎn)的總數(shù)量定義成該節(jié)點(diǎn)的局部密度,以σi來代替。選取節(jié)點(diǎn)的移動長度應(yīng)該盡量縮短,這樣就能夠降低傳感器節(jié)點(diǎn)的移動質(zhì)量要求,并且移動節(jié)點(diǎn)的終點(diǎn)與起點(diǎn)局部密度最好盡量擴(kuò)大。如果某一種傳感器節(jié)點(diǎn)的局部密度變大,就證明節(jié)點(diǎn)對網(wǎng)絡(luò)連通性的干擾越小,因?yàn)樵谠摴?jié)點(diǎn)遭到破壞導(dǎo)致失效后,能夠代替該節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)越多,那么該節(jié)點(diǎn)對其鄰居們的數(shù)據(jù)傳輸?shù)母蓴_越小,該節(jié)點(diǎn)對網(wǎng)絡(luò)的連通性干擾越小。
在運(yùn)行模糊連通恢復(fù)機(jī)制之后,Ai與Aj兩種區(qū)域被擬定成水下移動傳感器節(jié)點(diǎn)移動的終點(diǎn)位置pi與起點(diǎn)位置pj所處的區(qū)域,精準(zhǔn)定位函數(shù)f2(Gx)表示成
minf2(Gx)=μD(pi,pj)+φ/p(pi)
(2)
minf2(Gy)=μD(pi,pj)+φ/p(pj)
(3)
因此,水下傳感器節(jié)點(diǎn)的源與目的坐標(biāo)就在短尺寸與大局部密度之間進(jìn)行權(quán)衡,在節(jié)能的同時滿足網(wǎng)絡(luò)的二次抗毀性。如圖4所示,G2與G3之間最短的尺寸即M與N點(diǎn),可是這兩種點(diǎn)的坐標(biāo)并不是本文指定的區(qū)域,所以在這兩點(diǎn)里的隨機(jī)[12]一點(diǎn)的鄰居節(jié)點(diǎn)受到破壞時,那么該水下傳感器網(wǎng)絡(luò)的連通性就會出現(xiàn)二次毀壞的狀況。
圖4 精準(zhǔn)連通恢復(fù)機(jī)制
2.4.1 選擇第二備用節(jié)點(diǎn)
針對兩種相鄰節(jié)點(diǎn)出現(xiàn)二次損毀的問題,選取備用節(jié)點(diǎn)的指標(biāo)如下所示:
1)兩種關(guān)鍵節(jié)點(diǎn)不可以互相當(dāng)做備用節(jié)點(diǎn)。
2)兩種相鄰的節(jié)點(diǎn)一種是非關(guān)鍵節(jié)點(diǎn),一種是關(guān)鍵節(jié)點(diǎn)時:
假如非關(guān)鍵節(jié)點(diǎn)不是關(guān)鍵節(jié)點(diǎn)的備用節(jié)點(diǎn),那么就不在需要第二備用節(jié)點(diǎn)。
假如非關(guān)鍵節(jié)點(diǎn)為關(guān)鍵節(jié)點(diǎn)的備用節(jié)點(diǎn),那么從兩個節(jié)點(diǎn)的共同鄰居里挑選出一個第二備用節(jié)點(diǎn);假如兩者沒有共通鄰居,那么就從關(guān)鍵節(jié)點(diǎn)里選擇一個節(jié)點(diǎn)作為第二備用節(jié)點(diǎn)。
3)兩種相鄰的節(jié)點(diǎn)都為關(guān)鍵節(jié)點(diǎn)時:
如果兩種節(jié)點(diǎn)都含有自己獨(dú)立的備用節(jié)點(diǎn),那么不需要選取第二種備用節(jié)點(diǎn)。
如果兩種相鄰的掛件節(jié)點(diǎn)里一種即另一種的備用節(jié)點(diǎn),那么需要選取第二種備用節(jié)點(diǎn)。
2.4.2 基于二次損壞的連通性恢復(fù)
針對水下傳感器網(wǎng)絡(luò)里兩種節(jié)點(diǎn)出現(xiàn)二次損壞的狀況,有一下幾種場景:
1)關(guān)鍵節(jié)點(diǎn)n1就是二次損毀的兩種相鄰節(jié)點(diǎn),n2為非關(guān)鍵節(jié)點(diǎn):
①假如n2不是n1的備用節(jié)點(diǎn),那么n1的備用節(jié)點(diǎn)傳輸至n1的坐標(biāo)就能夠?qū)Χ螕p壞的連通性進(jìn)行恢復(fù)。如圖5里非關(guān)鍵節(jié)點(diǎn)N與關(guān)鍵節(jié)點(diǎn)M出現(xiàn)二次損壞,M的備用節(jié)點(diǎn)I轉(zhuǎn)移至M坐標(biāo)即能夠恢復(fù)網(wǎng)絡(luò)連通性。
②如果n2代表n1的備用節(jié)點(diǎn),那么就檢測第二備用節(jié)點(diǎn)的故障,并開始恢復(fù)連通性。如圖5里其備用節(jié)點(diǎn)R與關(guān)鍵節(jié)點(diǎn)L出現(xiàn)二次損壞,那么就通過第二備用節(jié)點(diǎn)X搜索非關(guān)鍵節(jié)點(diǎn)。進(jìn)而獲得非關(guān)鍵節(jié)點(diǎn)C,如果得到非關(guān)鍵節(jié)點(diǎn)C,X,C就轉(zhuǎn)移至L級聯(lián)移動。
圖5 二次損壞連通性恢復(fù)
2)兩種節(jié)點(diǎn)n1,n2遭受二次損壞,并且節(jié)點(diǎn)都是關(guān)鍵節(jié)點(diǎn):
①如果n1,n2都存在自己單獨(dú)的備用節(jié)點(diǎn),同時都含有非關(guān)鍵節(jié)點(diǎn),那么平行移動自身至相應(yīng)的損壞節(jié)點(diǎn)就能夠恢復(fù)連通性。
②如果n1,n2都存在自己單獨(dú)的備用節(jié)點(diǎn),同時兩個節(jié)點(diǎn)分別為關(guān)鍵節(jié)點(diǎn)與非關(guān)鍵節(jié)點(diǎn),那么將非關(guān)鍵節(jié)點(diǎn)傳輸至關(guān)鍵節(jié)點(diǎn)的位置。之后運(yùn)行非關(guān)鍵節(jié)點(diǎn)的搜索算法,從而獲得非關(guān)鍵節(jié)點(diǎn),最后運(yùn)行級聯(lián)移動,進(jìn)而恢復(fù)網(wǎng)絡(luò)連通性。
③假如n1,n2都含有單獨(dú)的備用節(jié)點(diǎn),同時都是關(guān)鍵的節(jié)點(diǎn),那么兩種備用節(jié)點(diǎn)就同時使用非關(guān)鍵節(jié)點(diǎn)的搜索流程。經(jīng)過防止沖突方式,搜索路徑里的每一個節(jié)點(diǎn),如此反復(fù)知道完成搜索。
④如果n2是n1的備用節(jié)點(diǎn),那么第二備用節(jié)點(diǎn)與n2的備用節(jié)點(diǎn)檢測到二次損壞出現(xiàn),激活非關(guān)鍵節(jié)點(diǎn)的搜索流程。如圖5備用節(jié)點(diǎn)R與其關(guān)鍵節(jié)點(diǎn)L出現(xiàn)二次損壞,R的備用節(jié)點(diǎn)S找出R損壞,因?yàn)镾即非關(guān)鍵節(jié)點(diǎn),那么直接轉(zhuǎn)移至R坐標(biāo)即可,節(jié)點(diǎn)R,X被第二備用節(jié)點(diǎn)B檢測到L損壞,并且找到非關(guān)鍵節(jié)點(diǎn)Q,然后Q,C,X往L級聯(lián)轉(zhuǎn)移。
仿真環(huán)境為Intel Celeron Tulatin1GHz CPU和384MB SD內(nèi)存的硬件環(huán)境和MATLAB6.1的軟件環(huán)境。
為了證明本文方法的實(shí)用性,在水下環(huán)境1m*1m的范圍里隨機(jī)安放100種節(jié)點(diǎn),并將其劃分為
1)移動尺寸,因?yàn)橐苿訒馁M(fèi)大量的水下傳感器資源,因此將水下傳感器的移動路徑最小化也是本文方法的設(shè)計(jì)目標(biāo)之一。
2)最大移動尺寸,水下傳感器完成一種最短循環(huán)T所移動的最大尺寸L,假如L尺寸過大,就會導(dǎo)致自組織連通恢復(fù)出現(xiàn)延遲,因此需要最小化L。
在已經(jīng)擬定完聚類數(shù)量的前提下,把本文方法與文獻(xiàn)[1]、文獻(xiàn)[2]方法進(jìn)行對比,文獻(xiàn)方法的大體思想即在節(jié)點(diǎn)組成指定的數(shù)目集群后,每一種集群里選取一種收集點(diǎn),通過最小生成樹對移動路徑進(jìn)行估算,達(dá)到水下傳感器網(wǎng)絡(luò)節(jié)點(diǎn)移動最小化,進(jìn)而節(jié)省節(jié)點(diǎn)的消耗。
表1 不同方法的移動總尺寸對比
通過表1能夠看出,本文方法要優(yōu)于文獻(xiàn)方法,就是在水下傳感器網(wǎng)絡(luò)速度確定的狀態(tài)下,可以更好的恢復(fù)網(wǎng)絡(luò)的自組織連通性,同時節(jié)點(diǎn)組成六個集群時,本文方法明顯好過文獻(xiàn)方法。圖6為實(shí)驗(yàn)圖像。
圖6 不同方法的移動總尺寸
表2是兩種方法的最大移動尺寸的對比。
表2 不同方法最大移動尺寸對比
通過表2能夠看出,本文方法在連通恢復(fù)效率上高過文獻(xiàn)方法,水下傳感器網(wǎng)絡(luò)運(yùn)行的速度更快,其實(shí)驗(yàn)圖像如圖7所示。
圖7 不同方法最大移動尺寸對比
通過表1、2的實(shí)驗(yàn)結(jié)果能夠得知,在已組成指定聚類數(shù)量的前提下,本文方法能夠更快的對水下傳感器網(wǎng)絡(luò)自組織連通進(jìn)行恢復(fù),并且消耗的資源較少,更適合處理在水下環(huán)境內(nèi)無人值守的傳感器網(wǎng)絡(luò)節(jié)點(diǎn)大規(guī)模損壞的恢復(fù)情況。
針對水下傳感器連通受損恢復(fù)的問題,本文提出了一種水下傳感器網(wǎng)絡(luò)自組織連通恢復(fù)方法,通過分析水下傳感器網(wǎng)絡(luò),確定傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的中繼節(jié)點(diǎn),然后使用MACRA算法對水下傳感器網(wǎng)絡(luò)分塊,以及節(jié)點(diǎn)密度計(jì)算進(jìn)而恢復(fù)傳感器網(wǎng)絡(luò)的連通,并且為了防止二次破壞,還利用擬定閾值來選擇傳感器網(wǎng)絡(luò)的備用節(jié)點(diǎn),使傳感器網(wǎng)絡(luò)即使遭受二次損壞也能夠及時的對其進(jìn)行恢復(fù)。