本發(fā)明涉及無線傳感
技術(shù)領(lǐng)域:
,尤其是涉及一種無線傳感器網(wǎng)絡(luò)自愈修復(fù)方法及系統(tǒng)。
背景技術(shù):
:無線傳感器網(wǎng)絡(luò)常被部署在條件惡劣的環(huán)境中,因此網(wǎng)絡(luò)容易發(fā)生各種故障。當(dāng)部署之后的網(wǎng)絡(luò)發(fā)生局部故障,如關(guān)鍵節(jié)點故障等,將可能影響網(wǎng)絡(luò)的正常工作,此時需要有效的機制對故障的網(wǎng)絡(luò)進(jìn)行修復(fù)。在單個節(jié)點故障的情況下,當(dāng)網(wǎng)絡(luò)中的其他節(jié)點可移動時,可采用移動節(jié)點的方式來修復(fù)網(wǎng)絡(luò)連接。采用移動節(jié)點的修復(fù)方法,一方面無需部署新的節(jié)點,節(jié)省了購買設(shè)備的開銷;另一方面,這種方法可以由預(yù)先制定的修復(fù)算法自動完成,無需人工干預(yù),節(jié)省了人工修復(fù)成本。但采用這種方法進(jìn)行修復(fù)也面臨著兩方面的挑戰(zhàn)。第一,這種修復(fù)方法的一般步驟是將故障節(jié)點的鄰居節(jié)點往故障節(jié)點的位置移動,目的是讓鄰居節(jié)點完全替代故障節(jié)點,從而修復(fù)網(wǎng)絡(luò)連接。但鄰居節(jié)點的移動可能會導(dǎo)致其他連接斷開,帶來新的網(wǎng)絡(luò)故障問題。因此,如何適當(dāng)?shù)匾苿余従庸?jié)點而不引起新的網(wǎng)絡(luò)故障是本發(fā)明需要解決的一個問題。第二,與節(jié)點處于靜止?fàn)顟B(tài)相比,節(jié)點的移動需要耗費額外的能量。若原本能量剩余不多的節(jié)點耗費過多的能量進(jìn)行移動,則該節(jié)點可能在到達(dá)指定位置之前便失效,或者在移動到指定位置之后不久便失效。節(jié)點失效也可能帶來新的網(wǎng)絡(luò)故障問題。因此,如果適當(dāng)?shù)匾苿痈鱾€節(jié)點,使得移動之后的節(jié)點還能較長久地在網(wǎng)絡(luò)中提供服務(wù)是本發(fā)明需要考慮的另一個問題?,F(xiàn)有方法主要注重于修復(fù)網(wǎng)絡(luò)的連接,并未同時考慮上述兩方面問題。Younis等人提出的RIM算法的修復(fù)步驟為:當(dāng)網(wǎng)絡(luò)中某個關(guān)鍵節(jié)點故障時,其所有鄰居節(jié)點同時向故障節(jié)點方向移動,直到鄰居節(jié)點之間可以相互通信為止。鄰居節(jié)點的移動若導(dǎo)致其他連接的斷開,則這些斷開的連接也通過節(jié)點同時移動的方法進(jìn)行修復(fù)。也就是說,當(dāng)網(wǎng)絡(luò)中某個關(guān)鍵節(jié)點故障時,通過所有節(jié)點一起向故障節(jié)點位置移動的方式來達(dá)到修復(fù)網(wǎng)絡(luò)連接的目標(biāo)。這種方法雖然修復(fù)了網(wǎng)絡(luò)連接,但導(dǎo)致了網(wǎng)絡(luò)中大部分節(jié)點都需要移動。Abbasi等人在RIM算法的基礎(chǔ)上進(jìn)行改進(jìn),提出了DARA算法。當(dāng)網(wǎng)絡(luò)中某個關(guān)鍵節(jié)點故障時,DARA算法將節(jié)點度最小的鄰居節(jié)點移動到故障節(jié)點位置。若鄰居節(jié)點的移動帶來了新的網(wǎng)絡(luò)連接的斷開,則其他節(jié)點通過級聯(lián)移動的方式來修復(fù)網(wǎng)絡(luò)連接。盡管該算法修復(fù)了網(wǎng)絡(luò)連接,但當(dāng)移動的節(jié)點也處于網(wǎng)絡(luò)中的關(guān)鍵位置時,這種移動方法同樣導(dǎo)致了較多節(jié)點的移動。此外,Abbasi等人還提出了LeDiR算法,該算法假設(shè)當(dāng)網(wǎng)絡(luò)中某個關(guān)鍵節(jié)點故障時,網(wǎng)絡(luò)至少被分為兩個子塊。該算法首先找到所有分塊中的最小子塊,并在最小子塊中找到故障節(jié)點的鄰居節(jié)點。其次,將鄰居節(jié)點移動到故障節(jié)點位置,代替故障節(jié)點執(zhí)行指定功能。若鄰居節(jié)點的移動帶來了新的網(wǎng)絡(luò)連接的斷開,則其鄰居節(jié)點向故障節(jié)點方向移動,直到修復(fù)網(wǎng)絡(luò)連接為止。與RIM和DARA算法相比,LeDiR算法相對地減少了移動節(jié)點的數(shù)目。Tamboli等人提出的ECR算法通過輪流將故障節(jié)點的鄰居移動到故障節(jié)點的位置來達(dá)到修復(fù)網(wǎng)絡(luò)連接和維持原有覆蓋的目的,但從該算法開始執(zhí)行之后,節(jié)點一直處于輪流移動狀態(tài),整個網(wǎng)絡(luò)十分不穩(wěn)定。上述算法均是在單個節(jié)點故障的情況下對網(wǎng)絡(luò)連接進(jìn)行修復(fù),并要求網(wǎng)絡(luò)中的其他節(jié)點可移動。通過移動網(wǎng)絡(luò)中的其他節(jié)點,可在無需人工干預(yù)的情況下,網(wǎng)絡(luò)自行修復(fù)連接,不僅節(jié)約人工修復(fù)的成本,也節(jié)約了購買設(shè)備的成本。但是上述算法均未考慮節(jié)點的能量問題。若節(jié)點本身剩余能量較少,卻仍要按照算法的要求進(jìn)行移動,則很可能導(dǎo)致節(jié)點在沒有移動到指定位置之前,就因能量耗盡而死亡,進(jìn)而導(dǎo)致更嚴(yán)重的網(wǎng)絡(luò)故障。因此,對于單個節(jié)點故障的情況,在制定修復(fù)策略時,需要同時考慮節(jié)點的能量問題。技術(shù)實現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是:提供一種無線傳感器網(wǎng)絡(luò)有效的自愈修復(fù)方法,以平衡節(jié)點能耗,延長網(wǎng)絡(luò)生存周期。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:提供一種無線傳感器網(wǎng)絡(luò)自愈修復(fù)方法,包括:獲取無線傳感器節(jié)點的位置坐標(biāo)以及關(guān)鍵節(jié)點;在檢測關(guān)鍵節(jié)點發(fā)生故障后,根據(jù)節(jié)點能量,朝故障關(guān)鍵節(jié)點方向移動其對應(yīng)的鄰居節(jié)點;在移動鄰居節(jié)點后,檢測是否修復(fù)網(wǎng)絡(luò)連接;若未修復(fù),則朝故障關(guān)鍵節(jié)點方向移動節(jié)點最小塊,直至所有子塊可相互通信。為解決上述問題,本發(fā)明還提供一種無線傳感器網(wǎng)絡(luò)自愈修復(fù)系統(tǒng),包括:目標(biāo)獲取單元,用于獲取無線傳感器節(jié)點的位置坐標(biāo)以及關(guān)鍵節(jié)點;節(jié)點移動單元,用于在檢測關(guān)鍵節(jié)點發(fā)生故障后,根據(jù)節(jié)點能量,朝故障關(guān)鍵節(jié)點方向移動其對應(yīng)的鄰居節(jié)點;連接檢測單元,用于檢測在移動鄰居節(jié)點后,檢測是否修復(fù)網(wǎng)絡(luò)連接;子塊移動單元,用于若未修復(fù),則朝故障關(guān)鍵節(jié)點方向移動節(jié)點最小塊,直至所有子塊可相互通信。本發(fā)明的有益效果在于:區(qū)別于現(xiàn)有技術(shù),本發(fā)明確定故障關(guān)鍵節(jié)點后,根據(jù)其鄰居節(jié)點能量,朝故障關(guān)鍵節(jié)點方向進(jìn)行移動,并初次檢測是否修復(fù)網(wǎng)絡(luò)連接;若未修復(fù),則朝故障關(guān)鍵節(jié)點方向移動節(jié)點最小塊,直至所有子塊可相互通信。通過上述方式,本發(fā)明不僅最大程度地保持了節(jié)點原有的連接,還有效地平衡了節(jié)點的能耗,延長了網(wǎng)絡(luò)的生存周期。附圖說明圖1為本發(fā)明具體實施例的操作流程示意圖;圖2為本發(fā)明具體實施例中無線傳感器網(wǎng)絡(luò)示意圖;圖3為本發(fā)明具體實施例中ni+1節(jié)點故障后進(jìn)行相切移動示意圖;圖4為本發(fā)明具體實施例中的SER算法與現(xiàn)有的LeDiR算法的總移動距離對比曲線圖;圖5為本發(fā)明具體實施例中的SER算法與現(xiàn)有的LeDiR算法的總能耗對比曲線圖;圖6為本發(fā)明具體實施例中的SER算法與現(xiàn)有的LeDiR算法的總移動節(jié)點數(shù)目對比曲線圖;圖7為本發(fā)明具體實施例中的SER算法與現(xiàn)有的LeDiR算法的能量方差對比曲線圖。具體實施方式為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖予以說明。本發(fā)明最關(guān)鍵的構(gòu)思在于:確定關(guān)鍵節(jié)點發(fā)生故障后,根據(jù)鄰居節(jié)點能量,向關(guān)鍵節(jié)點方向移動,以檢測是否修復(fù)網(wǎng)絡(luò)連接。本發(fā)明實施例一提供一種無線傳感器網(wǎng)絡(luò)自愈修復(fù)方法,包括:獲取無線傳感器節(jié)點的位置坐標(biāo)以及關(guān)鍵節(jié)點;在檢測關(guān)鍵節(jié)點發(fā)生故障后,根據(jù)節(jié)點能量,朝故障關(guān)鍵節(jié)點方向移動其對應(yīng)的鄰居節(jié)點;在移動鄰居節(jié)點后,檢測是否修復(fù)網(wǎng)絡(luò)連接;若未修復(fù),則朝故障關(guān)鍵節(jié)點方向移動節(jié)點最小塊,直至所有子塊可相互通信。區(qū)別于現(xiàn)有技術(shù),本發(fā)明確定故障關(guān)鍵節(jié)點后,根據(jù)其鄰居節(jié)點能量,朝故障關(guān)鍵節(jié)點方向進(jìn)行移動,并初次檢測是否修復(fù)網(wǎng)絡(luò)連接;若未修復(fù),則朝故障關(guān)鍵節(jié)點方向移動節(jié)點最小塊,直至所有子塊可相互通信。通過上述方式,本發(fā)明不僅最大程度地保持了節(jié)點原有的連接,還有效地平衡了節(jié)點的能耗,延長了網(wǎng)絡(luò)的生存周期。其中,每個節(jié)點定期向其鄰居節(jié)點發(fā)送心跳消息;鄰居節(jié)點判斷在特定時間段內(nèi)是否接收到心跳消息,若是,則表示該節(jié)點正常;反之,則表示該節(jié)點發(fā)送故障,并判斷該節(jié)點是否為關(guān)鍵節(jié)點,若是,則朝故障關(guān)鍵節(jié)點方向移動其對應(yīng)的鄰居節(jié)點;反之,則忽略該節(jié)點。在移動時,需要預(yù)先獲取發(fā)生故障的關(guān)鍵節(jié)點的鄰居節(jié)點的初始能量,并按照能量高低進(jìn)行排序;按照初始能量高低,依序為每個鄰居節(jié)點計算相切距離及允許移動距離;取相切距離及允許移動距離中的較小值,作為該鄰居節(jié)點的移動距離;朝故障關(guān)鍵節(jié)點方向移動該鄰居節(jié)點的所述移動距離后,判斷是否修復(fù)網(wǎng)絡(luò)連接;若是,則表示修復(fù)成功,并結(jié)束流程;反之,則為初始能量第二大的鄰居節(jié)點計算相切距離及允許移動距離,并進(jìn)行移動;直至關(guān)鍵節(jié)點的所有鄰居節(jié)點都進(jìn)行移動為止。若未修復(fù),則朝故障關(guān)鍵節(jié)點方向移動節(jié)點最小塊,直至所有子塊可相互通信,具體為:通過關(guān)鍵節(jié)點,對無線傳感器節(jié)點劃分若干個子塊;比較各個子塊包含的節(jié)點數(shù)目,獲取無線傳感器節(jié)點的最小塊;向故障關(guān)鍵節(jié)點方向移動最小塊的鄰居節(jié)點,直到鄰居節(jié)點可以與故障節(jié)點的其他鄰居節(jié)點進(jìn)行通信。若最小快鄰居節(jié)點的移動造成新的連接斷開,則將其他節(jié)點朝故障關(guān)鍵節(jié)點方向移動,直至完成網(wǎng)絡(luò)連接的修復(fù)。對應(yīng)地,本發(fā)明實施例二提供一種無線傳感器網(wǎng)絡(luò)自愈修復(fù)系統(tǒng),包括:目標(biāo)獲取單元,用于獲取無線傳感器節(jié)點的位置坐標(biāo)以及關(guān)鍵節(jié)點;節(jié)點移動單元,用于在檢測關(guān)鍵節(jié)點發(fā)生故障后,根據(jù)節(jié)點能量,朝故障關(guān)鍵節(jié)點方向移動其對應(yīng)的鄰居節(jié)點;連接檢測單元,用于檢測在移動鄰居節(jié)點后,檢測是否修復(fù)網(wǎng)絡(luò)連接;子塊移動單元,用于若未修復(fù),則朝故障關(guān)鍵節(jié)點方向移動節(jié)點最小塊,直至所有子塊可相互通信。其中,每個節(jié)點定期向其鄰居節(jié)點發(fā)送心跳消息;鄰居節(jié)點判斷在特定時間段內(nèi)是否接收到心跳消息,若是,則表示該節(jié)點正常;反之,則表示該節(jié)點發(fā)送故障,并判斷該節(jié)點是否為關(guān)鍵節(jié)點,若是,則朝故障關(guān)鍵節(jié)點方向移動其對應(yīng)的鄰居節(jié)點;反之,則忽略該節(jié)點。所述節(jié)點移動單元還用于:獲取發(fā)生故障的關(guān)鍵節(jié)點的鄰居節(jié)點的初始能量,并按照能量高低進(jìn)行排序;按照初始能量高低,依序為每個鄰居節(jié)點計算相切距離及允許移動距離;取相切距離及允許移動距離中的較小值,作為該鄰居節(jié)點的移動距離;朝故障關(guān)鍵節(jié)點方向移動該鄰居節(jié)點的所述移動距離后,判斷是否修復(fù)網(wǎng)絡(luò)連接;若是,則表示修復(fù)成功,并結(jié)束流程;反之,則為初始能量第二大的鄰居節(jié)點計算相切距離及允許移動距離,并進(jìn)行移動;直至關(guān)鍵節(jié)點的所有鄰居節(jié)點都進(jìn)行移動為止。所述子塊移動單元具體用于:通過關(guān)鍵節(jié)點,對無線傳感器節(jié)點劃分若干個子塊;比較各個子塊包含的節(jié)點數(shù)目,獲取無線傳感器節(jié)點的最小塊;向故障關(guān)鍵節(jié)點方向移動最小塊的鄰居節(jié)點,直到鄰居節(jié)點可以與故障節(jié)點的其他鄰居節(jié)點進(jìn)行通信。若最小快鄰居節(jié)點的移動造成新的連接斷開,則將其他節(jié)點朝故障關(guān)鍵節(jié)點方向移動,直至完成網(wǎng)絡(luò)連接的修復(fù)。為方便理解,以下結(jié)合附圖1~7,通過一個具體實施例進(jìn)行說明。本發(fā)明的無線傳感器網(wǎng)絡(luò)能量有效的自愈修復(fù)方法。該方法大體上可分成移動鄰居節(jié)點以及移動最小塊兩個步驟。在移動鄰居節(jié)點步驟中,節(jié)點最終移動的距離取決于節(jié)點與其鄰居之間的覆蓋重疊情況以及節(jié)點本身的能量情況。若所有鄰居節(jié)點移動后均未能修復(fù)網(wǎng)絡(luò)連接,則移動最小塊。在移動最小塊步驟中,節(jié)點移動的首要目標(biāo)是修復(fù)網(wǎng)絡(luò)連接,因此這個步驟并未考慮節(jié)點的能量問題,而是將處于最小塊的節(jié)點進(jìn)行移動以修復(fù)網(wǎng)絡(luò)連接。該方法不僅最大程度地保持了節(jié)點原有的連接,還有效地平衡了節(jié)點的能耗,延長了網(wǎng)絡(luò)的生存周期。首先假設(shè)無線傳感器網(wǎng)絡(luò)中的節(jié)點均可移動,并且發(fā)生故障的節(jié)點為關(guān)鍵節(jié)點。當(dāng)把一個節(jié)點及其相關(guān)的邊都移除,若整個網(wǎng)絡(luò)被分割成2個或2個以上的子塊,則稱該節(jié)點為關(guān)鍵節(jié)點,因此關(guān)鍵節(jié)點包括至少2邊。圖2中,當(dāng)節(jié)點n5及其相應(yīng)的邊被移除時,整個網(wǎng)絡(luò)被分割成三個子塊,因此,節(jié)點n5稱為關(guān)鍵節(jié)點。類似的,n2、n3和n7也均為關(guān)鍵節(jié)點。相反地,節(jié)點n1、n4、n6和n8稱為葉子節(jié)點。相比于關(guān)鍵節(jié)點,葉子節(jié)點發(fā)生故障時,對整個網(wǎng)絡(luò)的影響相對較小。因此在單節(jié)點故障的問題中,本發(fā)明主要關(guān)注的是某個關(guān)鍵節(jié)點故障時,如何適當(dāng)?shù)匾苿泳W(wǎng)絡(luò)中其他節(jié)點來修復(fù)網(wǎng)絡(luò)連接,使得修復(fù)之后的網(wǎng)絡(luò)可以正常通信。無線傳感器網(wǎng)絡(luò)中的節(jié)點通常隨機部署,導(dǎo)致部署之后節(jié)點與節(jié)點之間存在較大的覆蓋重疊區(qū)域。因此,當(dāng)網(wǎng)絡(luò)中某個節(jié)點需要移動時,本發(fā)明采用的方法之一是將該節(jié)點移動到與其鄰居節(jié)點相切的位置,這樣既維持了節(jié)點的原有連接,也擴大了覆蓋面積。但是,若節(jié)點與其鄰居節(jié)點的覆蓋重疊區(qū)域較大,則節(jié)點需要移動較長的距離才能到達(dá)與鄰居節(jié)點相切的位置,這將導(dǎo)致節(jié)點需要耗費較多的能量。但節(jié)點所擁有的能量并不一定能提供節(jié)點的較長移動。因此,為了維持節(jié)點原有連接,同時使得節(jié)點在移動之后可以繼續(xù)提供服務(wù),本發(fā)明為節(jié)點設(shè)置了一個能量閾值,只有節(jié)點的能量大于閾值才進(jìn)行移動。所以,在本發(fā)明中需要為每個即將移動的節(jié)點計算兩個值:節(jié)點從初始位置移動到與鄰居節(jié)點相切的位置的移動距離(相切距離),以及節(jié)點擁有的能量所能提供節(jié)點移動的距離(最大距離),并取其中較小的一個值為節(jié)點的最終移動距離。以圖3為例,當(dāng)節(jié)點ni+1故障時,需要移動ni+1的鄰居節(jié)點ni或ni+2去修復(fù)網(wǎng)絡(luò)連接。假設(shè)ni和ni+2現(xiàn)有的能量均大于閾值,并且ni的能量大于ni+2的能量。首先將ni朝ni+1方向移動。ni可移動的距離取決于ni與其鄰居節(jié)點ni-1之間的覆蓋重疊情況以及ni自身的能量值。下面分別計算ni的相切距離和最大移動距離。在圖3中,假設(shè)節(jié)點ni、ni-1和ni+1的初始坐標(biāo)分別為(xi,yi)、(xi-1,yi-1)和(xi+1,yi+1),ni移動到與節(jié)點ni-1相切的位置之后的坐標(biāo)為(x,y)。各個節(jié)點的初始坐標(biāo)已知,(x,y)未知。因為ni往ni+1方向移動,所以有yi+1-yixi+1-xi=y-yix-xi---(1-1)]]>ni與ni-1相切,有(x-xi-1)2+(y-yi-1)2=(2×R)2(1-2)聯(lián)立(2-1)和(2-2)兩個等式即可求解(x,y)。通過(x,y)可求得節(jié)點ni的移動距離,即相切距離,為dtani=(x-xi)2+(y-yi)2---(1-3)]]>此外,還需計算ni的最大移動距離。假設(shè)節(jié)點ni所具有的能量為ei,可用于移動的能量(稱為額外能量)為ei-et(ei>et)。并假設(shè)節(jié)點每移動單位距離需要耗費的能量為ed,則ni可以移動的最大距離為dmaxi=ei-eted---(1-4)]]>最后取dtani和dmaxi二者之中的較小值為節(jié)點的最終移動距離。這樣既保證了節(jié)點之間的原有連接不被破壞,也保證了節(jié)點在移動之后還能有足夠的能量繼續(xù)為網(wǎng)絡(luò)提供服務(wù)。如圖1所示,本發(fā)明所述的無線傳感器網(wǎng)絡(luò)能量有效的自愈修復(fù)算法(SER)步驟如下:步驟1.初始化。在節(jié)點部署之后,假設(shè)節(jié)點可以通過GPS等技術(shù)獲取自己所在的位置坐標(biāo)。通過解析路由表,每個節(jié)點都知道網(wǎng)絡(luò)中哪些節(jié)點為關(guān)鍵節(jié)點。步驟2.故障檢測。每個節(jié)點定期地向其鄰居節(jié)點發(fā)送心跳消息。一旦某個節(jié)點的鄰居節(jié)點在一段時間內(nèi)沒有收到該節(jié)點發(fā)送的心跳消息,則認(rèn)為該節(jié)點發(fā)生故障。故障節(jié)點的鄰居節(jié)點判斷故障節(jié)點是否為關(guān)鍵節(jié)點,若為關(guān)鍵節(jié)點,則執(zhí)行以下步驟。步驟3.移動鄰居節(jié)點。假設(shè)故障節(jié)點為nF,該節(jié)點有m個鄰居節(jié)點,每個鄰居節(jié)點具有不同的初始能量ei。設(shè)nF的鄰居節(jié)點集合為Snb={n1,n2,…,nm}。當(dāng)鄰居節(jié)點檢測到nF發(fā)生故障時,鄰居節(jié)點中具有最大能量值的節(jié)點ni計算自己的dtani和dmaxi的值(ei>et),并選擇其中較小的一個值為其移動距離。若dtani值較小,則說明ni需要朝故障節(jié)點方向移動到與其鄰居節(jié)點相切的位置;反之,若dmaxi值較小,則說明ni朝故障節(jié)點方向移動dmaxi距離。無論節(jié)點移動dtani或dmaxi距離,都不會破壞節(jié)點與其鄰居節(jié)點之間的連接。移動結(jié)束之后,ni判斷自己是否修復(fù)了網(wǎng)絡(luò)連接。若已經(jīng)修復(fù)完成,整個網(wǎng)絡(luò)可以正常通信,則終止修復(fù)算法;若ni移動之后網(wǎng)絡(luò)連接還未修復(fù)完成,則具有第二高能量值的節(jié)點nj計算自己的dtanj和dmaxj的值后,執(zhí)行與ni相同的步驟。若nF所有的鄰居節(jié)點都移動之后,網(wǎng)絡(luò)連接仍未修復(fù)完成,即對應(yīng)圖1中,按照能量大小,逐一移動故障關(guān)鍵節(jié)點的鄰居節(jié)點,并逐一從該Snb={n1,n2,…,nm}中刪除,直到鄰居節(jié)點均移動(即集合Snb={n1,n2,…,nm}為空時),若網(wǎng)絡(luò)連接仍未修復(fù),則執(zhí)行步驟4。步驟4.移動最小塊。最小塊指的是在由故障節(jié)點斷開而導(dǎo)致的所有分塊當(dāng)中具有節(jié)點數(shù)目最少的子塊。當(dāng)故障節(jié)點的鄰居節(jié)點都移動完畢之后網(wǎng)絡(luò)連接還未被修復(fù),此時需要找到所有分塊中的最小塊,將處于最小塊的節(jié)點向故障節(jié)點方向移動,直至所有子塊能夠相互通信。具體做法為:處于最小塊中的故障節(jié)點對應(yīng)的鄰居節(jié)點向故障節(jié)點移動,逐一移動整個最小塊的所有節(jié)點,直到鄰居節(jié)點可以與故障節(jié)點的其他鄰居節(jié)點進(jìn)行通信。若鄰居節(jié)點的移動帶來了新的連接的斷開,則將其他節(jié)點朝故障節(jié)點方向移動,直至完成網(wǎng)絡(luò)連接的修復(fù)。在本發(fā)明的步驟3中,所有滿足能量閾值的節(jié)點在連接修復(fù)完成之前均需要向故障節(jié)點方向移動。算法通過設(shè)置閾值的方式,避免某個節(jié)點將能量提前耗盡,也通過這種方法使得參與修復(fù)的每個節(jié)點的能量達(dá)到相對的均衡。步驟4表明,一個節(jié)點的移動可能導(dǎo)致一批節(jié)點都需要移動,但因為這些節(jié)點均處于最小塊(節(jié)點數(shù)目最少的子塊),所以總的移動的節(jié)點數(shù)目將不會太多。此外,從修復(fù)算法的各個步驟中可以看出,不管是移動鄰居節(jié)點或是移動最小塊,節(jié)點之間的最短路徑都沒有被延長。令為節(jié)點在修復(fù)過程中移動的總距離。假設(shè)修復(fù)算法執(zhí)行完畢后共有個節(jié)點進(jìn)行移動,則這些節(jié)點的總的移動距離為Dsum=Σi=1kdi---(3-1)]]>由于每個節(jié)點移動單位距離需要耗費的能量為,因此這些節(jié)點需耗費的總能量為Esum=ed×Dsum=ed×Σi=1kdi---(3-2)]]>每個節(jié)點初始的能量為,移動之后剩余的能量為ei-ed×di(3-3)每個節(jié)點移動之后的平均剩余能量為Ea=1kΣi=1k(ei-ed×di)---(3-4)]]>剩余能量的方差為V=1kΣi=1k(ei-ed×di-Ea)2=1kΣi=1k(ei-ed×di-1kΣi=1k(ei-ed×di))2---(3-5)]]>修復(fù)之后,這些移動的節(jié)點所能存活的時間為T=min{ei-ed×di}es,1≤i≤k.---(3-6)]]>將本發(fā)明與LeDiR算法進(jìn)行比較。在仿真實驗中,節(jié)點部署的區(qū)域為固定大小。圖4描述的是固定區(qū)域內(nèi)節(jié)點的數(shù)目與節(jié)點總移動距離之間的關(guān)系。從圖4中可以看出,隨著節(jié)點數(shù)目的增大,兩種修復(fù)算法的總移動距離均隨之減小。這是因為當(dāng)區(qū)域面積固定時,部署的節(jié)點數(shù)目越多,節(jié)點越密集,節(jié)點之間相隔的距離越小。當(dāng)某個節(jié)點發(fā)生故障時,其鄰居節(jié)點所需移動的距離也將縮短。另一方面,從圖4也可以看出,本發(fā)明的SER算法總移動距離小于LeDiR算法。這是因為LeDiR直接移動整個最小塊,這種方法等同于讓單個鄰居節(jié)點移動較長的距離來修復(fù)網(wǎng)絡(luò)連接。單個節(jié)點移動較長距離很大程度上引起了新的連接的斷開,此時需要其他單個節(jié)點也移動較長的距離來修復(fù)。也就是說,LeDiR算法的修復(fù)過程像是單個節(jié)點的移動修復(fù),而本發(fā)明的SER算法類似于各個鄰居節(jié)點之間協(xié)同工作來實現(xiàn)網(wǎng)絡(luò)連接修復(fù),鄰居節(jié)點之間的協(xié)同工作能更好地縮短移動距離,因此本發(fā)明的SER算法比LeDiR算法的節(jié)點總移動距離更短。從公式可以看出,所有移動節(jié)點所消耗的能量與節(jié)點所移動的距離成正比,因此圖5的曲線類似于圖4的曲線。也就是說,當(dāng)一個固定區(qū)域內(nèi)部署的節(jié)點數(shù)目增加時,節(jié)點之間的距離變小,當(dāng)某個節(jié)點發(fā)生故障后,參與修復(fù)的所有節(jié)點所移動的總距離變小,節(jié)點所消耗的總能量也變小。從圖5中可以看出,本發(fā)明的SER算法的節(jié)點所耗費的總能量小于LeDiR算法。這是因為,本發(fā)明的SER算法的節(jié)點所移動的總距離小于LeDiR算法節(jié)點移動的總距離。圖6描述的是固定區(qū)域內(nèi)節(jié)點的數(shù)目與總移動節(jié)點數(shù)之間的關(guān)系。在實際應(yīng)用中,固定區(qū)域中部署的節(jié)點數(shù)目越多,節(jié)點之間的距離便隨之減小。當(dāng)某個節(jié)點發(fā)生故障時,修復(fù)過程中所需移動的節(jié)點數(shù)目便減少了。圖6的曲線趨勢符合實際應(yīng)用情況。從圖6中也可以看出,本發(fā)明的SER算法移動的節(jié)點數(shù)目多于LeDiR算法。這是因為LeDiR算法在進(jìn)行網(wǎng)絡(luò)連接修復(fù)時,直接移動處于最小子塊的鄰居節(jié)點。在最壞的情況下,LeDiR算法需要移動的節(jié)點數(shù)目為最小子塊中所有節(jié)點的個數(shù),而本發(fā)明的SER算法在最壞的情況下需要移動的節(jié)點數(shù)目為最小子塊中所有節(jié)點的個數(shù)與故障節(jié)點的所有鄰居節(jié)點個數(shù)之和。因此從最壞的情況來看,本發(fā)明的SER算法所移動的節(jié)點數(shù)目將會大于LeDiR算法所移動的節(jié)點數(shù)目。而一般的情況下,本發(fā)明的SER算法因為需要幾乎所有鄰居的協(xié)同合作,而LeDiR算法只需移動最小塊的部分節(jié)點,所以從一般情況下來看,本發(fā)明的SER算法所需移動的節(jié)點數(shù)目也會大于LeDiR算法。節(jié)點的能量方差反映的是節(jié)點的能量均衡情況。當(dāng)網(wǎng)絡(luò)中各個節(jié)點所擁有的能量越均衡時,網(wǎng)絡(luò)越不容易因為單個節(jié)點的能量耗盡而產(chǎn)生新的網(wǎng)絡(luò)故障問題,網(wǎng)絡(luò)的存活時間就越長。因此,節(jié)點的能量方差間接地反映了網(wǎng)絡(luò)的生存周期。由方差的定義可知,方差越小表示各個數(shù)值越均衡。所以,節(jié)點的能量方差越小,代表了節(jié)點的剩余能量越均衡,網(wǎng)絡(luò)的生存周期便越長。從圖7中可以看出,與LeDiR算法相比,本發(fā)明的SER算法修復(fù)之后的網(wǎng)絡(luò)具有更小的方差值,說明在本發(fā)明的SER算法修復(fù)之后的網(wǎng)絡(luò)中,各個節(jié)點所具有的能量更均衡,網(wǎng)絡(luò)能夠有更長的生存周期。本發(fā)明提供的無線傳感器網(wǎng)絡(luò)能量有效的自愈修復(fù)方法,可以平衡節(jié)點能耗,延長網(wǎng)絡(luò)生存周期。以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運用在相關(guān)的
技術(shù)領(lǐng)域:
,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。當(dāng)前第1頁1 2 3