本發(fā)明屬于群智能和無線傳感器網(wǎng)絡(luò)定位領(lǐng)域,具體涉及一種基于菌群優(yōu)化的dv-hop室內(nèi)定位改進(jìn)算法。
背景技術(shù):
隨著無線傳感器網(wǎng)絡(luò)的快速發(fā)展,定位技術(shù)受到越來越多的重視。在基于非測距的室內(nèi)定位算法中,dv-hop算法、質(zhì)心算法等因為成本較低、易于實現(xiàn)而受到廣泛關(guān)注。
盡管如此,基于非測距的定位算法也因為缺乏硬件的支持存在著定位精度不高等問題?,F(xiàn)有技術(shù)中,發(fā)明cn201610820871.7提出了一種基于粒子群的智能優(yōu)化算法,該算法在三邊測量法中選擇最優(yōu)的3個錨節(jié)點估計未知節(jié)點的位置、并根據(jù)最近錨節(jié)點對估計位置進(jìn)行校準(zhǔn),最后選擇連通性差異最小的位置作為估計位置。雖然它減少了計算復(fù)雜度,但無法明顯地降低定位誤差。發(fā)明cn201610331758.2提出了一種子網(wǎng)劃分式dv-hop無線傳感器網(wǎng)絡(luò)定位算法,該算法考慮了傳統(tǒng)dv-hop定位算法以平均每跳距離代替實際直線距離而導(dǎo)致定位誤差較大這一問題,通過子網(wǎng)策略劃分進(jìn)行了優(yōu)化。
發(fā)明cn201610236716.0提出了一種基于改進(jìn)型dv-hop的無線傳感網(wǎng)絡(luò)節(jié)點定位裝置及方法,它采用了rssi技術(shù)輔助測距和未知節(jié)點二次定位求精的方法,提高了節(jié)點的定位精度。發(fā)明cn201610158551.x提出了基于區(qū)域劃分錨節(jié)點移動的dv-hop定位方法,該算法在傳感器網(wǎng)絡(luò)中錨節(jié)點分布不均勻時能夠有效提高未知節(jié)點的定位精度,減小定位誤差。
但以上專利文獻(xiàn)都屬于采用傳統(tǒng)的方法進(jìn)行優(yōu)化,同時也沒有考慮到一般的群智能算法收斂性不穩(wěn)定的缺陷,定位精度難以滿足預(yù)期目標(biāo),同時存在成本高以及對網(wǎng)絡(luò)的需求條件嚴(yán)格的缺陷。
技術(shù)實現(xiàn)要素:
本發(fā)明針對上述傳統(tǒng)的dv-hop算法計算錨節(jié)點與目標(biāo)節(jié)點之間的平均每跳距離值估計不足的問題,引入智能菌群優(yōu)化算法對平均每跳距離值進(jìn)行尋優(yōu),將平均每跳距離值與實際值之間誤差最小作為特征函數(shù),這樣所得的最優(yōu)解即為定位坐標(biāo)。本發(fā)明通過這種模型可以在較少的錨節(jié)點比例下,有效地提高定位精度和穩(wěn)定性。
為實現(xiàn)上述目的,本發(fā)明提出的技術(shù)方案為一種基于菌群優(yōu)化的dv-hop室內(nèi)定位改進(jìn)算法,具體包含以下步驟:
s1:定義網(wǎng)絡(luò)中有z個節(jié)點,編號為i到j(luò),定義i到j(luò)之間的跳數(shù)為hij,在笛卡爾坐標(biāo)系中得到:
其中,dij代表i,j間的距離,(xi,yi)和(xj,yj)分別是第i個節(jié)點和第j個節(jié)點的坐標(biāo);
s2:采用如下公式來計算平均每跳距離:
即采用智能菌群算法進(jìn)行尋優(yōu),直至得到最優(yōu)解;
s3:為了得到最準(zhǔn)確的位置,引入最小均方誤差來描述這種關(guān)系,對均方誤差函數(shù)作如下定義:
同時按照以下公式計算該函數(shù)的最小值:
由于兩個節(jié)點間的通信距離有一定的限制,因此定義最大通信半徑如下所示:
0≤adij≤r(5);
s4:設(shè)定特征函數(shù)為:
fi=exp(α-θ(adij))2(6)
這里,α是特征函數(shù)的參數(shù),故以取得該特征函數(shù)的最大值為目標(biāo)進(jìn)行尋優(yōu);
s5:定義error,代表從i到j(luò)間實際距離和估計距離之間定位的誤差,由下式表示:
以評估算法的定位精度,其中,e、f分別表示模擬的次數(shù)和未知節(jié)點的個數(shù),(xi,yi)表示已知節(jié)點的坐標(biāo),(xi',yi')表示估計節(jié)點的坐標(biāo)。
進(jìn)一步,上述步驟4中所述α與仿真環(huán)境或?qū)嶋H環(huán)境有關(guān),取值越大將能得到的更小的誤差。
上述智能菌群算法進(jìn)行尋優(yōu)的過程如下:
s1:初始化種群z,在這里種群即為所有需要定位的節(jié)點,根據(jù)公式(6),有z個解隨機分布:
adij=adijmin+rand×(adijmax-adijmin)(7)
rand表示從0到1的隨機變量,從公式(5),知道,adijmax為r,adijmin為0;
s2:計算合適的值,根據(jù)公式(6)計算合適的值;
s3:計算大腸桿菌遷徙和趨化,這個過程可以用下面的方程描述:
這里,j代表適應(yīng)程度,n是公式的參數(shù),w是吸引劑的釋放比例,a是吸引劑數(shù)量,s是吸引劑釋放率,h代表排斥劑,z表示排斥劑釋放量,k是趨化劑數(shù)量,l是繁殖次數(shù);
s4:根據(jù)公式(6)計算新的代數(shù),經(jīng)過幾次循環(huán),循環(huán)直到來到極限才停止;
s5:得到平均每跳距離adij的最優(yōu)解。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
1,本發(fā)明采用bfo(bacterialforagingoptimization)算法來優(yōu)化平均每跳距離,通過智能菌群算法對平均每跳距離值進(jìn)行尋優(yōu),選擇最接近實際值的平均每跳距離值來降低最終坐標(biāo)計算的誤差,有效提高了定位精度。
2,由于進(jìn)行了多次自組織的尋優(yōu)比較,最終的定位誤差趨于穩(wěn)定,因此提高了算法的穩(wěn)定性。
3,通過定位誤差來評估算法的定位精度,同時該算法需要定位的節(jié)點總數(shù)增加和錨節(jié)點比例下降的情況下仍然能夠?qū)崿F(xiàn)比較高的定位精度。
附圖說明
圖1為bfo-dv-hop算法流程圖。
圖2為bfo算法尋優(yōu)框圖。
圖3為節(jié)點比例與歸一化定位誤差的關(guān)系。
圖4為節(jié)點總數(shù)與歸一化定位誤差的關(guān)系。
具體實施方式
現(xiàn)結(jié)合附圖對本發(fā)明做進(jìn)一步詳細(xì)的說明。
本發(fā)明針對傳統(tǒng)dv-hop算法平均每跳距離估計誤差較大的缺點進(jìn)行改進(jìn),考慮到細(xì)菌的趨利避害性能夠更好地表征平均每跳距離尋優(yōu)的流程,借助菌群算法智能尋優(yōu)的特點,提出了bfodv-hop混合框架模型。通過模擬仿真驗證了該框架能較好地減小定位誤差,從而提高定位精度。
基于圖1的基本框架,本發(fā)明算法的流程可詳細(xì)表述如下:
1)對需要定位的區(qū)域進(jìn)行初始化,定義無線傳感器網(wǎng)絡(luò)中有z個節(jié)點,編號為i到j(luò)。
定義i到j(luò)之間的跳數(shù)為hij。在笛卡爾坐標(biāo)系中,得到:
dij代表i,j間的距離,定義平均每跳距離。(xi,yi)和(xj,yj)分別是第i個節(jié)點和第j個節(jié)點的坐標(biāo)。
2)采用以下公式來計算平均每跳距離:
3)為了得到最準(zhǔn)確的位置,引入最小均方誤差來描述這種關(guān)系。因此,對均方誤差函數(shù)作如下定義:
4)根據(jù)公式(3)得到該函數(shù)的最小值:
把bfo原始的尋優(yōu)流程與和bfodv-hop算法基本步驟一一對應(yīng),從而更清晰地體現(xiàn)bfo在dv-hop算法中的應(yīng)用,結(jié)果如表1所示。
表1bfo算法與bfodv-hop算法的關(guān)系
5)兩個節(jié)點間的通信距離有一定的限制,因此定義最大通信半徑如下所示:
0≤adij≤r(5)
6)bfo算法的關(guān)鍵是尋找到恰當(dāng)?shù)奶卣骱瘮?shù),由于希望尋優(yōu)所得的平均每跳距離值與實際值之間的誤差越小越好,所以特征函數(shù)將與均方誤差函數(shù)的最小值成負(fù)相關(guān)關(guān)系。為了消除均方誤差的零點極值的影響,設(shè)定特征函數(shù)為:
fi=exp(α-θ(adij))2(6)
其中α是函數(shù)的參數(shù),它與仿真環(huán)境或?qū)嶋H環(huán)境有關(guān),取值越大所能得到的定位誤差越小,故以取得特征函數(shù)的最大值為目標(biāo)進(jìn)行尋優(yōu)。
如圖2所示,該算法的核心環(huán)境為趨化、遷徙和繁殖,其詳細(xì)流程具體如下:
step1.初始化種群z。根據(jù)公式(6),有z個解隨機分布。
adij=adijmin+rand×(adijmax-adijmin)(7)
rand表示從0到1的隨機變量。從公式(5),知道,adijmax為r,adijmin為0。
step2.計算合適的值。根據(jù)公式(6)計算合適的值。
step3.大腸桿菌遷徙和趨化。這個過程可以用下面的方程描述,
這里,j代表適應(yīng)程度,n是公式的參數(shù)。w是吸引劑的釋放比例。a是吸引劑數(shù)量。s是吸引劑釋放率,h代表排斥劑,z表示排斥劑釋放量。除此之外,k是趨化劑數(shù)量,l是繁殖次數(shù)。
step4.根據(jù)公式(6)計算新的代數(shù)。經(jīng)過幾次循環(huán),循環(huán)直到來到極限才停止。
step5.得到adij的最優(yōu)解。
定義100個節(jié)點隨機分布在100*100m的范圍,其中錨節(jié)點的占比可調(diào),所有節(jié)點在r=50m的范圍內(nèi)可實現(xiàn)通信。為了消除結(jié)果分布的偶然性影響,在相同的條件下仿真了80次并取其平均值。研究bfodv-hop算法在兩種不同的實驗條件下的定位性能,并測試他們的定位誤差。
在第一個仿真測試中,定義節(jié)點總數(shù)是常量,但是錨節(jié)點的比例是改變的。另一個仿真測試中,錨節(jié)點的總數(shù)固定,通過測試在錨節(jié)點比例一定的情況下節(jié)點總數(shù)改變對該算法定位性能的影響。
實驗一:
設(shè)定錨節(jié)點的比例從5%改變到50%,節(jié)點總是為100。如圖三所示,歸一化的定位誤差隨著錨節(jié)點比例的增加而降低,同時誤差值也趨于穩(wěn)定,換句話說,平均每跳距離值更加接近實際值。顯然,從圖三和表2可以看出,bfodv-hop算法的定位誤差比傳統(tǒng)的dv-hop算法顯著地降低了。與傳統(tǒng)的dv-hop算法相比,bfo-dv-hop算法的定位性能有一定的提升,并且準(zhǔn)確度提高了近10%。
實驗二:
從圖3中可以得出結(jié)論,bfodv-hop算法中當(dāng)錨節(jié)點比例達(dá)到30%的時候定位誤差趨向于穩(wěn)定值。為了得到更穩(wěn)健的結(jié)果,進(jìn)一步將錨節(jié)點的比例設(shè)定在30%,并且使節(jié)點總數(shù)從60變化到150再次進(jìn)行仿真,測試在錨節(jié)點比例一定的情況下節(jié)點總數(shù)改變對該算法定位性能的影響。從圖4可以看出,隨著節(jié)點總數(shù)的增加,歸一化定位誤差逐漸降低。進(jìn)一步觀察可以發(fā)現(xiàn),當(dāng)節(jié)點總數(shù)達(dá)到80時曲線趨于平緩,即bfodv-hop算法的性能趨于穩(wěn)定。bfodv-hop算法的定位誤差比傳統(tǒng)的dv-hop算法降低了15%左右。
為了更精確地看出兩種條件的變化給誤差率帶來的影響,通過表2的統(tǒng)計結(jié)果來進(jìn)一步展示實驗一和實驗二的結(jié)果。
表2bfodv-hop和dv-hop仿真結(jié)果統(tǒng)計