朱曉麗,高鵬
(1.萬博科技職業(yè)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,安徽 合肥 230031; 2.安徽工業(yè)經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院計(jì)算機(jī)與藝術(shù)學(xué)院,安徽 合肥 230051)
無線傳感器網(wǎng)絡(luò)(wireless sensor networks, WSN)通常是自組織網(wǎng)絡(luò),它由大量低功耗的傳感器節(jié)點(diǎn)組成,這些傳感器節(jié)點(diǎn)分布在一些需要監(jiān)測(cè)的區(qū)域,監(jiān)控物理參數(shù)或環(huán)境狀況,并將收集到的信息轉(zhuǎn)移到匯聚節(jié)點(diǎn)。目前WSN已被應(yīng)用于許多領(lǐng)域,如軍事、工業(yè)、醫(yī)學(xué),用作目標(biāo)跟蹤、環(huán)境監(jiān)測(cè)、事件檢測(cè)等。一般自組織網(wǎng)絡(luò)的路由問題主要是WSN定位問題。傳感器節(jié)點(diǎn)往往隨機(jī)分布,應(yīng)用WSN的地方幾乎都需要知道傳感器的位置,因?yàn)椴杉臄?shù)據(jù)不含位置信息就沒有實(shí)用價(jià)值。如果每個(gè)傳感器節(jié)點(diǎn)都使用全球定位系統(tǒng)(global positioning system, GPS)獲取節(jié)點(diǎn)位置信息,成本昂貴,通常不可行。一種解決方法是選擇部分傳感器作為錨節(jié)點(diǎn),由GPS或手動(dòng)配置獲得錨節(jié)點(diǎn)定位信息,再結(jié)合不同技術(shù)估算其他傳感器節(jié)點(diǎn)位置。
目前估算傳感器節(jié)點(diǎn)位置的算法分為測(cè)距定位算法和無測(cè)距定位算法。無測(cè)距定位算法估計(jì)傳感器的位置,利用的是相鄰節(jié)點(diǎn)之間的連通性和拓?fù)湫畔1]。測(cè)距定位算法估計(jì)傳感器的位置,依賴于節(jié)點(diǎn)之間的距離,通過估算無線電信號(hào)接收強(qiáng)度(received signal strength, RSS)、到達(dá)時(shí)間(time of arrival, TOA)、到達(dá)時(shí)間差(time difference of arrival, TDOA)、到達(dá)角(angle-of-arrival, AOA)等獲取節(jié)點(diǎn)之間的距離信息[2]。
WSN定位優(yōu)化問題十分復(fù)雜,但是隨機(jī)算法的產(chǎn)生及應(yīng)用正逐漸解決這一問題。其中應(yīng)用最廣泛的是群智能算法,這是一種模擬生物群體集體智慧的算法。群智能算法在解決局部最優(yōu)解和離散組合指數(shù)等復(fù)雜的優(yōu)化問題上較為成功,但其在處理大規(guī)模優(yōu)化問題上算法執(zhí)行效率很低。為此,Tan和Zhu[3]在2010年提出了一種新的群智能算法——煙花算法(FWA)。本文將FWA應(yīng)用于WSN節(jié)點(diǎn)定位,測(cè)量結(jié)果顯示,和常見的幾種算法相比,F(xiàn)WA定位誤差較小,這為FWA在WSN節(jié)點(diǎn)定位上的應(yīng)用提供了依據(jù)。
在解決WSN定位問題上,測(cè)距定位算法準(zhǔn)確性高,應(yīng)用廣泛,其中基于RSS的定位算法具有很強(qiáng)的測(cè)試和分析性能,因此本文選擇RSS獲取節(jié)點(diǎn)之間距離信息。
接收機(jī)越靠近發(fā)射機(jī),接收信號(hào)的強(qiáng)度就越大。基于發(fā)送功率和接收功率之間的關(guān)系,可以估算兩個(gè)節(jié)點(diǎn)之間的距離。由于不同節(jié)點(diǎn)使用的硬件不同或測(cè)量過程中環(huán)境噪聲發(fā)生變化,測(cè)距誤差會(huì)很大。此外,無線電反射引起的多徑傳播,會(huì)導(dǎo)致衰落現(xiàn)象,也會(huì)產(chǎn)生較大誤差。為了減少這些誤差,用對(duì)數(shù)正態(tài)陰影[4]描述無線信道衰落現(xiàn)象:
(1)
式中:Pt表示發(fā)射功率;PL(d0)表示路徑損耗;d0和α分別是參考距離和路徑損耗指數(shù);Xσ在高斯分布N(0,σ2)中出現(xiàn),表示無線電信號(hào)的噪聲。測(cè)距技術(shù)只是定位算法的第一部分。第二部分是確定傳感器節(jié)點(diǎn)的確切位置,使用錨節(jié)點(diǎn)的位置和通過RSS獲得的不精確的距離計(jì)算所有傳感器節(jié)點(diǎn)的位置。設(shè)錨節(jié)點(diǎn)坐標(biāo)為(xj,yj),若WSN包含N個(gè)未知傳感器節(jié)點(diǎn),(xi,yi)表示未知節(jié)點(diǎn)i(i=1,2,…,N)的坐標(biāo),則未知節(jié)點(diǎn)與錨節(jié)點(diǎn)之間的距離為
(2)
RSS定位算法測(cè)得的距離Rij和由式(2)得出距離dij之間的距離誤差為
eij=(Rij-dij)2
(3)
假設(shè)節(jié)點(diǎn)i有M個(gè)相鄰錨節(jié)點(diǎn),定位誤差公式變?yōu)?/p>
(4)
最終目的是最小化所有未知節(jié)點(diǎn)的誤差總和,因此目標(biāo)函數(shù)為
(5)
對(duì)目標(biāo)函數(shù)進(jìn)行優(yōu)化是本文的研究重點(diǎn),所選用的算法誤差總和越小,WSN節(jié)點(diǎn)定位越準(zhǔn)確。本文應(yīng)用新型群智能算法——FWA對(duì)此問題進(jìn)行優(yōu)化。
將FWA這一迭代算法應(yīng)用于WSN定位,通過迭代估算相鄰節(jié)點(diǎn)的位置。測(cè)距定位算法在估算距離時(shí)使用單邊或多邊定位。這種方法可以減少所需的錨節(jié)點(diǎn)數(shù)量,降低硬件成本,但如果沒有足夠的錨節(jié)點(diǎn),一些節(jié)點(diǎn)的位置是無法估算的。迭代多邊算法還存在誤差積累問題,且要求錨節(jié)點(diǎn)必須位于網(wǎng)絡(luò)邊緣[5-6]。
FWA在特定地點(diǎn)隨機(jī)產(chǎn)生n個(gè)煙花。每個(gè)煙花xi產(chǎn)生的火花量為[7]
(6)
式中:參數(shù)m表示n個(gè)煙花產(chǎn)生的火花數(shù)量;ymax是最差煙花,ymax=max(f(xi))(i=1,2,…,n);η代表用于避免除零錯(cuò)誤分配的小常數(shù)。
制作的煙花爆炸振幅不同,建模如下:
(7)
(8)
(9)
爆炸隨機(jī)影響火花的尺寸z,定義為
z=round(d·x)
(10)
式中,d是維數(shù)優(yōu)化數(shù)量,x代表隨機(jī)數(shù)在0和1之間的均勻分布,所有選定的維度確定時(shí),x也同時(shí)確定。文獻(xiàn)[8—9]對(duì)此提出改進(jìn)建議,將火花映射到新的位置公式:
ΔXk=Ai·rand(-1,1)
(11)
火花保持最佳位置x*并轉(zhuǎn)移到下一處,根據(jù)其余的(N-1)個(gè)地點(diǎn)到其他地點(diǎn)的距離,選擇它們的位置。某一位置xi和其他位置之間的距離由下式計(jì)算:
(12)
式中,K是煙花當(dāng)前所有位置的集合[10]?;诠?12)得到的距離,選擇位置xi的概率為
(13)
文獻(xiàn)[11]針對(duì)映射與變異算子提出了兩項(xiàng)改進(jìn)。映射操作符改為
(14)
高斯變異算子為
(15)
式中,XB是目前煙花爆炸發(fā)現(xiàn)火花的最好位置,且e=N(0,1)。
傳感器節(jié)點(diǎn)被隨機(jī)分布在需要監(jiān)測(cè)的區(qū)域,其中一些被隨機(jī)選擇為錨節(jié)點(diǎn)。使用公式(1)建立無線信道模型,計(jì)算RSS以及節(jié)點(diǎn)之間的距離,用該煙花算法優(yōu)化目標(biāo)函數(shù)。本文對(duì)目標(biāo)函數(shù)進(jìn)行調(diào)整[12],定義新的目標(biāo)函數(shù):
(16)
估計(jì)完未知傳感器節(jié)點(diǎn)的位置后,更新錨節(jié)點(diǎn)位置,從而估計(jì)相鄰傳感器節(jié)點(diǎn)的位置。為了能夠本地化,一個(gè)節(jié)點(diǎn)必須至少有3個(gè)相鄰錨節(jié)點(diǎn)。在這種情況下,對(duì)于未知傳感器節(jié)點(diǎn),F(xiàn)WA使用公式(16)最小化目標(biāo)函數(shù)。
在未知傳感器節(jié)點(diǎn)有1個(gè)或2個(gè)相鄰錨節(jié)點(diǎn)的情況下,采用FWA估計(jì)節(jié)點(diǎn)位置[13]。所有更新的錨節(jié)點(diǎn)從原始錨節(jié)點(diǎn)那里獲取距離信息,如果未知傳感器節(jié)點(diǎn)有1個(gè)或2個(gè)錨節(jié)點(diǎn),則可以從相鄰節(jié)點(diǎn)的位置數(shù)據(jù)發(fā)現(xiàn)它的位置,這極大地提高了節(jié)點(diǎn)定位精度。
為了驗(yàn)證本文算法,利用MATLAB進(jìn)行仿真實(shí)驗(yàn),對(duì)比本文提出的FWA與回聲定位算法、多點(diǎn)定位算法、DV-hop算法、粒子群優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)算法、改進(jìn)的DV-hop算法的定位效果。對(duì)本文提出的FWA的實(shí)驗(yàn)參數(shù)進(jìn)行設(shè)置:煙花數(shù)為5,迭代次數(shù)為5 000次,爆炸振幅為40,火花最小、最大數(shù)量分別設(shè)置為2和40。為了進(jìn)行比較,調(diào)整初始實(shí)驗(yàn)條件,參數(shù)設(shè)置如下:
Pt=0 dBm,PL(d0)=55 dBm
當(dāng)d0=1時(shí),路徑損耗指數(shù)α=4。監(jiān)測(cè)區(qū)域設(shè)置為50 m×50 m,傳輸距離為25 m。每個(gè)實(shí)驗(yàn)開始時(shí),傳感器節(jié)點(diǎn)隨機(jī)分布在該地區(qū),錨節(jié)點(diǎn)隨機(jī)選擇。用公式(17)計(jì)算未知節(jié)點(diǎn)和錨節(jié)點(diǎn)之間的距離,其結(jié)果為實(shí)際距離,把實(shí)際距離與估計(jì)距離的比值作為定位誤差,并考慮RSS的噪聲干擾,同時(shí)結(jié)合已有參數(shù)值,得出噪聲干擾因素下的距離值:
(17)
為了驗(yàn)證本文算法性能,分別測(cè)試各算法隨RSS值、節(jié)點(diǎn)數(shù)、錨節(jié)點(diǎn)數(shù)和噪聲標(biāo)準(zhǔn)偏差變化時(shí)的定位誤差。圖1為不同RSS值時(shí)定位誤差的變化??梢钥闯觯S著RSS值的增加,各個(gè)算法的定位誤差逐漸減低,并趨于穩(wěn)定,這是由于定位誤差是根據(jù)所測(cè)試的估計(jì)距離的平均值得出。在此過程中,本文提出的FWA定位誤差較小,定位精度較高。
圖1 RSS值與定位誤差的關(guān)系
圖2是節(jié)點(diǎn)數(shù)與定位誤差之間的關(guān)系??梢钥闯?,隨著傳感器節(jié)點(diǎn)數(shù)的增加,定位誤差逐漸減小,同時(shí)定位誤差趨于穩(wěn)定。與其他算法相比,F(xiàn)WA的定位精度較高,且在節(jié)點(diǎn)數(shù)量變化過程中FWA定位誤差值變化平穩(wěn),定位穩(wěn)定性較好。
圖2 節(jié)點(diǎn)數(shù)量與定位誤差的關(guān)系
為了進(jìn)一步驗(yàn)證本文算法的優(yōu)越性,對(duì)不同錨節(jié)點(diǎn)數(shù)下的定位誤差進(jìn)行測(cè)試。由圖3可知,選擇更多的錨節(jié)點(diǎn)時(shí)定位誤差較低。當(dāng)62%以上的傳感器節(jié)點(diǎn)被用作錨節(jié)點(diǎn)時(shí),本文FWA定位誤差最小,而錨節(jié)點(diǎn)比例小于50%時(shí)FWA相對(duì)于粒子群算法定位誤差偏大。但總體來說,在錨節(jié)點(diǎn)數(shù)量一定時(shí),F(xiàn)WA定位誤差較小,定位較準(zhǔn)確。
圖3 錨節(jié)點(diǎn)數(shù)量與定位誤差的關(guān)系
圖4比較了6種不同算法的噪聲水平和定位誤差之間的關(guān)系。由此可知,隨著噪聲標(biāo)準(zhǔn)偏差的增大,定位誤差變大,本文提出的FWA模型誤差平穩(wěn)增加,且誤差最小,說明FWA在WSN節(jié)點(diǎn)定位時(shí)性能穩(wěn)定、精度高。
圖4 噪聲標(biāo)準(zhǔn)偏差與定位誤差的關(guān)系
為優(yōu)化WSN節(jié)點(diǎn)定位精度,使節(jié)點(diǎn)定位誤差更小,且整體性能更穩(wěn)定,本文將一種新的群智能算法——FWA應(yīng)用于WSN節(jié)點(diǎn)定位系統(tǒng)。通過更新傳感器節(jié)點(diǎn)定位過程中的錨節(jié)點(diǎn),使定位節(jié)點(diǎn)的數(shù)量增加。通過仿真實(shí)驗(yàn),使用不同的實(shí)驗(yàn)參數(shù),測(cè)試本文所提出的FWA在不同的網(wǎng)絡(luò)規(guī)模、不同信號(hào)強(qiáng)度等情況下的應(yīng)用效果。最后,將各實(shí)驗(yàn)因素綜合起來,通過橫向比較,證明了相比其他算法,F(xiàn)WA在進(jìn)行無線網(wǎng)絡(luò)節(jié)點(diǎn)定位時(shí)定位精度更高,性能更穩(wěn)定。