本發(fā)明屬于無線傳感網(wǎng)技術(shù)領(lǐng)域,具體涉及一種適用于大型野外環(huán)境的無線傳感網(wǎng)絡(luò)的路由方法。
背景技術(shù):
現(xiàn)階段,無線傳感網(wǎng)絡(luò)廣泛應(yīng)用于軍事,環(huán)境,生物,健康,工業(yè)控制等領(lǐng)域。由諸多體積小,價格低廉的節(jié)點通過自組形成的網(wǎng)絡(luò)具有在各類環(huán)境下進(jìn)行感知,計算和傳輸數(shù)據(jù)的優(yōu)良能力。無線傳感網(wǎng)中組網(wǎng)所用的節(jié)點一般都由控制器,內(nèi)存,通信模塊,感知/計算模塊以及能量模塊組成。其中控制器負(fù)責(zé)控制節(jié)點的工作和休眠周期,使節(jié)點在工作一段時間后自動進(jìn)入休眠狀態(tài)來節(jié)省能耗。而內(nèi)存用來存儲節(jié)點收到的感知信息以及計算結(jié)果,通過通信模塊進(jìn)行數(shù)據(jù)傳輸。
在不同的應(yīng)用場景下,我們對網(wǎng)絡(luò)的延遲,吞吐以及能耗等關(guān)鍵因素的要求也不盡相同,本發(fā)明討論的應(yīng)用背景是在大型的野外環(huán)境監(jiān)測場景下進(jìn)行有效的數(shù)據(jù)傳輸過程。在一些野外環(huán)境下,諸如深山,森林等場景,為了保護(hù)其中的動植物,研究其生存軌跡以及生活環(huán)境,或者在一些偏僻的地區(qū)有需要保護(hù)的古遺址,這時需要一個穩(wěn)定的長時間的環(huán)境數(shù)據(jù)采集,因為環(huán)境的限制,不可能頻繁地去更換節(jié)點的供電電池,于是在這些地方部署的大型監(jiān)測無線傳感網(wǎng)需要很低很平衡的能量消耗,從而提升整個網(wǎng)絡(luò)的生存周期。設(shè)計合理的路由策略將會顯著降低節(jié)點間的通信能耗。
機會路由策略是近年來常用于無線傳感網(wǎng)的路由協(xié)議,它以其轉(zhuǎn)發(fā)數(shù)據(jù)時的靈活性給無線傳感網(wǎng)帶來了諸如低延遲,低能耗等優(yōu)點。但是現(xiàn)有的機會路由協(xié)議并不能很好地適用于野外大型無線傳感網(wǎng)絡(luò)監(jiān)測環(huán)境,例如文獻(xiàn)[1]中設(shè)計的路由協(xié)議雖然提出了一種具有一定能量效率的方案,但是其對 能量消耗的討論的不夠全面,而文獻(xiàn)[2]中的方法則將轉(zhuǎn)發(fā)過于集中至具有某些特性的節(jié)點從而造成網(wǎng)絡(luò)能量的不均衡,還有文獻(xiàn)中的方法都有著一定的優(yōu)勢,但卻并不完全適用于本發(fā)明的應(yīng)用背景。
因此,人們需要一種能夠在野外監(jiān)測環(huán)境下可以長時間穩(wěn)定監(jiān)測數(shù)據(jù)且進(jìn)行低功耗可靠傳輸?shù)穆酚杉夹g(shù),并解決上述相關(guān)技術(shù)中的問題。
技術(shù)實現(xiàn)要素:
針對上述現(xiàn)有文獻(xiàn)中方法和協(xié)議應(yīng)用于長期野外監(jiān)測環(huán)境下存在的缺陷或不足,本發(fā)明的目的在于,提供一種適用于大型野外環(huán)境的無線傳感網(wǎng)絡(luò)的路由方法。
為了實現(xiàn)上述任務(wù),本發(fā)明采用如下技術(shù)解決方案予以實現(xiàn):
一種適用于大型野外環(huán)境的無線傳感網(wǎng)絡(luò)的路由方法,具體包括以下步驟:
步驟1,對無線傳感網(wǎng)絡(luò)中的節(jié)點進(jìn)行初始化,得到每個節(jié)點的預(yù)期能耗值和每個節(jié)點的鄰居節(jié)點的占空比之和,并記錄每個節(jié)點的睡眠時刻;具體包括:
1.1,打開無線傳感網(wǎng)絡(luò)中的所有節(jié)點的通信模塊,將基站作為當(dāng)前發(fā)出節(jié)點;
1.2,當(dāng)前發(fā)出節(jié)點向其周圍節(jié)點廣播第一探測包,將收到第一探測包的每個節(jié)點作為當(dāng)前接收節(jié)點;當(dāng)前接收節(jié)點若在自身反應(yīng)時間內(nèi)未接收到第一探測包,則根據(jù)探測包生成規(guī)則生成自己的探測包,并將探測包廣播出去;
所述的第一探測包中包括當(dāng)前發(fā)出節(jié)點的預(yù)期能耗值、當(dāng)前發(fā)出節(jié)點的鄰居節(jié)點的占空比、當(dāng)前發(fā)出節(jié)點的睡眠時刻和當(dāng)前發(fā)出節(jié)點的占空比;
所述的探測包生成規(guī)則為:對于任意一個節(jié)點,根據(jù)公式(1)計算該節(jié)點的預(yù)期能耗值,根據(jù)公式(4)計算該節(jié)點的鄰居節(jié)點的占空比之和;該節(jié)點將自己的預(yù)期能耗值、自己的鄰居節(jié)點的占空比之和、睡眠時刻以及 自己的占空比組成自己探測包;
所述的自身的反應(yīng)時間為:對于任意一個節(jié)點,其自身的反應(yīng)時間T1=2D*L,其中L表示該網(wǎng)絡(luò)中節(jié)點的總周期長度,D表示該節(jié)點自身的占空比;
C=Ct+Cf (1)
式(1)中,Ct值代表該節(jié)點廣播探測包時,其鄰居節(jié)點集合中至少一個節(jié)點接收到測包過程預(yù)計所消耗的能量;其中Cf表示該節(jié)點廣播的探測包被其鄰居節(jié)點轉(zhuǎn)發(fā)的過程中預(yù)計消耗的能量;
其中Ct通過公式(2)計算所得,
式(2)中w表示該節(jié)點預(yù)設(shè)好的發(fā)送功率值,Sum表示該節(jié)點的鄰居節(jié)點的個數(shù);ei表示該節(jié)點和其鄰居節(jié)點i的鏈路傳輸時失敗的概率;
其中Cf通過公式(3)計算所得,
式(3)中,Ci表示該節(jié)點的鄰居節(jié)點i的預(yù)期消耗能量;ei表示該節(jié)點和其鄰居節(jié)點i之間的鏈路傳輸時失敗的概率;ej表示該節(jié)點和其鄰居節(jié)j之間的鏈路傳輸時失敗的概率;e1表示該節(jié)點和其鄰居節(jié)點集合中第一個鄰居節(jié)點之間的鏈路傳輸時失敗的概率;C1表示第一個收到該節(jié)點發(fā)出的探測包的鄰居節(jié)點的預(yù)期消耗能量;Sum表示該節(jié)點的鄰居節(jié)點的個數(shù);
其中該節(jié)點所有鄰居節(jié)點的占空比之和通過公式(4)計算所得:
式(4)中,Twake表示該節(jié)點的工作周期;表示該節(jié)點的鄰居節(jié)點集中的任意兩個節(jié)點h和k的工作周期的重疊部分的時間,Nei代表該節(jié)點的鄰居節(jié)點集合;h,k∈Nei表示h、k是該節(jié)點的鄰居節(jié)點集合中的任意兩個鄰居節(jié)點h和k;
所述的工作周期為:對于任意一個節(jié)點h,其工作周期可表示為[Tsleep+L,Tsleep+L+Dh*L],其中,Tsleep表示該節(jié)點h進(jìn)入睡眠狀態(tài)的時刻,Dh表示該節(jié)點h的占空比;L表示該網(wǎng)絡(luò)中節(jié)點的總周期長度;
1.3,將收到當(dāng)前接收節(jié)點發(fā)出的探測包的節(jié)點作為當(dāng)前發(fā)出節(jié)點,重復(fù)步驟1.2;直到無線傳感網(wǎng)絡(luò)中所有節(jié)點都收到探測包,記錄每個節(jié)點的預(yù)期能耗值、每個節(jié)點的鄰居節(jié)點的占空比之和、每個節(jié)點的占空比和每個節(jié)點的睡眠時刻;
步驟2:在數(shù)據(jù)傳輸過程中,將首先要發(fā)送數(shù)據(jù)的節(jié)點作為當(dāng)前節(jié)點,確定當(dāng)前節(jié)點的鄰居節(jié)點集合,重新計算當(dāng)前節(jié)點的鄰居節(jié)點的占空比之和;根據(jù)當(dāng)前節(jié)點的鄰居節(jié)點集合確定該節(jié)點的轉(zhuǎn)發(fā)候選集,并在轉(zhuǎn)發(fā)候選集中確定一個轉(zhuǎn)發(fā)節(jié)點;具體包括:
2.1,在每個工作周期內(nèi),將首先要發(fā)送數(shù)據(jù)的節(jié)點作為當(dāng)前節(jié)點,當(dāng)前節(jié)點廣播探測包,收到探測包的每個節(jié)點將初始化得到的預(yù)期能耗值、該節(jié)點的鄰居節(jié)點的占空比之和、該節(jié)點的占空比回復(fù)給當(dāng)前節(jié)點;將收到探測包的所有節(jié)點作為當(dāng)前節(jié)點的鄰居節(jié)點,所有的鄰居節(jié)點組成當(dāng)前節(jié)點的鄰居節(jié)點集合;
2.2,生成一個空集合作為候選集,按照預(yù)期能耗值從小到大的順序依次將每個鄰居節(jié)點加入候選集;
每加入一個鄰居節(jié)點后,將當(dāng)前節(jié)點作為當(dāng)前接收節(jié)點,將得到的候選集作為當(dāng)前接收節(jié)點的鄰居節(jié)點集合,根據(jù)公式(1)重新計算當(dāng)前節(jié)點的 預(yù)期能耗值;當(dāng)加入某個鄰居節(jié)點后,計算的當(dāng)前節(jié)點的預(yù)期能耗值大于上次計算的當(dāng)前節(jié)點的預(yù)期能耗值時,結(jié)束加入過程且不將本次的鄰居節(jié)點加入候選集,將此時得到的候選集作為轉(zhuǎn)發(fā)候選集;
2.3,計算轉(zhuǎn)發(fā)候選集中所有鄰居節(jié)點的預(yù)期能耗值之和,選取最后一個加入轉(zhuǎn)發(fā)候選集中的鄰居節(jié)點,將該鄰居節(jié)點的預(yù)期能耗值作為基準(zhǔn)能耗值;
當(dāng)前節(jié)點將基準(zhǔn)能耗值和轉(zhuǎn)發(fā)候選集中所有鄰居節(jié)點的預(yù)期能耗值之和作為信息廣播給其周圍節(jié)點;收到該信息的每個節(jié)點將基準(zhǔn)能耗值和自身能耗值比較,找到自身的能耗值小于或等于基準(zhǔn)能耗值的節(jié)點作為候選節(jié)點;
2.4,計算每個候選節(jié)點的退避時間,每個候選節(jié)點執(zhí)行退避過程并向當(dāng)前節(jié)點回復(fù)ACK,選取最先回復(fù)ACK的候選節(jié)點作為轉(zhuǎn)發(fā)節(jié)點,當(dāng)前節(jié)點將待發(fā)送數(shù)據(jù)發(fā)送給轉(zhuǎn)發(fā)節(jié)點;
所述的退避時間B通過公式(5)計算所得,對于任意一個候選節(jié)點,
B=Cost*Bmax (5)
式(6)中Cost代表通信代價,通過公式(6)計算所得,Bmax代表該候選節(jié)點的MAC層預(yù)定義的最大的隨機退避時間常量;
式(6)中:表示該候選節(jié)點的預(yù)期能耗值與轉(zhuǎn)發(fā)候選集中所有節(jié)點的預(yù)期能耗值之和的比;
式(6)中,RoW表示該候選節(jié)點在進(jìn)行下一次轉(zhuǎn)發(fā)時要等待的時間代價,其中RoW=1-RoF*;其中RoF*表示當(dāng)前節(jié)點的鄰居節(jié)點的占空比之和;
RoF*的計算方法為:若當(dāng)前節(jié)點在自身的反應(yīng)時間內(nèi)未收到任意一個鄰居節(jié)點的回復(fù),則根據(jù)公式(4)計算當(dāng)前節(jié)點的鄰居節(jié)點占空比之和,其中在確定任意一個節(jié)點h的工作周期時,該節(jié)點的Tsleep時刻為該節(jié)點在本工作周期開始的時刻加上該節(jié)點的Twake時段;其中Twake表示該節(jié)點h在本工作周期的工作時段;
式(6)中,α,b表示該候選節(jié)點在整個轉(zhuǎn)發(fā)過程中通信耗能和等待能耗所占的比重系數(shù),其中α=0.6,b=0.4;
步驟3:將步驟3得到的轉(zhuǎn)發(fā)節(jié)點作為當(dāng)前節(jié)點,重復(fù)執(zhí)行步驟2,直到找到所有的轉(zhuǎn)發(fā)節(jié)點,數(shù)據(jù)包通過所有的轉(zhuǎn)發(fā)節(jié)點完成數(shù)據(jù)傳輸過程。
上述技術(shù)方案和現(xiàn)有技術(shù)相比,具有的以下技術(shù)效果:
1、提出了一個考慮轉(zhuǎn)發(fā)過程和轉(zhuǎn)發(fā)前的等待過程代價相結(jié)合的傳輸代價度量方法,使用該方法選擇的轉(zhuǎn)發(fā)候選集以及轉(zhuǎn)發(fā)節(jié)點,真正全面地考慮了候選的鄰居節(jié)點的預(yù)期能耗,使得當(dāng)前節(jié)點每次轉(zhuǎn)發(fā)時選擇的轉(zhuǎn)發(fā)節(jié)點消耗最少的能量;
2、本發(fā)明在轉(zhuǎn)發(fā)候選集中確定轉(zhuǎn)發(fā)節(jié)點時,考慮到了退避機制,選擇自身的C值小于或等于基準(zhǔn)C值時的鄰居節(jié)點,計算了這些鄰居節(jié)點的退避時間,減少了MAC層碰撞的可能性,提高了通信成功率,減少了重傳次數(shù),同樣減少了網(wǎng)絡(luò)的能量消耗;
3、本發(fā)明利用退避機制實現(xiàn)了當(dāng)前節(jié)點單播給選定的轉(zhuǎn)發(fā)節(jié)點的過程,從而減少了數(shù)據(jù)包在網(wǎng)絡(luò)中的副本數(shù)量,降低了網(wǎng)絡(luò)的無效吞吐,提升了網(wǎng)絡(luò)的生存周期;
4、本方法通過選擇轉(zhuǎn)發(fā)過程中通信代價最小的鄰居節(jié)點完成轉(zhuǎn)發(fā)過程從而降低了能量消耗,延長了網(wǎng)絡(luò)生存周期,并且隨著網(wǎng)絡(luò)的穩(wěn)定運行,預(yù)期能量和鄰居節(jié)點占空比的估計將越來越準(zhǔn)確,特別適合需要長期監(jiān)控的大型野外環(huán)境。
附圖說明
圖1是本發(fā)明中的路由方法流程圖;
圖2是本發(fā)明初始化過程示意圖;
圖3是本發(fā)明轉(zhuǎn)發(fā)節(jié)點的選取示意圖。
具體實施方式
本發(fā)明是一種適用于大型野外環(huán)境的無線傳感網(wǎng)絡(luò)的路由方法,本發(fā)明的路由方法適用于滿足如下條件的無線傳感網(wǎng)絡(luò):
1、網(wǎng)絡(luò)由基站網(wǎng)關(guān)和帶傳感器的眾多節(jié)點組成,節(jié)點具有工作和休眠兩種周期;
2、所有節(jié)點分布于一個三維空間中,整個網(wǎng)絡(luò)有且只有一個基站,所有節(jié)點發(fā)送和轉(zhuǎn)發(fā)的數(shù)據(jù)匯聚于此;
3、節(jié)點間通信為了節(jié)省能量,提高傳輸成功率,使用機會路由方法進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),即節(jié)點每次轉(zhuǎn)發(fā)包時根據(jù)計算規(guī)則可以選擇候選集中的任意一個節(jié)點進(jìn)行轉(zhuǎn)發(fā),而不是像傳統(tǒng)路由方法那樣固定下一跳節(jié)點;
4、每個節(jié)點擁有唯一標(biāo)示的ID號,不同節(jié)點擁有相同的總周期長度L,但每個節(jié)點的占空比D可能不同;
5、本方法用于大型長期環(huán)境監(jiān)測,可以有一定的數(shù)據(jù)延遲,但需要較長的網(wǎng)絡(luò)生存周期。
本發(fā)明中的每個節(jié)點的睡眠時間Tsleep均指的是時刻,工作周期指的是兩個時刻之間的時間段,Twake指的是該節(jié)點在一個工作周期內(nèi)的工作時間段,兩個節(jié)點工作周期的重疊部分時間指的是時間段。
實施例1
本實施例以某野外無線傳感網(wǎng)絡(luò)為例,該無線傳感網(wǎng)絡(luò)滿足本發(fā)明的路由方法適用的網(wǎng)絡(luò)模型。
步驟1,對無線傳感網(wǎng)絡(luò)中的節(jié)點進(jìn)行初始化,得到每個節(jié)點的預(yù)期能耗值和每個節(jié)點的鄰居節(jié)點的占空比之和,并記錄每個節(jié)點的睡眠時刻;具 體包括:
1.1,打開無線傳感網(wǎng)絡(luò)中的所有節(jié)點的通信模塊,將基站作為當(dāng)前發(fā)出節(jié)點;
1.2,當(dāng)前發(fā)出節(jié)點向其周圍節(jié)點廣播第一探測包,將收到第一探測包的每個節(jié)點作為當(dāng)前接收節(jié)點;當(dāng)前接收節(jié)點若在自身反應(yīng)時間內(nèi)未接受接到第一探測包,則根據(jù)探測包生成規(guī)則生成自己的探測包,并將該探測包廣播出去;
所述的探測包中包括當(dāng)前發(fā)出節(jié)點的預(yù)期能耗值、當(dāng)前發(fā)出節(jié)點的鄰居節(jié)點的占空比、當(dāng)前發(fā)出節(jié)點的睡眠時刻和當(dāng)前發(fā)出節(jié)點的占空比;
所述的探測包生成規(guī)則為:對于任意一個節(jié)點,根據(jù)公式(1)計算該節(jié)點的預(yù)期能耗值,根據(jù)公式(4)計算該節(jié)點的鄰居節(jié)點的占空比之和;該節(jié)點將自己的預(yù)期能耗值、自己的鄰居節(jié)點的占空比之和、睡眠時刻以及自己的占空比組成自己探測包;
所述的自身的反應(yīng)時間為:對于任意一個當(dāng)前接收節(jié)點,其自身的反應(yīng)時間T1=2D*L,其中L表示該網(wǎng)絡(luò)中節(jié)點的總周期長度,D表示該節(jié)點自身的占空比;
C=Ct+Cf (1)
式(1)中,Ct值代表該節(jié)點廣播探測包時,其鄰居節(jié)點集合中至少一個節(jié)點接收到測包過程預(yù)計所消耗的能量;其中Cf表示該節(jié)點廣播的探測包被其鄰居節(jié)點轉(zhuǎn)發(fā)的過程中預(yù)計消耗的能量;
其中Ct通過公式(2)計算所得,
式(2)中w表示該當(dāng)前接收節(jié)點預(yù)設(shè)好的發(fā)送功率值,Sum表示該 當(dāng)前接收節(jié)點的鄰居節(jié)點的個數(shù);ei表示該當(dāng)前接收節(jié)點和其鄰居節(jié)點i的鏈路傳輸時失敗的概率;
其中Cf通過公式(3)計算所得,
式(3)中,Ci表示該當(dāng)前接收節(jié)點的鄰居節(jié)點i的預(yù)期消耗能量;ei表示該當(dāng)前接收節(jié)點和其鄰居節(jié)點i之間的鏈路傳輸時失敗的概率;ej表示該當(dāng)前接收節(jié)點和其鄰居節(jié)j之間的鏈路傳輸時失敗的概率;e1表示該當(dāng)前接收節(jié)點和其鄰居節(jié)點集合中第一個鄰居節(jié)點之間的鏈路傳輸時失敗的概率;C1表示第一個收到該當(dāng)前接收節(jié)點發(fā)出的探測包的鄰居節(jié)點的預(yù)期消耗能量;Sum表示該當(dāng)前接收節(jié)點的鄰居節(jié)點的個數(shù);
其中該節(jié)點所有鄰居節(jié)點的占空比之和通過公式(4)計算所得:
式(4)中,Twake表示該節(jié)點的工作周期;表示該節(jié)點的鄰居節(jié)點集中的任意兩個節(jié)點h和k的工作周期的重疊部分的時間,Nei代表該節(jié)點的鄰居節(jié)點集合;h,k∈Nei表示h、k是該節(jié)點的鄰居節(jié)點集合中的任意兩個鄰居節(jié)點h和k;
所述的工作周期為:對于任意一個節(jié)點h,其工作周期可表示為[Tsleep+L,Tsleep+L+Dh*L],其中,Tsleep表示該節(jié)點h進(jìn)入睡眠狀態(tài)的時刻,Dh表示該節(jié)點h的占空比;L表示該網(wǎng)絡(luò)中節(jié)點的總周期長度;
1.3,將收到當(dāng)前接收節(jié)點發(fā)出的探測包的節(jié)點作為當(dāng)前發(fā)出節(jié)點,重復(fù)步驟1.2;直到無線傳感網(wǎng)絡(luò)中所有節(jié)點都收到探測包,記錄每個節(jié)點的 預(yù)期能耗值、每個節(jié)點的鄰居節(jié)點的占空比之和、每個節(jié)點的占空比和每個節(jié)點的睡眠時刻;
如圖1,基站廣播探測包,節(jié)點1、節(jié)點2、節(jié)點3均收到探測包,本實施例中設(shè)定每個節(jié)點預(yù)設(shè)好的發(fā)送功率值w=1,每個節(jié)點的總周期長度L值均為10s,節(jié)點(包括基站,基站是特殊的節(jié)點)和其鄰居節(jié)點i之間的鏈路傳輸時失敗的概率ei=0.5,對于節(jié)點2來說,此時只有基站向其廣播數(shù)據(jù)包,則Sum=1,根據(jù)探測包生成規(guī)則,通過公式(2)計算出節(jié)點2的Ct值為2,并且根據(jù)公式(3)可以計算出節(jié)點2的Cf值為0,而根據(jù)公式(4)可以計算出節(jié)點2的鄰居節(jié)點占空比之和為1。
對于節(jié)點1、2、3來說,其鄰居節(jié)點只有基站,基站的Dsink=100%,Csink=0,RoFsink=0,Tsleep=0;所以此時Ci=0,同理,根據(jù)探測包生成規(guī)則,得到節(jié)點1和節(jié)點3的C值也為2。
節(jié)點4依次收到節(jié)點4依次收到節(jié)點1、2、3廣播的探測包,此時Sum=3,通過公式(2)計算節(jié)點4的Ct值為1.14,通過公式(3)計算得節(jié)點4的Cf為2,通過公式(1)計算出節(jié)點(4)的自己的預(yù)期能耗值C為3.14;
節(jié)點1、節(jié)點2和節(jié)點3自身的D值分別為20%,10%和30%,將每個節(jié)點發(fā)送探測包的時刻作為其睡眠時刻Tsleep,得到節(jié)點1、節(jié)點2和節(jié)點3的睡眠時間Tsleep分別為第50s,48s和51s,這里的睡眠時間Tsleep均指的是時刻,通過公式Twake=D*L計算出節(jié)點1、節(jié)點2和節(jié)點3分別為2s、1s以及3s;節(jié)點4依次在第51s,49s和52s收到節(jié)點1、2、3的探測包,根據(jù)公式[Tsleep+L,Tsleep+L+Dh*L]可以計算出節(jié)點1,2,3的工作周期分別為[60,62],[59,60],[61,64],那么節(jié)點1和節(jié)點2的工作周期的重疊部分的時間為0,節(jié)點1和節(jié)點3的工作周期的重疊部分的時間為1s,節(jié)點和節(jié)點3的工作周期的重疊部分的時間為0,于是根據(jù)公式(4)可以計算出當(dāng)前節(jié)點4的所有鄰居節(jié)點的占空比之和為50%。
重復(fù)上述方法計算得到所有節(jié)點的預(yù)期能耗值和該節(jié)點所有鄰居節(jié)點的占空比之和,記錄每個節(jié)點的睡眠時刻。
步驟2:在數(shù)據(jù)傳輸過程中,將首先要發(fā)送數(shù)據(jù)的節(jié)點作為當(dāng)前節(jié)點,確定當(dāng)前節(jié)點的鄰居節(jié)點集合,重新計算當(dāng)前節(jié)點的鄰居節(jié)點的占空比之和;根據(jù)當(dāng)前節(jié)點的鄰居節(jié)點集合確定該節(jié)點的轉(zhuǎn)發(fā)候選集,并在轉(zhuǎn)發(fā)候選集中確定一個轉(zhuǎn)發(fā)節(jié)點;具體包括:
2.1,在每個工作周期內(nèi),將首先要發(fā)送數(shù)據(jù)的節(jié)點作為當(dāng)前節(jié)點,當(dāng)前節(jié)點廣播探測包,收到探測包的每個節(jié)點將初始化得到的預(yù)期能耗值、該節(jié)點的鄰居節(jié)點的占空比之和、該節(jié)點的占空比回復(fù)給當(dāng)前節(jié)點;將收到探測包的所有節(jié)點作為當(dāng)前節(jié)點的鄰居節(jié)點,所有的鄰居節(jié)點組成當(dāng)前節(jié)點的鄰居節(jié)點集合;
2.2,生成一個空集合作為候選集,按照預(yù)期能耗值從小到大的順序依次將每個鄰居節(jié)點加入候選集;
每加入一個鄰居節(jié)點后,將當(dāng)前節(jié)點作為當(dāng)前接收節(jié)點,將得到的候選集作為當(dāng)前接收節(jié)點的鄰居節(jié)點集合,根據(jù)公式(1)重新計算當(dāng)前節(jié)點的預(yù)期能耗值;當(dāng)加入某個鄰居節(jié)點后,計算的當(dāng)前節(jié)點的預(yù)期能耗值大于上次計算的當(dāng)前節(jié)點的預(yù)期能耗值時,結(jié)束加入過程且不將本次的鄰居節(jié)點加入候選集,將此時得到的候選集作為轉(zhuǎn)發(fā)候選集;
2.3,計算轉(zhuǎn)發(fā)候選集中所有鄰居節(jié)點的預(yù)期能耗值之和,選取最后一個加入轉(zhuǎn)發(fā)候選集中的鄰居節(jié)點,將該鄰居節(jié)點的預(yù)期能耗值作為基準(zhǔn)能耗值;
當(dāng)前節(jié)點將基準(zhǔn)能耗值和轉(zhuǎn)發(fā)候選集中所有鄰居節(jié)點的預(yù)期能耗值廣作為信息播給其周圍節(jié)點;收到該信息的每個節(jié)點將基準(zhǔn)能耗值和自身能耗值比較,找到自身的能耗值小于或等于基準(zhǔn)能耗值的節(jié)點作為候選節(jié)點;
2.4,計算每個候選節(jié)點的退避時間,每個候選節(jié)點執(zhí)行退避過程并向當(dāng)前節(jié)點回復(fù)ACK,選取最先回復(fù)ACK的候選節(jié)點作為轉(zhuǎn)發(fā)節(jié)點,當(dāng)前節(jié) 點將待發(fā)送數(shù)據(jù)發(fā)送給轉(zhuǎn)發(fā)節(jié)點;
所述的退避時間B通過公式(5)計算所得,對于任意一個候選節(jié)點,
B=Cost*Bmax (5)
式(6)中Cost代表通信代價,通過公式(6)計算所得,Bmax代表該候選節(jié)點的MAC層預(yù)定義的最大的隨機退避時間常量;
式(6)中:表示該候選節(jié)點的預(yù)期能耗值與轉(zhuǎn)發(fā)候選集中所有節(jié)點的預(yù)期能耗值之和的比;
式(6)中,RoW表示該候選節(jié)點在進(jìn)行下一次轉(zhuǎn)發(fā)時要等待的時間代價,其中RoW=1-RoF*;其中RoF*表示當(dāng)前節(jié)點的鄰居節(jié)點的占空比之和;
RoF*的計算方法為:若當(dāng)前節(jié)點在自身的反應(yīng)時間內(nèi)未收到任意一個鄰居節(jié)點的回復(fù),則根據(jù)公式(4)計算當(dāng)前節(jié)點的鄰居節(jié)點占空比之和,其中在確定任意一個節(jié)點h的工作周期時,該節(jié)點的Tsleep時刻為該節(jié)點在本工作周期開始的時刻加上該節(jié)點的Twake時段;其中Twake表示該節(jié)點h在本工作周期的工作時段;
式(6)中,α,b表示該候選節(jié)點在整個轉(zhuǎn)發(fā)過程中通信耗能和等待能耗所占的比重系數(shù),其中α=0.6,b=0.4;
步驟3:將步驟3得到的轉(zhuǎn)發(fā)節(jié)點作為當(dāng)前節(jié)點,重復(fù)執(zhí)行步驟2,直到找到所有的轉(zhuǎn)發(fā)節(jié)點,數(shù)據(jù)包通過所有的轉(zhuǎn)發(fā)節(jié)點完成數(shù)據(jù)傳輸過程。
如圖3,當(dāng)前節(jié)點發(fā)送探測包后,有三個鄰居節(jié)點a,b,c對其進(jìn)行了回復(fù),并且初始化計算的每個鄰居節(jié)點的預(yù)期能耗值、占空比、每個節(jié)點的鄰居節(jié)點的占空比之和的值分別如圖上標(biāo)明,則當(dāng)前節(jié)點的鄰居節(jié)點為節(jié)點a,b,c,同時節(jié)點a,b,c也組成了當(dāng)前節(jié)點的鄰居節(jié)點集合。
根據(jù)該節(jié)點在本工作周期剛開始的時刻加上該節(jié)點的Twake時段計算得到節(jié)點a,b,c的Tsleep分別為第101s,102s,104s;根據(jù)公式(4)可以重新計算當(dāng)前節(jié)點的鄰居節(jié)點占空比之和為50%。
根據(jù)節(jié)點a、b、c預(yù)期能耗值,得到節(jié)點a的預(yù)期能耗值最小,首先將節(jié)點a加入到候選集,根據(jù)公式(1)計算可得當(dāng)前節(jié)點的C值為4,將接下來嘗試加入節(jié)點b到候選集,根據(jù)公式(1)計算可得當(dāng)前節(jié)點的預(yù)期能耗值為3.5,由于此次得到的預(yù)期能耗值小于上一次計算得到的預(yù)期能耗值,因此將節(jié)點b加入到候選集,最后加入節(jié)點c到候選集,根據(jù)公式(1)計算可得當(dāng)前節(jié)點的預(yù)期能耗值為3.56,該值大于上一次計算出的當(dāng)前節(jié)點的預(yù)期能耗值,因此不將節(jié)點c加入候選集,將此時得到的候選集作為轉(zhuǎn)發(fā)候選集,當(dāng)前節(jié)點的轉(zhuǎn)發(fā)候選集中包括節(jié)點a和節(jié)點b。
計算轉(zhuǎn)發(fā)候選集中所有鄰居節(jié)點的預(yù)期能耗值之和為4.5。
當(dāng)前節(jié)點將節(jié)點b的預(yù)期能耗值作為基準(zhǔn)能耗值,即基準(zhǔn)能耗值為2.5,當(dāng)前節(jié)點將基準(zhǔn)能耗值以及轉(zhuǎn)發(fā)候選集中節(jié)點a,b的預(yù)期能耗值廣播出去,鄰居節(jié)點a,b,c收到廣播的包后將基準(zhǔn)能耗值與自身的能耗值進(jìn)行對比,節(jié)點c的預(yù)期能耗值大于基準(zhǔn)能耗值,于是節(jié)點c不向當(dāng)前節(jié)點回復(fù)ACK。
對當(dāng)前節(jié)點的轉(zhuǎn)發(fā)候選集中的節(jié)點a和b而言,利用公式(6)計算出自己的通信代價分別為0.584和0.644,本實施例中Bmax設(shè)定為0.3s,那么節(jié)點a和節(jié)點b根據(jù)公式(6)計算得節(jié)點a、b的退避時間分別0.17s和0.19s,節(jié)點a、b執(zhí)行退避過程,即分別等待0.17s和0.19s后向當(dāng)前節(jié)點進(jìn)行回復(fù)ACK。當(dāng)前節(jié)點首先接收到節(jié)點a的信息后,將a作為轉(zhuǎn)發(fā)節(jié)點。繼續(xù)將節(jié)點a作為當(dāng)前節(jié)點,重復(fù)執(zhí)行步驟2,直到找到所有的轉(zhuǎn)發(fā)節(jié)點,數(shù)據(jù)包通過所有的轉(zhuǎn)發(fā)節(jié)點完成數(shù)據(jù)傳輸過程。
根據(jù)本發(fā)明的解決方案,解決了大型野外環(huán)境中無線傳感網(wǎng)絡(luò)的如下問題:
1、本發(fā)明中轉(zhuǎn)發(fā)候選節(jié)點的選取策略充分考慮了節(jié)點在通信過程中可 能消耗的能量,因此在做出選擇時能使消耗的能量達(dá)到最小,網(wǎng)絡(luò)生存周期達(dá)到最長;
2、本發(fā)明中的當(dāng)前節(jié)點隨著網(wǎng)絡(luò)狀態(tài)的不斷變化而更新自身的RoF值,從而使得轉(zhuǎn)發(fā)選擇策略的度量值能夠及時根據(jù)網(wǎng)絡(luò)情況進(jìn)行調(diào)整,保證節(jié)點每次轉(zhuǎn)發(fā)時都盡可能消耗最少的能量;
3、本發(fā)明對時鐘累計帶來的誤差問題也通過合理的方式將其帶來的影響降低在可控范圍內(nèi),使得上述度量策略并不會隨著時間的推移而失去準(zhǔn)確性。