本發(fā)明屬于無線傳感網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)傳輸效率高、網(wǎng)絡(luò)能量消耗均衡、網(wǎng)絡(luò)壽命長的基于蟻群算法的無線傳感網(wǎng)絡(luò)路由方法。
背景技術(shù):
無線傳感網(wǎng)絡(luò)是由大量低成本低功耗的傳感器以自組織和多跳的方式構(gòu)成的無線網(wǎng)絡(luò),具有大規(guī)模、自組織、可靠性、以數(shù)據(jù)為中心等特點(diǎn)。無線傳感網(wǎng)絡(luò)綜合了傳感器技術(shù)、通信技術(shù)、嵌入式技術(shù)和分布式信息處理技術(shù),能夠協(xié)作的感知、采集、處理網(wǎng)絡(luò)覆蓋區(qū)域內(nèi)對象的信息。其在軍事、環(huán)境監(jiān)測、醫(yī)療健康、智能家居等領(lǐng)域有著廣泛的應(yīng)用前景。
無線傳感網(wǎng)絡(luò)路由協(xié)議的目的是將分組數(shù)據(jù)從源節(jié)點(diǎn)發(fā)送到目的節(jié)點(diǎn),即需要完成兩大內(nèi)容:選擇合適的優(yōu)化路徑,和沿著選定的優(yōu)化路徑正確的轉(zhuǎn)發(fā)數(shù)據(jù)。通常,傳統(tǒng)的無線傳感網(wǎng)絡(luò)或Ad hoc網(wǎng)絡(luò)為提高服務(wù)質(zhì)量QoS提出多種路由協(xié)議,常見的路由協(xié)議如基于聚簇的LEACH協(xié)議、以數(shù)據(jù)為中心的SPIN協(xié)議、基于地理位置的GPSR協(xié)議等,這些路由協(xié)議往往旨在追求端到端的延遲最小、網(wǎng)絡(luò)利用率最高等,而無線傳感網(wǎng)絡(luò)自身多跳路由、動(dòng)態(tài)拓?fù)涞奶攸c(diǎn)使得路由的能量消耗和開銷很大。
由于無線傳感網(wǎng)絡(luò)節(jié)點(diǎn)能量有限的特點(diǎn),對路由協(xié)議的設(shè)計(jì)具有極大的挑戰(zhàn)。將蟻群算法應(yīng)用于無線傳感網(wǎng)絡(luò)路由方法中,利用蟻群算法的自組織、自動(dòng)尋優(yōu)、個(gè)體簡單而群體智能的特點(diǎn)均衡網(wǎng)絡(luò)負(fù)載,延長網(wǎng)絡(luò)壽命。
然而,現(xiàn)有基于基本蟻群算法的無線傳感網(wǎng)絡(luò)路由方法仍然存在如下不足:前向螞蟻和后向螞蟻定義相同的數(shù)據(jù)結(jié)構(gòu)導(dǎo)致數(shù)據(jù)傳輸效率不夠高;網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)量眾多、不必要的路徑搜索導(dǎo)致能量消耗不夠均衡;剩余能量較小的節(jié)點(diǎn)由于過多的轉(zhuǎn)發(fā)導(dǎo)致網(wǎng)絡(luò)壽命不夠長。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提出一種基于蟻群算法的無線傳感網(wǎng)絡(luò)路由方法,數(shù)據(jù)傳輸效率高、網(wǎng)絡(luò)能量消耗均衡、網(wǎng)絡(luò)壽命更長。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案為:
一種基于蟻群算法的無線傳感網(wǎng)絡(luò)路由方法,包括如下步驟:
(10)網(wǎng)絡(luò)初始化:將無線傳感網(wǎng)絡(luò)劃分為多個(gè)大小相等的正方形網(wǎng)格,sink節(jié)點(diǎn)在全網(wǎng)范圍內(nèi)廣播報(bào)文及跳數(shù),并對路由中的前向螞蟻和后向螞蟻定義不同的報(bào)文結(jié)構(gòu),將螞蟻在路徑搜索過程中釋放的信息素初始濃度設(shè)為0;
(20)路徑搜索:前向螞蟻從源節(jié)點(diǎn)出發(fā),向下一節(jié)點(diǎn)運(yùn)動(dòng),下一節(jié)點(diǎn)的位置,根據(jù)概率選擇公式確定,確定啟發(fā)信息的重要程度的值;
(30)信息素值確定:確定前向螞蟻在經(jīng)過某路徑時(shí)釋放的信息素值;
(40)路由建立:根據(jù)信息素?fù)]發(fā)機(jī)制,對路徑上的信息素進(jìn)行迭代搜索,在前向螞蟻到達(dá)目標(biāo)節(jié)點(diǎn)后,確定后向螞蟻在返回源節(jié)點(diǎn)時(shí)路徑上的信息素值,后向螞蟻沿著反向信息素表返回源節(jié)點(diǎn),路由建立成功;
(50)數(shù)據(jù)傳輸:各節(jié)點(diǎn)獲得其鄰居節(jié)點(diǎn)到sink節(jié)點(diǎn)的路由情況,同時(shí)通過信息素廣播機(jī)制定期廣播各個(gè)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)的路由表信息,并進(jìn)行數(shù)據(jù)傳輸。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)在于:
1、數(shù)據(jù)傳輸效率高:通過設(shè)計(jì)前向螞蟻和后向螞蟻不同的報(bào)文結(jié)構(gòu)來提高傳輸效率;
2、網(wǎng)絡(luò)能量消耗均衡:在前向螞蟻的報(bào)文結(jié)構(gòu)設(shè)計(jì)中增加禁忌表,大大避免回路的產(chǎn)生;
3、網(wǎng)絡(luò)壽命長:在確定概率選擇公式中,考慮各鄰居節(jié)點(diǎn)剩余能量的大小,達(dá)到均衡網(wǎng)絡(luò)能量消耗、延長網(wǎng)絡(luò)壽命的目的。
附圖說明
圖1是本發(fā)明基于蟻群算法的無線傳感網(wǎng)絡(luò)路由方法的主流程圖。
圖2是前向螞蟻報(bào)文結(jié)構(gòu)示例。
圖3是后向螞蟻報(bào)文結(jié)構(gòu)示例。
圖4是是節(jié)點(diǎn)分布的仿真場景示意圖。
圖5是本發(fā)明方法法與現(xiàn)有技術(shù)方法的性能比較表。
具體實(shí)施方式
如圖1所示,本發(fā)明基于蟻群算法的無線傳感網(wǎng)絡(luò)路由方法,其包括如下步驟:
(10)網(wǎng)絡(luò)初始化:將無線傳感網(wǎng)絡(luò)劃分為多個(gè)大小相等的正方形網(wǎng)格,sink節(jié)點(diǎn)在全網(wǎng)范圍內(nèi)廣播報(bào)文及跳數(shù),并對路由中的前向螞蟻和后向螞蟻定義不同的報(bào)文結(jié)構(gòu),將螞蟻在路徑搜索過程中釋放的信息素初始濃度設(shè)為0;
所述(10)網(wǎng)絡(luò)初始化步驟中,
所述前向螞蟻報(bào)文結(jié)構(gòu)如圖2所示,包括:源節(jié)點(diǎn)地址、各鄰居節(jié)點(diǎn)的剩余能量、信息素強(qiáng)度、避免回路的禁忌表、節(jié)點(diǎn)跳數(shù),所述避免回路的禁忌表用于記錄所經(jīng)過的路徑,避免回路的產(chǎn)生;
所述后向螞蟻報(bào)文結(jié)構(gòu)如圖3所示,包括:信息素的更新值、后向螞蟻的目的節(jié)點(diǎn)地址、后向螞蟻距離Sink節(jié)點(diǎn)的路徑長度。
(20)路徑搜索:前向螞蟻從源節(jié)點(diǎn)出發(fā),向下一節(jié)點(diǎn)運(yùn)動(dòng),下一節(jié)點(diǎn)的位置,根據(jù)概率選擇公式確定,確定啟發(fā)信息的重要程度的值;
所述(20)路徑搜索步驟中,下一節(jié)點(diǎn)j的位置根據(jù)如下概率選擇公式確定:
式中,表示螞蟻k由節(jié)點(diǎn)i轉(zhuǎn)移到節(jié)點(diǎn)j的概率,k=1,2,3,···,m,ε(i,j)k表示節(jié)點(diǎn)i到節(jié)點(diǎn)j的信息素強(qiáng)度與剩余能量的相對大小的運(yùn)算因子,β為啟發(fā)信息的重要程度,
其中,τ(i,j)表示節(jié)點(diǎn)i到j(luò)的信息素強(qiáng)度,E(j)表示下一個(gè)節(jié)點(diǎn)j的剩余能量,表示鄰近節(jié)點(diǎn)的剩余能量的總和;
η(i,j)=1/di,j (3),
di,j表示節(jié)點(diǎn)i到節(jié)點(diǎn)j的距離;Jk(i)表示鄰居節(jié)點(diǎn)位置的集合。
(30)信息素值確定:確定前向螞蟻在經(jīng)過某路徑時(shí)釋放的信息素值;
所述(30)信息素更新步驟中,前向螞蟻在經(jīng)過路徑l時(shí),信息素強(qiáng)度的值為:
τ(i,j)=1/Pl (4),
所述的Pl表示經(jīng)過傳輸路徑l的總代價(jià),路徑l為螞蟻所經(jīng)過的路徑。
(40)路由建立:根據(jù)信息素?fù)]發(fā)機(jī)制,對路徑上的信息素進(jìn)行迭代搜索,在前向螞蟻到達(dá)目標(biāo)節(jié)點(diǎn)后,確定后向螞蟻在返回源節(jié)點(diǎn)時(shí)路徑上的信息素值,后向螞蟻沿著反向信息素表返回源節(jié)點(diǎn),路由建立成功;
所述(40)路由建立步驟中,根據(jù)信息素?fù)]發(fā)機(jī)制,后向螞蟻返回源節(jié)點(diǎn)時(shí)的信息素值為:
τ(i,j)(t+Δt)=(1-ρ)τ(i,j)(t)+∑kτ(i,j)(k) (5),
所述的ρ為信息素?fù)]發(fā)參數(shù),ρ∈(0,1),所述的τ(i,j)(k)表示在時(shí)間間隔Δt內(nèi)第k只螞蟻經(jīng)過路徑l釋放的信息素。
在此步驟(30)、(40)中引入信息素?fù)]發(fā)機(jī)制避免因信息素濃度相差太大,出現(xiàn)系統(tǒng)停滯狀態(tài),陷入局部最優(yōu)的情況,所以設(shè)定ρ的取值范圍為0<ρ<1,ρ為信息素?fù)]發(fā)參數(shù),但是當(dāng)值過大時(shí),信息素的揮發(fā)速率太快,會(huì)使以前已經(jīng)搜索過的路徑被再次選擇的可能性增大;而當(dāng)值過小時(shí),雖然可以提高全局搜索能力,但算法的收斂性便降低了,所以應(yīng)該選擇合適的ρ值。公式(5)中τ(i,j)(k)是在Δt時(shí)間間隔內(nèi)第k只螞蟻經(jīng)過路徑l釋放的信息素值。
(50)數(shù)據(jù)傳輸:各節(jié)點(diǎn)獲得其鄰居節(jié)點(diǎn)到sink節(jié)點(diǎn)的路由情況,同時(shí)通過信息素廣播機(jī)制定期廣播各個(gè)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)的路由表信息,并進(jìn)行數(shù)據(jù)傳輸。
經(jīng)過多次迭代之后,各個(gè)節(jié)點(diǎn)已經(jīng)獲得從源節(jié)點(diǎn)到目的節(jié)點(diǎn)的路由信息情況,已經(jīng)可以選擇出最優(yōu)路徑進(jìn)行數(shù)據(jù)傳輸。
路徑搜尋的具體過程為:
在初始階段,賦予每條路經(jīng)上的信息素強(qiáng)度為0,前向螞蟻從源節(jié)點(diǎn)出發(fā),根據(jù)公式(1)概率選擇公式選擇下一個(gè)節(jié)點(diǎn)j,并根據(jù)公式(5)更新?lián)]發(fā)機(jī)制后路徑上的信息素強(qiáng)度;當(dāng)中間節(jié)點(diǎn)j收到來自鄰居節(jié)點(diǎn)的螞蟻節(jié)點(diǎn)時(shí),檢·查是否已經(jīng)收到比該螞蟻節(jié)點(diǎn)更合適的節(jié)點(diǎn),若是則丟棄;若不是,則代替原來的螞蟻節(jié)點(diǎn),并將跳數(shù)加1;依次進(jìn)行迭代搜索路徑,當(dāng)前向螞蟻到達(dá)目的節(jié)點(diǎn)后,立即轉(zhuǎn)化為后向螞蟻,并沿著反向信息素強(qiáng)度表回到源節(jié)點(diǎn)。
最后,對本發(fā)明基于蟻群算法(Ant Colony Routing Optimization of Wireless Sensor Network,ACROWSN)的無線傳感網(wǎng)絡(luò)路由方法進(jìn)行測試,如圖3所示為節(jié)點(diǎn)分布的仿真場景,圖中標(biāo)明了源節(jié)點(diǎn)和Sink節(jié)點(diǎn)的位置,傳感器節(jié)點(diǎn)隨機(jī)部署在正方形的網(wǎng)格交點(diǎn)上。通過隨機(jī)部署的傳感器節(jié)點(diǎn)可能比較均勻的分布在區(qū)域中,也可能不太均勻的分布在區(qū)域中,從而距離Sink節(jié)點(diǎn)較遠(yuǎn)的傳感器節(jié)點(diǎn)能量的消耗而失效,所以在設(shè)計(jì)算法時(shí)更要將能量消耗考慮其中。
在如圖4的仿真場景中,取參數(shù)β=4.5,ρ=0.5,節(jié)點(diǎn)數(shù)目設(shè)置為20個(gè),仿真次數(shù)為20次,初始能量為100J,圖5為ACROWSN算法與BACA算法的性能比較圖。從圖5中可以清晰看出,當(dāng)時(shí)間呈遞增趨勢時(shí),ACROWSN算法比BACA算法的節(jié)點(diǎn)減少速率更平緩且更少,BACA算法由于沒有考慮節(jié)點(diǎn)剩余能量的情況,造成節(jié)點(diǎn)能耗的不均衡而過早失效;由于BACA算法需要通過多次迭代運(yùn)算建立完成,增加了網(wǎng)絡(luò)時(shí)延,所以ACROWSN算法的平均網(wǎng)絡(luò)時(shí)延要小于BACA算法的平均網(wǎng)絡(luò)時(shí)延;因?yàn)锳CROWSN算法通過概率選擇公式選擇下一個(gè)節(jié)點(diǎn),很大程度上減少了各節(jié)點(diǎn)能量的消耗,所以ACROWSN算法的節(jié)點(diǎn)剩余能量要比BACA算法的剩余能量多。