崔煥慶,趙君宜,羅漢江
(山東科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,山東 青島 266590)
本文主要針對(duì)移動(dòng)錨節(jié)點(diǎn)輔助定位算法進(jìn)行研究。目前,已經(jīng)有學(xué)者對(duì)相關(guān)算法進(jìn)行了研究。SLMAT[1],H-Curves[2]和M-Curves[3]均使用單個(gè)錨節(jié)點(diǎn)掃描部署區(qū)域?!?SCAN[4]對(duì)Z-Curves和SCAN進(jìn)行了改進(jìn),提高了定位精度。SSD[5]通過(guò)減少虛擬錨節(jié)點(diǎn)來(lái)節(jié)省能耗。GSCAN[6]、GTURN和PP-MMAN[7]均使用3個(gè)移動(dòng)錨節(jié)點(diǎn),并使虛擬錨節(jié)點(diǎn)成等邊三角形分布,提高了定位精度。其中,GSCAN的虛擬錨節(jié)點(diǎn)數(shù)量較多,而GTURN的路徑較長(zhǎng)。文獻(xiàn)[8,9]設(shè)計(jì)路徑的目的均為減少共線錨節(jié)點(diǎn)的數(shù)量,提高定位精度。
目前,元啟發(fā)式優(yōu)化算法已經(jīng)非常普遍,并且也廣泛應(yīng)用于無(wú)線傳感器網(wǎng)絡(luò)定位中的未知節(jié)點(diǎn)位置估計(jì)。MGDV-Hop[10]利用混合策略對(duì)螢火蟲(chóng)群優(yōu)化算法進(jìn)行了改進(jìn),提高未知節(jié)點(diǎn)的定位精度。文獻(xiàn)[11]使用粒子群優(yōu)化算法(particle swarm optimization,PSO)來(lái)估計(jì)未知節(jié)點(diǎn)的位置。文獻(xiàn)[12]采用鯨魚(yú)優(yōu)化算法對(duì)接收信號(hào)強(qiáng)度與信號(hào)傳輸距離之間的關(guān)系公式進(jìn)行優(yōu)化,降低了測(cè)量誤差。文獻(xiàn)[13]提出了一種新的非視距的定位算法,并通過(guò)改進(jìn)的粒子群優(yōu)化算法估算目標(biāo)的位置。文獻(xiàn)[14]使用改進(jìn)的灰狼優(yōu)化算法估計(jì)未知節(jié)點(diǎn)的坐標(biāo)。文獻(xiàn)[15]將改進(jìn)樽海鞘群算與DV-Hop結(jié)合,提高了定位精度。
本文的主要貢獻(xiàn)有:
(1)設(shè)計(jì)了一種雙移動(dòng)錨節(jié)點(diǎn)協(xié)作的路徑規(guī)劃算法DASCAN(Dual-Anchor SCAN),縮短了路徑長(zhǎng)度并且使用較少的虛擬錨節(jié)點(diǎn),降低了能耗。
(2)使用加權(quán)質(zhì)心算法和鯨魚(yú)優(yōu)化算法估算未知節(jié)點(diǎn)的坐標(biāo),提高了定位精度。
在無(wú)線傳感器網(wǎng)絡(luò)中,已知自身位置的節(jié)點(diǎn)稱為錨節(jié)點(diǎn),其它節(jié)點(diǎn)稱為未知節(jié)點(diǎn),錨節(jié)點(diǎn)分為靜態(tài)錨節(jié)點(diǎn)和移動(dòng)錨節(jié),后者在移動(dòng)過(guò)程中需定期廣播自身位置等信息。錨節(jié)點(diǎn)廣播的這些信息稱為虛擬錨節(jié)點(diǎn)。假設(shè)無(wú)線傳感器網(wǎng)絡(luò)由NU個(gè)部署在高H、寬L的矩形區(qū)域內(nèi)的未知節(jié)點(diǎn)組成。第i個(gè)節(jié)點(diǎn)Ui的真實(shí)坐標(biāo)為(xi,yi),利用定位算法求得的估計(jì)坐標(biāo)為 (i,i)。 兩個(gè)移動(dòng)錨節(jié)點(diǎn)分別記為MA1、MA2,它們廣播的虛擬錨節(jié)點(diǎn)信息包含實(shí)時(shí)位置和發(fā)送信號(hào)強(qiáng)度兩個(gè)字段。
在RSSI測(cè)距中,無(wú)線信號(hào)在傳播過(guò)程中強(qiáng)度會(huì)隨著距離的增加而降低,并且會(huì)受到環(huán)境因素的影響。通常假設(shè)在理想的自由空間中,RSSI與發(fā)送器和接收器之間的距離的平方成反比。令Pr(d)表示在距離d處的接收功率,其值遵循弗里斯方程
Pr(d)=(λ4πd)2PtGtGr
(1)
其中,Pt是發(fā)射功率,Gt和Gr分別是發(fā)射和接收天線的天線增益,λ是發(fā)射器信號(hào)的波長(zhǎng)(以米為單位)。
但實(shí)際上,一些因素(例如陰影和反射)可能會(huì)影響無(wú)線電信號(hào)的傳播以及接收功率,因素取決于環(huán)境并且是不可預(yù)測(cè)的。由于無(wú)法精確跟蹤陰影效果,因此通常將其建模為對(duì)數(shù)正態(tài)分布的隨機(jī)變量。考慮到隨機(jī)性,信號(hào)強(qiáng)度根據(jù)冪定律隨距離而減小。一種用于無(wú)線電的模型如式(2)所示
Pr(d)=P0(d0)-η10log10(dd0)+Xσ
(2)
其中,P0(d0) 表示在某個(gè)參考距離d0處的接收功率,η表示路徑損耗指數(shù),Xσ表示對(duì)數(shù)正態(tài)隨機(jī)變量,其方差為σ2。通過(guò)該模型,距離d的最大似然估計(jì)如式(3)所示
d^=d0(PrP0(d0))(-1/|η)
(3)
假設(shè)錨節(jié)點(diǎn)與未知節(jié)點(diǎn)的通信范圍是一個(gè)半徑為R的圓。實(shí)際應(yīng)用中,傳感器節(jié)點(diǎn)的信號(hào)傳播容易受周圍環(huán)境的影響,通信范圍不是一個(gè)規(guī)則的圓,所以將通信信號(hào)不規(guī)則度(degree of irregularity,DOI)加入到無(wú)線通信傳播模型中。DOI表征了無(wú)線電射程受多徑、陰影等衰弱影響而導(dǎo)致的傳輸范圍的各向異性,數(shù)值越高表示傳輸范圍受環(huán)境影響越嚴(yán)重,其定義如式(4)所示
(4)
其中,Ki是第i個(gè)方向上的不規(guī)則度,Rand是在[0,1]內(nèi)服從均勻分布的隨機(jī)數(shù),N是正整數(shù)集合。
使用定位算法定位的未知節(jié)點(diǎn)個(gè)數(shù)占未知節(jié)點(diǎn)總數(shù)的比例稱為定位率LR,即
LR=NldNU
(5)
其中,Nld表示被定位節(jié)點(diǎn)的個(gè)數(shù)。平均定位誤差e為
e=1Nld∑Nldi=1(xi-i)2+(yi-i)2
(6)
為了更合理地部署虛擬錨節(jié)點(diǎn),先將監(jiān)視區(qū)域進(jìn)行網(wǎng)格狀劃分。縱向上等間距劃分為n+1行,并從下向上依次編號(hào)為第0、1、2、……、n行,相鄰兩行之間的間距為h,即每個(gè)單元格的高為h。橫向上等間距劃分m+1列,從左向右依次編號(hào)為第0、1、2、……、m列,相鄰兩列之間的間距為d,即每個(gè)單元格的寬為d,網(wǎng)格劃分和虛擬錨節(jié)點(diǎn)部署結(jié)果如圖1所示。
圖1 部署區(qū)域劃分及虛擬錨節(jié)點(diǎn)位置
DASCAN要求奇數(shù)行和偶數(shù)行采用不同的部署方式。在圖1中,偶數(shù)行和奇數(shù)行的虛擬錨節(jié)點(diǎn)分別用A和B表示。 ΔAi,jAi,j+1Bi+1,j和ΔAi,jAi,j+1Bi-1,j是等邊三角形。因此,h=32d。 以左下角為坐標(biāo)原點(diǎn)(0,0),第i行的虛擬錨節(jié)點(diǎn)坐標(biāo)為:
(1)i≤n且為偶數(shù)時(shí),Ai,j=(j×d,i×h), 其中j=0,1,2,…,m。
(2)i≤n且為奇數(shù)時(shí),Bi,k=((k+12)×d,i×h), 其中k=0,1,2,…,m-1。
如果僅用一個(gè)移動(dòng)錨節(jié)點(diǎn),則需要交替遍歷偶數(shù)行和奇數(shù)行,路徑較長(zhǎng)。所以DASCAN采用兩個(gè)移動(dòng)錨節(jié)點(diǎn)以分別遍歷偶數(shù)行和奇數(shù)行的虛擬錨節(jié)點(diǎn)。算法1給出了DASCAN算法。
算法1:路徑規(guī)劃算法
輸入:H、L、h、d。
輸出:MA1、MA2的移動(dòng)路徑
(1) Put MA1and MA2inA0,0andB0,0
(2) SetList1←Φ,List2←Φ
(3)flag←1,i←0,j←1,k←0
(4)whilei (5)ifflag=1 (6)List1←List1∪{Ai,0,Ai,1,…,Ai,m} (7)List2←List2∪{Bi+1,0,Bi+1,1,…,Bi+1,m-1} (8)flag←2 (9)elseifflag=2 (10)List1←List1∪{Ai,m,Ai,m-1,…,Ai,0} (11)List2←List2∪{Bi+1,m-1,Bi+1,m-2,…,Bi+1,0} (12)flag←1 (13)endif (14)i←i+2 (15)endwhile (16)ifn%2=0 &&flag=1 (17)List1←List1∪{An,0,An,1,…,An,m} (18)elseifn%2=0 &&flag=2 (19)List1←List1∪{An,m,An,m-1,…,An,0} (20)endif 算法1中,List1、List2分別用來(lái)儲(chǔ)存MA1、MA2遍歷的虛擬錨節(jié)點(diǎn)列表。第(1)~第(3)行初始化各變量,第(4)~第(15)行計(jì)算List1和List2,其中flag=1表示錨節(jié)點(diǎn)從左向右移動(dòng)(第(5)~第(8)行),flag=2表示錨節(jié)點(diǎn)從右向左移動(dòng)(第(9)~第(13)行)。當(dāng)n為偶數(shù)時(shí),MA1需要額外遍歷最后一行,移動(dòng)方向取決于此時(shí)flag的值(第(16)~第(20)行)。 算法1生成的4種移動(dòng)路徑如圖2所示,其中“flag值”是指執(zhí)行到第(16)行時(shí)flag的值。算法1執(zhí)行結(jié)束后,MA1和MA2分別沿List1、List2遍歷整個(gè)部署區(qū)域,并在指定虛擬錨節(jié)點(diǎn)處廣播信息。 圖2 算法1產(chǎn)生的4種不同路徑 鯨魚(yú)智能優(yōu)化算法是2016年由澳大利亞格里菲斯大學(xué)的Mirjalili等提出的一種新的群體智能優(yōu)化算法,該算法具有實(shí)現(xiàn)簡(jiǎn)單、參數(shù)少以及不易陷入局部最優(yōu)等優(yōu)點(diǎn)。 在鯨魚(yú)優(yōu)化算法中,每個(gè)鯨魚(yú)被看作是一個(gè)可行解。鯨魚(yú)在狩獵時(shí),會(huì)沿著“9”字形或者圓形路徑吐出氣泡包圍獵物,這種狩獵行為稱為bubble-net捕食策略。該算法包括環(huán)繞獵物、螺旋泡泡網(wǎng)獵食以及搜索獵物3個(gè)階段。 在狩獵階段,WOA假設(shè)當(dāng)前算法的最優(yōu)解為目標(biāo)獵物,其它鯨魚(yú)個(gè)體會(huì)向著當(dāng)前適應(yīng)度值最佳的鯨魚(yú)的位置移動(dòng),該行為的數(shù)學(xué)模型如下所示 D=|C·X*(t)-X(t)| (7) X(t+1)=X*(t)-A·D (8) A=2a·r1-a (9) C=2·r2 (10) 其中,t為當(dāng)前迭代次數(shù);A和C是協(xié)同系數(shù)向量;X*表示當(dāng)前最優(yōu)的鯨魚(yú)的位置向量;X(t)表示鯨魚(yú)當(dāng)前的位置向量;在整個(gè)迭代過(guò)程中,a由2線性降到0;r1和r2是[0,1]中的隨機(jī)向量。C為[0,2]內(nèi)的隨機(jī)值構(gòu)成的向量,此系數(shù)提供了隨機(jī)權(quán)重,以避免算法陷入局部最優(yōu)。 鯨魚(yú)在獵食的過(guò)程中會(huì)進(jìn)行兩種不同的行為來(lái)包圍獵物,分別是縮小包圍圈和沿螺旋狀路徑吐氣泡驅(qū)趕獵物,每只鯨魚(yú)選擇這兩種該行為的概率是相等的。數(shù)學(xué)模型如式(11)所示 (11) 其中,b為常數(shù),l和p為均勻分布在[-1,1]中的隨機(jī)數(shù)。 隨著迭代的進(jìn)行,a的值會(huì)從2線性減小到0,a的值的變化會(huì)引起A的變化,當(dāng) |A|<1時(shí),鯨魚(yú)會(huì)向最優(yōu)個(gè)體移動(dòng),當(dāng) |A|>1時(shí),鯨魚(yú)會(huì)隨機(jī)移動(dòng)。鯨魚(yú)隨機(jī)移動(dòng)的數(shù)學(xué)模型如式(12)和式(13)所示 D=|C·Xrand(t)-X(t)| (12) X(t+1)=Xrand(t)-A·D (13) 其中,Xrand是隨機(jī)選擇的鯨魚(yú)位置向量,通過(guò)此方式可以讓W(xué)OA進(jìn)行全局搜索,避免陷入局部最優(yōu)。 在定位階段,使用加權(quán)質(zhì)心和鯨魚(yú)優(yōu)化算法估算未知節(jié)點(diǎn)坐標(biāo),具體步驟如下。 結(jié)合所設(shè)計(jì)的路徑,先使用加權(quán)質(zhì)心算法來(lái)估算未知節(jié)點(diǎn)位置。假設(shè)移動(dòng)錨節(jié)點(diǎn)在部署區(qū)域內(nèi)產(chǎn)生的虛擬錨節(jié)點(diǎn)的數(shù)量為NV,未知節(jié)點(diǎn)Ui(i=1,…,Nu) 維護(hù)一個(gè)虛擬錨節(jié)點(diǎn)列表Li,如果Ui接收到虛擬錨節(jié)點(diǎn)Vj的信標(biāo)信息,則將Vj的坐標(biāo) (xj,yj)、 信號(hào)強(qiáng)度RSSIi,j以及根據(jù)RSSI測(cè)距模型計(jì)算得到的估計(jì)距離dei,j添加至Li中。將所有的虛擬錨節(jié)點(diǎn)按RSSIi,j值排成遞減序,選擇虛擬錨節(jié)點(diǎn)V1、V2、V3的方法為: (1)選擇Li中前兩個(gè)最大RSSIi,j對(duì)應(yīng)的虛擬錨節(jié)點(diǎn)作為V1、V2,在Li中從前往后依次查找可與V1、V2構(gòu)成邊長(zhǎng)為d的等邊三角形的虛擬錨節(jié)點(diǎn)Vk(k>2)作為V3。 (2)如果利用步驟(1)不能找到滿足此條件的V3,則選擇剩余虛擬錨節(jié)點(diǎn)中最大RSSIi,j對(duì)應(yīng)的虛擬錨節(jié)點(diǎn)作為V3。 未知節(jié)點(diǎn)Ui在選擇V1、V2、V3后,使用加權(quán)質(zhì)心算法估計(jì)未知節(jié)點(diǎn)Ui的位置 (′i,′i)=∑3j=1ωj×(xj,yj)∑3j=1ωj (14) 其中,ωj=RSSIj為加權(quán)因子,第i個(gè)節(jié)點(diǎn)的定位誤差為ei,WCL=(xi-′i)2+(yi-′i)2。 找出所有可定位節(jié)點(diǎn)的定位誤差中的最大值,記為emax。 根據(jù)使用加權(quán)質(zhì)心得到的Ui的估算坐標(biāo) (′i,′i) 和最大定位誤差emax確定對(duì)應(yīng)的WOA算法搜索空間SPi,即:[′i-emax,′i+emax]×[′i-emax,′i+emax], 如圖3所示。 圖3 根據(jù)質(zhì)心確定搜索空間SPi 在二維的無(wú)線傳感器網(wǎng)絡(luò)中,第i個(gè)未知節(jié)點(diǎn)與第j個(gè)虛擬錨節(jié)點(diǎn)估計(jì)距離的平均誤差定義如下 ei,j=|(xi-xj)2+(yi-yj)2-dei,j| (15) 其中,(xj,yj) 為虛擬錨節(jié)點(diǎn)Vj的坐標(biāo),(xi,yi) 為傳感器節(jié)點(diǎn)Ui的實(shí)際位置,dei,j為虛擬錨節(jié)點(diǎn)Vj與傳感器節(jié)點(diǎn)Ui的測(cè)量距離。通過(guò)這種方法,我們可以得到如下的目標(biāo)函數(shù) minf(x,y)=1Ni∑Nij=1|(x-xj)2+(y-yj)2-dei,j| (16) 其中,Ni是傳感器節(jié)點(diǎn)Ui可以接收到的信標(biāo)信息數(shù)。 最后,在SPi中隨機(jī)產(chǎn)生鯨魚(yú)種群,使用以上目標(biāo)函數(shù)估算Ui的最終坐標(biāo)。算法2給出了計(jì)算第i個(gè)傳感器節(jié)點(diǎn)坐標(biāo)Ui的過(guò)程。 算法2:節(jié)點(diǎn)位置估算算法 輸入:Li,MaxIter (1)SortLiin descending order according toRSSIi,j (2)ifdist(Li(1),Li(2))=dist(Li(1),Li(k))=dist(Li(2),Li(k))=d (3)V1←Li(1);V2←Li(2);V3←Li(k) (4)else (5)V1←Li(1);V2←Li(2);V3←Li(3) (6)endif (8)Calculate localization error of each node and findemax (9)SPi←[′i-emax,′i+emax]×[′i-emax,′i+emax] (10)Initialize whales populationXi(i=1,2,…,n) inSPi (11)Calculate fitness of each whale using Eq.(16) (12)X*←the best search agent (13)while(t (14)foreach whale (15) Updatea,A,C,l, andp (16)ifp<0.5 (17)if|A|<1 (18) Update current whale by Eq.(11)(p<0.5) (19)elseif|A|>1 (20) Select a random whale (Xrand) (21) Update current whale by Eq.(13) (22)endif (23)elseifp>0.5 (24) Update current whale by the Eq.(11) (25)endif (26)endfor (27) Check if any whale goes beyond theSPiand amend it (28) Calculate fitness of each whale (29) UpdateX*if there is a better solution (30)t←t+1 (31)endwhile (32)returnX* 算法2中的第(1)~第(6)行根據(jù)Ui找到對(duì)應(yīng)的V1、V2、V3。第(7)~第(9)根據(jù)式(14)得到 (′i,′i), 然后計(jì)算每個(gè)未知節(jié)點(diǎn)的定位誤差并找到最大值emax。最后根據(jù) (′i,′i) 和emax確定出對(duì)應(yīng)的搜索空間SPi,限制WOA的初始化區(qū)域,加快算法收斂速度。第(10)~第(12)行在SPi中初始化鯨魚(yú)的位置,使用式(16)計(jì)算每一個(gè)個(gè)體的適應(yīng)度值,找出適應(yīng)度最好的個(gè)體記為X*。第(13)~第(31)行是鯨魚(yú)優(yōu)化算法的執(zhí)行過(guò)程,MaxIter為最大迭代次數(shù)。先更新a、A、C、l和p的值,當(dāng)p<0.5且 |A|<1時(shí),鯨魚(yú)群向最優(yōu)鯨魚(yú)位置移動(dòng),使用式(11)更新每只鯨魚(yú)的位置。當(dāng)p<0.5且 |A|>1時(shí),鯨魚(yú)群隨機(jī)移動(dòng),使用式(13)更新每只鯨魚(yú)的位置。當(dāng)p>0.5時(shí),鯨魚(yú)沿螺旋狀路徑吐出氣泡包圍獵物,使用式(11)更新每只鯨魚(yú)的位置。修正超出搜索空間SPi的鯨魚(yú)個(gè)體。使用式(16)更新每只鯨魚(yú)的適應(yīng)度值,并更新X*的值。在迭代循環(huán)結(jié)束前重復(fù)執(zhí)行以上步驟。第(32)行返回X*的值即為 (i,i)。 使用MATLAB 2016a進(jìn)行仿真實(shí)驗(yàn)。部署區(qū)域?yàn)?00 m×100 m的正方形二維區(qū)域,對(duì)SCAN[1]、GTURN[7]、GSCAN[7]、PP-MMAN[4]、H-Curves[2]、M-Curves[3]以及本文提出的DASCAN在路徑長(zhǎng)度、定位精度和定位率方面進(jìn)行對(duì)比。 d取值為10 m、15 m、20 m、25 m。實(shí)驗(yàn)結(jié)果如圖4所示??梢钥闯?,d相同時(shí),GTURN和GSCAN都是最長(zhǎng)的,原因在于它們使用3個(gè)移動(dòng)錨節(jié)點(diǎn),并且GSCAN存在重復(fù)路徑。H-Curves、SCAN和M-Curves由于只有一個(gè)移動(dòng)錨節(jié)點(diǎn),并且路徑結(jié)構(gòu)較為簡(jiǎn)單,所以移動(dòng)路徑較短。DASCAN短于PP-MMAN,比最長(zhǎng)的GTURN路徑平均縮短了44%,比最短的SCAN路徑平均長(zhǎng)了26.5%。 圖4 路徑長(zhǎng)度比較 下面對(duì)不同路徑規(guī)劃算法的虛擬錨節(jié)點(diǎn)數(shù)目進(jìn)行對(duì)比。實(shí)驗(yàn)結(jié)果如圖5所示,7種路徑規(guī)劃算法的虛擬錨節(jié)點(diǎn)的平均數(shù)量排序?yàn)镚SCAN>GTURN>PP-MMAN=DASCAN>H-Curves>M-Curves>SCAN。GSCAN的虛擬錨節(jié)點(diǎn)數(shù)量是最多的,這是因?yàn)镚SCAN的移動(dòng)錨節(jié)點(diǎn)會(huì)在某些位置重復(fù)廣播信標(biāo)信息。DASCAN產(chǎn)生的虛擬錨節(jié)點(diǎn)數(shù)目均少于GSCAN、GTURN、PP-MMAN以及M-Curves,但是比起H-Curves和SCAN要更多。因?yàn)樵谙嗤琩的情況下,DASCAN的路徑相鄰兩行之間的距離比SCAN和H-curve更小,所以在部署區(qū)域均為100 m2的情況下,DASCAN會(huì)產(chǎn)生更多的虛擬錨節(jié)點(diǎn)。雖然M-Curves的虛擬錨節(jié)點(diǎn)更密集,但是該算法不需要在部署區(qū)域邊界生成虛擬錨節(jié)點(diǎn)。從圖中可以看出,本算法產(chǎn)生的虛擬錨節(jié)點(diǎn)數(shù)目相比GSCAN平均減少了53%,相比SCAN平均增加了32%。 圖5 虛擬錨節(jié)點(diǎn)數(shù)量比較 綜合路徑長(zhǎng)度以及虛擬錨節(jié)點(diǎn)數(shù)量,分別計(jì)算7種路徑規(guī)劃算法產(chǎn)生的總能耗。實(shí)驗(yàn)結(jié)果如圖6所示,7種路徑規(guī)劃算法的能耗從高到低為GTURN、GSCAN、PP-MMAN、DASCAN、H-Curves、M-Curves、SCAN。由于GSCAN和GTURN的虛擬錨節(jié)點(diǎn)數(shù)量較多,路徑較長(zhǎng),所以這兩種算法的能耗比其它算法更高,由于DASCAN的路徑長(zhǎng)度比PP-MMAN更短,所以能耗相對(duì)更低。H-Curves、M-Curves和SCAN的虛擬錨節(jié)點(diǎn)數(shù)量較少,路徑較短,產(chǎn)生的能耗也更低。本文算法相比能耗最高的GTURN能耗平均降低了42.7%,相比能耗最低的SCAN能耗平均增加了35.4%。 圖6 能耗比較 取R=15 m,DOI=0,實(shí)驗(yàn)結(jié)果如圖7所示。可以看出,無(wú)論使用哪一種路徑規(guī)劃算法,使用加權(quán)質(zhì)心算法計(jì)算得到的結(jié)果誤差最大,而使用WOA得到的結(jié)果誤差最小。在使用加權(quán)質(zhì)心定位未知節(jié)點(diǎn)時(shí),H-Curves、M-Curves 和SCAN的定位誤差要遠(yuǎn)遠(yuǎn)高于其它路徑規(guī)劃算法,當(dāng)使用三邊定位時(shí),所有路徑規(guī)劃算法的定位誤差大幅降低,H-Curves、M-Curves和SCAN的定位誤差仍略高于其它路徑規(guī)劃算法。在使用PSO和WOA定位節(jié)點(diǎn)時(shí),所有路徑規(guī)劃算法的定位誤差進(jìn)一步下降,并且WOA的平均定位誤差略低于PSO,此時(shí)H-Curves和SCAN的定位誤差仍要高于其它算法。 將所有路徑與WOA算法聯(lián)合來(lái)對(duì)比性能。實(shí)驗(yàn)結(jié)果如圖8所示。從圖中可以看出,隨著DOI的增加,每個(gè)未知節(jié)點(diǎn)接收到的廣播信息數(shù)量減少,每種路徑規(guī)劃算法的定位誤差均受到了DOI的影響,但影響幅度有所差別。由于SCAN和H-Curves存在大量的共線虛擬錨節(jié)點(diǎn),所以定位誤差相比其它路徑更大,而且更容易受DOI的影響。而DASCAN和其余的路徑受DOI影響相對(duì)較小。 圖8 路徑在不同DOI下的定位精度 最后不考慮DOI的影響,比較每種路徑在不同的通信半徑R下的定位精度。實(shí)驗(yàn)結(jié)果如圖9所示??梢钥闯觯?dāng)d=15 m時(shí),每種路徑的平均定位誤差均隨著通信半徑R的增大而增加。雖然通信半徑越大,每個(gè)未知節(jié)點(diǎn)接收到的信標(biāo)信息越多,但是由于RSSI的缺陷,未知節(jié)點(diǎn)與距離較遠(yuǎn)的虛擬錨節(jié)點(diǎn)之間的測(cè)距誤差較大。所以當(dāng)通信半徑增大時(shí),定位誤差會(huì)變大。H-Curves和SCAN在不同R下的定位誤差均高于其它定位算法,DASCAN的定位誤差以及受通信半徑的影響較小。 圖9 路徑在不同通信半徑下的定位精度 取d=15 m,R取0.8d、1.0d、1.2d、1.4d,DOI=0、0.05、0.1、0.15、0.2。實(shí)驗(yàn)結(jié)果如圖10所示。 圖10 路徑在不同通信半徑下的定位率 整體來(lái)看,每種路徑的定位率隨著Rd的增大而增大。在每種取值的情況下,DASCAN、GTURN、GSCAN和PP-MMAN的定位率十分接近,其余路徑的定位率從高到低依次為M-Curves、H-Curves、SCAN。當(dāng)R=0.8d時(shí),7種路徑的定位率差距最大,此時(shí)DASCAN、GTURN、GSCAN和PP-MMAN的定位率約為50%,H-Curves和SCAN僅能定位20%左右的未知節(jié)點(diǎn)。當(dāng)R=1.4d時(shí),7種路徑均可定位所有未知節(jié)點(diǎn)。 最后,比較了在不同DOI、R對(duì)定位率的影響,實(shí)驗(yàn)結(jié)果如圖11、圖12、圖13和圖14所示。整體來(lái)看,每種DOI取值下,每種路徑的定位率隨著Rd的增大而增大。每種取值情況下,DASCAN、GSCAN、GTURN和PP-MMAN的定位率都十分接近,均高于H-Curves、M-Curves、SCAN的定位率。DASCAN、GSCAN、GTURN、PP-MMAN的定位率接近,高于其它路徑。整體來(lái)看,DASCAN的定位率比M-Curves、H-Curves、SCAN分別平均高出3%、15%、19%。R=0.8d,DOI=0.2時(shí),7種路徑的平均定位率最低,此時(shí)DASCAN的定位率約30%,H-Curves和SCAN的定位率低于10%。R=1.4d,DOI=0.05時(shí),7種路徑的定位率均為100%。當(dāng)R=d,DOI=0.2時(shí),DASCAN的定位率相比其它路徑平均提升最大,為30%;R=d,DOI=0.05時(shí),DASCAN的定位率相比其它路徑平均提升最小,為20%。 圖11 路徑在不同通信半徑下的定位率(DOI=0.05) 圖12 路徑在不同通信半徑下的定位率(DOI=0.1) 圖13 路徑在不同通信半徑下的定位率(DOI=0.15) 圖14 路徑在不同通信半徑下的定位率(DOI=0.2) 綜上,DASCAN比GTURN、GSCAN、PP-MMAN路徑短,避免了重復(fù)廣播信息,從而降低了移動(dòng)錨節(jié)點(diǎn)的能耗。同時(shí),比H-Curves、M-Curves和SCAN有更高的定位率和定位精度,配合WOA可以進(jìn)一步提高算法的定位精度。 本文提出了一種基于雙移動(dòng)錨節(jié)點(diǎn)和鯨魚(yú)優(yōu)化的無(wú)線傳感器網(wǎng)絡(luò)定位算法,設(shè)計(jì)了一種雙移動(dòng)錨節(jié)點(diǎn)路徑,并使用加權(quán)質(zhì)心算法輔助鯨魚(yú)優(yōu)化算法估算未知節(jié)點(diǎn)的坐標(biāo),提高了定位精度。實(shí)驗(yàn)結(jié)果表明,DASCAN比其它采用多個(gè)移動(dòng)錨節(jié)點(diǎn)的路徑更短,定位誤差更小,比H-Curves等采用單個(gè)移動(dòng)錨節(jié)點(diǎn)的定位率、定位精度更高,并且受DOI和RSSI測(cè)距誤差的影響更小。 但是,本文所提出的算法在部署區(qū)域的邊緣位置的定位精度較低,下一步需提出用于區(qū)域邊緣未知節(jié)點(diǎn)定位的補(bǔ)償算法。2.2 鯨魚(yú)優(yōu)化算法
2.3 節(jié)點(diǎn)位置估算算法
3 仿真實(shí)驗(yàn)
3.1 路徑對(duì)比
3.2 定位精度對(duì)比
3.3 定位率對(duì)比
4 結(jié)束語(yǔ)