王磊,劉利利,齊俊艷,宋成
(河南理工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,河南 焦作 454000)
地球上水資源豐富,因而,水下通信技術(shù)對水下資源探測和研究有著非常重要的意義[1]。由于受水下電磁波傳輸路徑短、信號衰減快、介質(zhì)傳輸速率慢等因素限制,射頻信號并不適用于水下通信[2]。跟射頻信號相比,聲信號在水下衰減速率慢,因此水聲通信(under water acoustic communication,UWAC)技術(shù)被用于水下無線傳感網(wǎng)絡(luò)(under water sensor network,UWSN)[3]。許多水下作業(yè),比如水下污染物質(zhì)量濃度探測、海底地震檢測、水下目標(biāo)追蹤都依賴于位置信息。因此,基于水聲通信的水下定位技術(shù)研究尤為重要。
水下定位方法按照定位方式可分為基于非測距的定位方法和基于測距的定位方法[5-6]。非測距定位方法主要有質(zhì)心算法[7-8]和DV-hop算法[9]。該類方法對硬件要求低,受環(huán)境影響小,成本低,但是一般不能準(zhǔn)確定位節(jié)點坐標(biāo),尤其對水下遠(yuǎn)距離節(jié)點通信容易產(chǎn)生較大誤差[10]。基于測距的定位方法主要有RSSI算法、TOA算法和TDOA算法等。傳統(tǒng)定位方法用于水下,性能不穩(wěn)定,定位誤差較大。為了滿足水下定位需求,有學(xué)者提出對RSSI值采樣并進行濾波處理,以提高RSSI值準(zhǔn)確度。濾波處理方法有粒子濾波(particle filter,PF)[11-12]、秩濾波(rank filter,RF,)[13]、卡爾曼濾波(kalman filter,KF,)[14]和高斯濾波(gauss filter,GF)等。J.Sve?ko等[11]首先通過采集RSSI值獲得“粒子”,根據(jù)每個粒子的重要性確定粒子權(quán)值,其次再對粒子進行重采樣,最后利用粒子濾波進行位置估計;余修武等[13]提出采用RF方法對RSSI值濾波處理,以提高測距精度,再使用FTO算法對目標(biāo)節(jié)點坐標(biāo)進行尋優(yōu)計算,得到近似最優(yōu)解;ZHOU C等[14]使用KF算法處理RSSI樣本,在一定程度上解決了“RSSI信號漂移”的問題,然后利用處理后的RSSI值進行距離估計和位置計算。上述算法中,PF算法存在著粒子退化或重采樣粒子貧化問題,隨著時間推移,KF和RF算法的累計誤差會逐漸增大,且相比于高斯濾波,上述濾波算法復(fù)雜度更高。為了進一步提高定位精度,近年來,智能優(yōu)化算法被引入。常用的優(yōu)化算法有擬牛頓算法、粒子群(PSO)算法、差分進化(DE)算法、灰狼優(yōu)化(GWO)算法以及遺傳(GA)算法等。常魯杰等[15]設(shè)計一種基于迭代粒子群優(yōu)化的RQ-PSO定位算法,該算法利用MDS-MAP對傳感器節(jié)點完成粗定位,引入幾何約束限制粒子群初始種群范圍,并采用魯棒四邊形規(guī)則對未知節(jié)點位置進行優(yōu)化求解;LI J等[16]提出基于模擬退火算法的粒子群優(yōu)化(SAPSO)算法,解決了在低信噪比環(huán)境下定位精度低的問題;段亞青等[17]提出的GWO算法同樣也用于定位優(yōu)化。但以上優(yōu)化算法收斂速度慢,容易陷入局部最優(yōu)。擬牛頓算法收斂速度具有快且容易跳出局部最優(yōu)的優(yōu)點,因此,本文提出一種基于高斯濾波和擬牛頓優(yōu)化的UWSN定位方法,主要工作如下:
(1)提出基于高斯濾波的ASTL采樣測距算法,通過采樣,得到多組ASTL樣本值,采用高斯濾波算法對ASTL樣本進行加權(quán)平均,以降低因測距不準(zhǔn)帶來的誤差。
(2)對估計位置進行擬牛頓優(yōu)化,以得到更加準(zhǔn)確的定位結(jié)果。
(3)通過仿真驗證本文提出的算法。
在水下,無線傳感網(wǎng)絡(luò)傳輸時由于物理層采用聲信號,與電磁波信號的傳輸速度差距很大,因此,陸上的測距模型并不適用于水下。所以采用Urick模型,設(shè)發(fā)送節(jié)點向接收節(jié)點發(fā)送的數(shù)據(jù)包中包含發(fā)送信號強度值ST(dB)和接受節(jié)點收到數(shù)據(jù)包時記錄的接收號強度RT(dB)。兩節(jié)點間的傳輸路徑損失TLloss(dB)計算式為
TLloss=ST-RT,
(1)
其中,水聲傳輸路徑損耗模型為
TLloss(d,f)≈χlgd+a(f)·d×10-3+A,
(2)
式中:TLloss(d,f)為路徑傳輸損耗;d為傳輸距離,m;χ為幾何擴散,χ=10時水聲傳播方式為柱形傳輸,χ=20時水聲傳播方式為球形傳輸,本文采用球形傳輸模型[18];f為信號頻率,Hz;a(f)為頻率相關(guān)吸收系數(shù),由公式(3)求得[17];A為聲信號在傳輸過程中的異常損耗,dB。
(3)
因此,由式(3)可得測距模型
(4)
由于聲信號在傳輸過程中具有不穩(wěn)定性,在某時間段內(nèi),受過往艦船或動物等產(chǎn)生的噪聲影響,導(dǎo)致測量的TLloss值偏離正常值。若在測距環(huán)節(jié)按照正常數(shù)據(jù)引入測距模型中,將導(dǎo)致測距誤差過大,定位結(jié)果不準(zhǔn)確。傳統(tǒng)的測距方法容易忽視聲信號在傳輸過程中引入的偶然誤差,因此,提出一種基于高斯濾波的TLloss采樣距離估計方法。TLloss樣本具有不等權(quán)性,使用高斯濾波能有效處理異常TLloss樣本,降低因測距引入的誤差,提高定位精度。
(5)
(6)
(7)
式中:x為樣本值;μ為均值;δ為標(biāo)準(zhǔn)差。
(8)
(9)
節(jié)點初始位置估計采用多邊定位法,使用該方法可求得未知節(jié)點坐標(biāo)的最小二乘解。根據(jù)已知錨節(jié)點坐標(biāo)Pi(xi,yi,zi)與未知節(jié)點坐標(biāo)P(x,y,z),可列出方程組(10)。
(10)
其中,二維定位利用三邊定位至少需要3個不共線的錨節(jié)點,而三維定位至少需要4個不共面的錨節(jié)點,所以n≥4[19]。前n-1個式子分別減去最后一個式子,得
(11)
其中,為將方程組(10)轉(zhuǎn)化成矩陣乘法,作如下處理:
(12)
(13)
求解非齊次方程AX=B,解得
X=(A′A)-1*A′B
,
(14)
X即為求解的初始坐標(biāo)。
2.2.1 BFGS擬牛頓法
用BFGS擬牛頓法對三維坐標(biāo)求解,故可視為多變量求解問題,設(shè)向量X(x,y,z)為未知變量,擬牛頓法迭代如式(15)所示,其中Xk為第k次迭代的X值,H-1為求解問題f關(guān)于變量的二階Hessian矩陣,gk為求解問題f關(guān)于求解變量的梯度向量。
(15)
BFGS算法是對牛頓法的改進,其思想是通過迭代方式,矩陣B近似為Hessian矩陣的逆矩陣H-1,即
H-1≈B。
(16)
正定矩陣B迭代公式為
Bk+1=Bk+ΔBk,k=0,1,2,3,…,n。
(17)
(18)
B0=I,
(19)
其中,
sk=Xk+1-Xk,
(20)
yk=f′(Xk+1)-f′(Xk)。
(21)
2.2.2 目標(biāo)函數(shù)設(shè)計
對于未知節(jié)點坐標(biāo),需要滿足定位誤差最小,因此目標(biāo)函數(shù)設(shè)計為
F(x,y,z)=minE(x,y,z)
(22)
,
(23)
式中,E(x,y,z)為定位誤差。
將式(23)展開,整理得
n(x2+y2+z2),
(24)
E(x,y,z)=d-2ax-2by-2cz+
n(x2+y2+z2)。
(25)
多變量的非線性方程組轉(zhuǎn)化成非約束優(yōu)化問題,即E函數(shù)的最小值問題。該函數(shù)作為擬牛頓優(yōu)化的目標(biāo)函數(shù),通過迭代求解,得到未知節(jié)點的近似最優(yōu)解。
本文定位方法把節(jié)點定位過程分為兩個階段,即離線階段和在線階段。定位流程圖如圖1所示。
圖1 定位流程圖
未知節(jié)點定位步驟如下:
(1)離線階段節(jié)點通過與鄰居錨節(jié)點通信,記錄鄰居節(jié)點發(fā)送信號給該節(jié)點后的TL值,并存入指紋庫。
(4)采用多邊定位方法,得到最小二乘解X。
(5)將步驟(4)得到的X作為初始值,采用BFGS算法迭代求解近似解。
(6)輸出近似解(x,y,z)。
對BFGS優(yōu)化子流程細(xì)化,流程圖如圖2所示。流程步驟如下。
圖2 BFGS算法流程圖
(1)初始化參數(shù):設(shè)置初值X0=X、誤差閾值e和最大迭代次數(shù)c,并令B0=I,k:=0。
(2)若k≥c,跳出循環(huán)。
(3)否則計算f′(Xk),若|f′(Xk)|≤ε,輸出最優(yōu)解。
(4)否則,計算搜索方向:dk=-Bkgk。
(5)得到步長γk,令sk=γkdk,xk+1:=xk+sk。
(6)計算gk+1=?f(xk+1),若‖gk+1‖≤ε,輸出xk+1。
(7)否則,計算yk=gk+1-gk。
(8)根據(jù)公式(17),進行迭代計算。
(9)令k=k+1,轉(zhuǎn)至步驟(2)。
采用MATLAB2018仿真工具,仿真內(nèi)容由測距優(yōu)化分析和定位優(yōu)化分析兩部分組成。為了模擬環(huán)境噪聲,在仿真環(huán)境中添加了高斯白噪聲。
為了對測距優(yōu)化,使用仿真工具生成10 m×10 m×10 m三維水下環(huán)境。在區(qū)域內(nèi)部隨機部署10個錨節(jié)點和1個未知節(jié)點。節(jié)點通信半徑設(shè)為5 m。未知節(jié)點可直接與所有錨節(jié)點通信。對PF、RF、KF、傳統(tǒng)測距算法和本文提出的GF測距算法進行5組實驗后,求取每組測距誤差平均值,測距誤差結(jié)果對比如表1所示。
表1 測距誤差結(jié)果對比表
由表1可以看出,本文提出的GF算法平均誤差與PF、RF、KF、傳統(tǒng)測距算法相比,測距優(yōu)化效果最佳,最小誤差可達0.11 m。
針對定位優(yōu)化,使用仿真工具生成100 m×100 m×100 m水下三維網(wǎng)絡(luò)節(jié)點分布結(jié)構(gòu),如圖3所示。其中,黑點為未知節(jié)點,黑色“*”為錨節(jié)點。在該區(qū)域內(nèi)隨機部署100個節(jié)點,其中錨節(jié)點占40%,以保證錨節(jié)點能覆蓋整個網(wǎng)絡(luò)范圍。具體參數(shù)及參數(shù)值如表2所示。
圖3 節(jié)點分布圖
對于每個節(jié)點,其誤差定義為式(26)。其中(xie,yie,zie)為第i個被定位的估計坐標(biāo),(xit,yit,zit)為第i個被定位節(jié)點的實際坐標(biāo)。
(26)
(27)
通過實驗對比ASTL-RQ-PSO、ASTL-SAPSO、 ASTL-GWO和ASTL-BFGS算法,證明本文提出的算法定位誤差優(yōu)于其他算法。4種算法的定位誤差結(jié)果如圖4所示,其中橫坐標(biāo)為節(jié)點序號,縱坐標(biāo)為定位誤差。
由圖4可以看出,ASTL-BFGS算法的定位誤差最小,與ASTL-GWO、ASTL-SAPSO和ASTL-RQ-PSO定位算法相比,定位精度分別提高了約49%、31%和9%。圖5~8為4種算法各自的定位結(jié)果,其中黑點為未知節(jié)點的估計位置,黑色短線為節(jié)點真實位置和估計位置間的偏差,黑色圓圈為不能定位的節(jié)點。圖5為本文提出ASTL-BFGS算法的定位結(jié)果,節(jié)點的定位誤差很小。
圖5 ASTL-BFGS定位結(jié)果
圖6~8為除本文外其他3種算法定位結(jié)果,多數(shù)節(jié)點的定位誤差較大。
圖6 ASTL-RQ-PSO定位結(jié)果
圖7 ASTL-SAPSO定位結(jié)果
圖9為本文提出的基于BFGS優(yōu)化算法與RQ-PSO、SAPSO以及GWO 3種優(yōu)化算法性能對比。由圖9可以看出,隨著迭代次數(shù)增加,定位誤差逐漸降低,同其他算法相比,BFGS算法僅需迭代4次,定位誤差便收斂至接近0。ASTL-RQ-PSO需要14次達到收斂,ASTL-SAPSO需要16次達到收斂,ASTL-GWO需要25次達到收斂,并且,ASTL-RQ-PSO、ASTL-SAPSO和ASTL-GWO 3種算法收斂后的定位誤差均大于ASTL-BFGS算法收斂后的定位誤差。
圖8 ASTL-GWO定位結(jié)果
圖9 BFGS、RQ-PSO、SAPSO以及GWO算法性能對比
進行兩組獨立實驗,每組實驗進行30次,并對每次實驗定位結(jié)果的平均總誤差取均值,以證明算法的普適性。通過分別改變錨節(jié)點數(shù)量和通信半徑,以探究二者分別對未知節(jié)點定位平均總誤差(以下簡稱平均總誤差)的影響。
4.2.1 錨節(jié)點數(shù)量與定位誤差實驗
錨節(jié)點數(shù)量與平均總誤差間的關(guān)系如圖10所示。本實驗中,設(shè)置節(jié)點通信半徑為50 m,其余參數(shù)如表1所示。
圖10 平均總誤差與錨節(jié)點數(shù)量關(guān)系
由圖10可以看出,隨著錨節(jié)點數(shù)量增加,4種算法的平均總誤差逐漸減小,錨節(jié)點數(shù)量為30個時,ASTL-BPFS和ASTL-SAPSO算法的平均總誤差趨向于穩(wěn)定,而ASTL-RQ-PSO算法和ASTL-GWO算法在錨節(jié)點數(shù)量為35時,平均總誤差才趨于穩(wěn)定,且在不同錨節(jié)點數(shù)量的情況下,ASTL-BPFS的平均總誤差均小于其余算法,具體數(shù)據(jù)如表3所示,對每種算法各組的平均總誤差求平均值,ASTL-BFGS、ASTL-RQ-PSO、ASTL-SAPSO和ASTL-GWO 4種算法對應(yīng)結(jié)果分別為1.42,6.95,12.93,18.97 m。可以看出,相比ASTL-RQ-PSO、ASTL-SAPSO和ASTL-GWO 3種算法,ASTL-BFGS的整體定位精度分別提高5.53,11.51,17.55 m。
表3 不同數(shù)量錨節(jié)點時的平均總誤差
4.2.2 通信半徑與定位誤差實驗
平均總誤差和通信半徑的關(guān)系如圖11所示。本實驗中,設(shè)置錨節(jié)點數(shù)量為40,其余參數(shù)如表1所示。
由圖11可以看出,ASTL-BFGS的平均總誤差優(yōu)于其他方法,并且隨著通信半徑增大,未知節(jié)點感知到的錨節(jié)點數(shù)量增多,定位誤差相應(yīng)減小,直到通信半徑從50開始,平均總誤差逐漸趨于平穩(wěn)。
圖11 平均總誤差與通信半徑關(guān)系
針對水下三維水聲無線傳感網(wǎng)絡(luò)節(jié)點定位誤差大的問題,提出一種基于高斯濾波和擬牛頓優(yōu)化的水下定位優(yōu)化算法;針對突發(fā)性環(huán)境噪聲對測距結(jié)果的影響,提出對TL離線采樣樣本進行高斯濾波的方法,對所有的樣本取加權(quán)平均,得到的值代入ASTL測距模型,達到了測距優(yōu)化的目標(biāo),并采用BFGS算法對多邊定位求得未知節(jié)點坐標(biāo)的初始解進行優(yōu)化,以降低定位誤差。經(jīng)仿真實驗驗證,本文提出的算法有效地降低了測距誤差,提高了定位精度。