劉國(guó)繁, 趙天霓
(1.湖南工程學(xué)院 電氣信息學(xué)院,湖南 湘潭 411104;2.湘潭大學(xué) 信息工程學(xué)院,湖南 湘潭 411105)
無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)自身位置信息的獲取是大多數(shù)應(yīng)用的基礎(chǔ),節(jié)點(diǎn)定位技術(shù)是無(wú)線傳感器網(wǎng)絡(luò)的關(guān)鍵支撐技術(shù)。依據(jù)是否測(cè)量距離,定位算法可劃分為基于測(cè)距的算法和非測(cè)距的算法[1]。前者[2]對(duì)距離進(jìn)行直接測(cè)量,通常定位精度相對(duì)較高,但節(jié)點(diǎn)需要額外硬件的支持,并且定位過(guò)程會(huì)消耗大量的能量。非測(cè)距算法[3]則依靠網(wǎng)絡(luò)連通度等信息即可計(jì)算未知節(jié)點(diǎn)的位置,對(duì)節(jié)點(diǎn)的硬件要求小。
反向傳播(back propagation,BP)定位算法是將BP神經(jīng)網(wǎng)絡(luò)用于節(jié)點(diǎn)定位的一類算法,但傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)需要人為設(shè)置大量訓(xùn)練參數(shù),存在訓(xùn)練速度慢并且容易陷入局部最優(yōu)解等問(wèn)題。極限學(xué)習(xí)機(jī)(extreme learning machine,ELM)的輸入權(quán)值和隱含層閾值均隨機(jī)產(chǎn)生,僅需要設(shè)置網(wǎng)絡(luò)的隱含層節(jié)點(diǎn)個(gè)數(shù),即可產(chǎn)生唯一最優(yōu)解,并且無(wú)需迭代,因而學(xué)習(xí)速度快,具有良好的泛化性能[4~6]。將ELM應(yīng)用于節(jié)點(diǎn)定位可有效避免BP定位算法存在的問(wèn)題,改善定位性能。
現(xiàn)有的定位算法均表明,錨節(jié)點(diǎn)比例越高,定位的精度越高[3],但是錨節(jié)點(diǎn)的增多會(huì)使無(wú)線傳感器網(wǎng)絡(luò)的成本增加。引入虛擬節(jié)點(diǎn)[7~9]及次錨節(jié)點(diǎn)[10,11]等于虛擬地增加錨節(jié)點(diǎn)比例,在不增加硬件成本情況下,提高了無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)定位精度。本文將ELM用于無(wú)線傳感器網(wǎng)絡(luò)的節(jié)點(diǎn)定位,引入虛擬節(jié)點(diǎn)進(jìn)一步提高定位精度,仿真結(jié)果表明:使用ELM定位具有較小的定位誤差,且結(jié)合虛擬節(jié)點(diǎn)可進(jìn)一步減小定位誤差。
對(duì)于N個(gè)樣本數(shù)組(xi,ti),xi=[xi1,xi2,...,xin]T∈Rn,ti=[ti1,ti2,...,tim]T∈Rm,隱含層節(jié)點(diǎn)數(shù)為L(zhǎng),激活函數(shù)為g(x),ELM模型可表示為
(1)
式中wj=[wj1,wj2,…,wjn]T為連接輸入節(jié)點(diǎn)與第j個(gè)隱含層節(jié)點(diǎn)的權(quán)值向量;βj為連接第j個(gè)隱含層節(jié)點(diǎn)與輸出節(jié)點(diǎn)間的權(quán)值向量;bj為第j個(gè)隱含層節(jié)點(diǎn)的閾值;g(wjxi+bj)是在輸入為xi時(shí)第j個(gè)隱含層節(jié)點(diǎn)的輸出。SLFNs模型能以零誤差逼近這N個(gè)樣本,上述N個(gè)等式可以寫(xiě)為
(2)
式中H為隱含層輸出矩陣,H的第i列為第i個(gè)隱含層的節(jié)點(diǎn)對(duì)應(yīng)于輸入x1,x2,…,xN的輸出。求解式(2),可以得到網(wǎng)絡(luò)參數(shù)為
β=H*T=(HTH)-1HTT
(3)
式中H*為隱含層輸出矩陣H的Moore-Penrose廣義逆。
每個(gè)錨節(jié)點(diǎn)將自己的位置坐標(biāo)、自身ID信息、跳數(shù)(初值為0) 作為一個(gè)數(shù)據(jù)包發(fā)送給通信半徑內(nèi)的鄰居節(jié)點(diǎn)。鄰居節(jié)點(diǎn)接收數(shù)據(jù)包后,記錄下到錨節(jié)點(diǎn)的跳數(shù),當(dāng)接收到來(lái)自同一個(gè)錨節(jié)點(diǎn)的多個(gè)跳數(shù)信息時(shí),刪除較大的跳數(shù)信息,保存最小的跳數(shù)信息,跳數(shù)值加1繼續(xù)轉(zhuǎn)發(fā)至鄰居節(jié)點(diǎn)。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)(包括錨節(jié)點(diǎn))記錄了距每個(gè)錨節(jié)點(diǎn)間的最小跳數(shù)。
設(shè)Si=(xi,yi)表示第i個(gè)節(jié)點(diǎn)的坐標(biāo)(位置)。Bi=[bi1,bi2,…,bim,…,biM]為各個(gè)錨節(jié)點(diǎn)間的最小跳數(shù),bim為第i個(gè)錨節(jié)點(diǎn)與第m個(gè)錨節(jié)點(diǎn)間最小跳數(shù),i=1,2,…,M,m=1,2,…,M,當(dāng)i=m,有bim=0。Bj=[bj1,bj2,…,bjm,…,bjM]為各未知節(jié)點(diǎn)到各錨節(jié)點(diǎn)之間的最小跳數(shù),bjm為第j個(gè)未知節(jié)點(diǎn)與第m個(gè)錨節(jié)點(diǎn)間最小跳數(shù),j=M+1,M+2,…,N,m=1,2,…,M。則估算步驟為:
1)無(wú)線傳感器網(wǎng)絡(luò)中隨機(jī)放置N個(gè)節(jié)點(diǎn),其中前M個(gè)為錨節(jié)點(diǎn),剩余N-M個(gè)為未知節(jié)點(diǎn)。錨節(jié)點(diǎn)向周圍鄰居節(jié)點(diǎn)發(fā)送坐標(biāo)、ID、跳數(shù)信息,網(wǎng)絡(luò)中所有節(jié)點(diǎn)記錄下最小跳數(shù)信息。
2)建立各節(jié)點(diǎn)與錨節(jié)點(diǎn)間最小跳數(shù)與對(duì)應(yīng)節(jié)點(diǎn)位置的ELM關(guān)系模型。以各節(jié)點(diǎn)與錨節(jié)點(diǎn)間最小跳數(shù)為輸入,對(duì)應(yīng)節(jié)點(diǎn)位置為輸出,將實(shí)驗(yàn)數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集。
3)將Bi=[bi1,bi2,…,bim,…,biM]作為訓(xùn)練集的輸入,對(duì)應(yīng)錨節(jié)點(diǎn)的位置Si=(xi,yi)為訓(xùn)練集的輸出,i=1,2,…,M,m=1,2,…,M,對(duì)ELM算法進(jìn)行訓(xùn)練,保存訓(xùn)練獲得的參數(shù)H和β。
4)將Bj=[bj1,bj2,…,bjm,…,bjM]作為測(cè)試集,測(cè)試結(jié)果為對(duì)應(yīng)未知節(jié)點(diǎn)的位置Sj=(xj,yj)。輸入測(cè)試集,獲取測(cè)試結(jié)果并分析。
文獻(xiàn)[8]將一部分未知節(jié)點(diǎn)升級(jí)為次錨節(jié)點(diǎn)實(shí)現(xiàn)了未知節(jié)點(diǎn)的定位問(wèn)題。即網(wǎng)絡(luò)部署階段的部分未知節(jié)點(diǎn),在定位過(guò)程得到較為精確的位置信息,升級(jí)為次錨節(jié)點(diǎn),進(jìn)一步對(duì)未知節(jié)點(diǎn)進(jìn)行定位。節(jié)約了網(wǎng)絡(luò)成本并且使網(wǎng)絡(luò)定位精度得到了有效提高。
次錨節(jié)點(diǎn)的選擇,是在對(duì)未知節(jié)點(diǎn)進(jìn)行定位后,從中選出定位精度較為準(zhǔn)確的未知節(jié)點(diǎn)升級(jí)為次錨節(jié)點(diǎn)。次錨節(jié)點(diǎn)的位置信息是未知節(jié)點(diǎn)定位后得到的估計(jì)位置,由于未知節(jié)點(diǎn)的實(shí)際位置是未知的,從而無(wú)法判斷未知節(jié)點(diǎn)的實(shí)際位置與估計(jì)位置的誤差。本文使用虛擬節(jié)點(diǎn)來(lái)解決這一問(wèn)題,在所有未知節(jié)點(diǎn)中選出定位誤差相對(duì)較小的未知節(jié)點(diǎn)作為次錨節(jié)點(diǎn)。
虛擬節(jié)點(diǎn)沒(méi)有節(jié)點(diǎn)間的通信和信息交互能力,不能直接獲取虛擬節(jié)點(diǎn)到各錨節(jié)點(diǎn)之間的最小跳數(shù),但是可以將距離轉(zhuǎn)化為跳數(shù)。假設(shè)虛擬節(jié)點(diǎn)的位置已知,可先求出虛擬節(jié)點(diǎn)與錨節(jié)點(diǎn)間距離,再將距離信息轉(zhuǎn)化為跳數(shù)信息。
如圖1,節(jié)點(diǎn)O為錨節(jié)點(diǎn),節(jié)點(diǎn)A和B為虛擬節(jié)點(diǎn),O的通信半徑為R,可知虛擬節(jié)點(diǎn)A和錨節(jié)點(diǎn)O之間距離DOA
圖1 跳數(shù)分析
獲取虛擬節(jié)點(diǎn)與各錨節(jié)點(diǎn)之間最小跳數(shù)信息后,用訓(xùn)練好的ELM估計(jì)虛擬節(jié)點(diǎn)的位置信息。
將虛擬節(jié)點(diǎn)估計(jì)位置與實(shí)際位置進(jìn)行比較,選出誤差足夠小的虛擬節(jié)點(diǎn),刪除其余的虛擬節(jié)點(diǎn),并記錄虛擬節(jié)點(diǎn)到各錨節(jié)點(diǎn)的最小跳數(shù)。
為了確定次錨節(jié)點(diǎn),設(shè)到所有錨節(jié)點(diǎn)最小跳數(shù)相同的點(diǎn)位置相近。篩選出虛擬節(jié)點(diǎn)到各錨節(jié)點(diǎn)最小跳數(shù)與到各錨節(jié)點(diǎn)最小跳數(shù)相同的未知節(jié)點(diǎn),其坐標(biāo)即對(duì)應(yīng)虛擬節(jié)點(diǎn)坐標(biāo),將之升級(jí)為次錨節(jié)點(diǎn)。
1)隨機(jī)放置N個(gè)節(jié)點(diǎn),其中前M個(gè)為錨節(jié)點(diǎn),剩余N-M個(gè)未知節(jié)點(diǎn)。錨節(jié)點(diǎn)向周圍鄰居節(jié)點(diǎn)發(fā)送坐標(biāo)、ID、跳數(shù)信息,網(wǎng)絡(luò)中所有節(jié)點(diǎn)記錄下最小跳數(shù)信息。Si=(xi,yi)表示第i個(gè)節(jié)點(diǎn)的坐標(biāo)(位置)。Bi=[bi1,bi2…bim…,biM]為各個(gè)錨節(jié)點(diǎn)間的最小跳數(shù)。Bj=[bj1,bj2,…bjm…,bjM]為各未知節(jié)點(diǎn)到各錨節(jié)點(diǎn)之間的最小跳數(shù)。
2)建立各節(jié)點(diǎn)與錨節(jié)點(diǎn)間最小跳數(shù)與對(duì)應(yīng)節(jié)點(diǎn)位置的ELM關(guān)系模型。以各節(jié)點(diǎn)與錨節(jié)點(diǎn)間最小跳數(shù)為輸入,對(duì)應(yīng)節(jié)點(diǎn)位置為輸出,將實(shí)驗(yàn)數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集。
3)將Bi作為訓(xùn)練集的輸入,對(duì)應(yīng)錨節(jié)點(diǎn)的位置Si為訓(xùn)練集的輸出。對(duì)ELM算法進(jìn)行訓(xùn)練,保存訓(xùn)練獲得的參數(shù)H和β。
4)在網(wǎng)絡(luò)中設(shè)置C個(gè)虛擬節(jié)點(diǎn),其位置表示為T(mén)p=(xp,yp),將虛擬節(jié)點(diǎn)與錨節(jié)點(diǎn)間距離轉(zhuǎn)化為跳數(shù)。各虛擬節(jié)點(diǎn)到各錨節(jié)點(diǎn)之間的最小跳數(shù)Bp=[bp1,bp2,…,bpm,…,bpM],bpm為第p個(gè)虛擬節(jié)點(diǎn)與第m個(gè)錨節(jié)點(diǎn)間最小跳數(shù),p=1,2,…,C,m=1,2,…,M。
6)篩選出Bj=[bj1,bj2,…,bjm,…,bjM]與Bq=[bq1,bq2,…bqm,…,bqM]相同的未知節(jié)點(diǎn),將這P個(gè)未知節(jié)點(diǎn)確定為次錨節(jié)點(diǎn),P≤D。
7)將次錨節(jié)點(diǎn)和錨節(jié)點(diǎn)均作為無(wú)線傳感器網(wǎng)絡(luò)的錨節(jié)點(diǎn)為其余未知節(jié)點(diǎn)提供定位信息。此時(shí)網(wǎng)絡(luò)中錨節(jié)點(diǎn)個(gè)數(shù)為M+P個(gè),未知節(jié)點(diǎn)N-M-P個(gè)。
8)重新構(gòu)建各節(jié)點(diǎn)與錨節(jié)點(diǎn)間最小跳數(shù)與對(duì)應(yīng)節(jié)點(diǎn)位置的ELM關(guān)系模型。以Bi=[bi1,bi2,…,bim,…,bi(M+P)],i=1,2…,M+P,m=1,2,…,M+P,為訓(xùn)練集的輸入,對(duì)應(yīng)錨節(jié)點(diǎn)的位置Si=(xi,yi)為訓(xùn)練集的輸出訓(xùn)練ELM。
9)令Bj=[bj1,bj2,…,bjm,…,bjM]為測(cè)試集,測(cè)試結(jié)果為對(duì)應(yīng)未知節(jié)點(diǎn)的位置Sj=(xj,yj),j=M+P+1,M+2,…,N,m=1,2,…,M+P。輸入測(cè)試集,獲取測(cè)試結(jié)果并分析。
為驗(yàn)證所述方法的性能,對(duì)傳統(tǒng)基于距離矢量跳(distance vector-based hop,DV-Hop)定位算法,BP定位算法改進(jìn)的加權(quán)質(zhì)心定位算法基于次級(jí)錨節(jié)點(diǎn)(improved weighted centroid localization algorithm for WSNs based on secondary anchor nodes,,IWCLA-SAN)算法[11],ELM定位算法,以及引入虛擬節(jié)點(diǎn)的ELM算法分別在MATLAB平臺(tái)上進(jìn)行仿真。設(shè)所有節(jié)點(diǎn)均隨機(jī)分布在100 m×100 m的區(qū)域內(nèi),每組不同條件的均仿真運(yùn)行100次,對(duì)結(jié)果取平均值進(jìn)行分析比較。
對(duì)不同的錨節(jié)點(diǎn)比例進(jìn)行仿真對(duì)比,共隨機(jī)分布200個(gè)節(jié)點(diǎn),通信半徑設(shè)為40 m,其如圖2所示。仿真結(jié)果中每種算法的定位誤差均隨錨節(jié)點(diǎn)所占比例的提升而減小。在錨節(jié)點(diǎn)比例小于10 %時(shí),IWCLA-SAN算法誤差最小。但在錨節(jié)點(diǎn)比例大于等于10 %的情況下,引入虛擬節(jié)點(diǎn)的ELM定位算法較IWCLA-SAN,BP算法及DV-Hop算法誤差小。引入虛擬節(jié)點(diǎn)的ELM算法較ELM算法定位誤差平均下降了3.76 %,說(shuō)明在錨節(jié)點(diǎn)所占比例不同的情況下,引入虛擬節(jié)點(diǎn)升級(jí)次錨節(jié)點(diǎn)對(duì)于降低節(jié)點(diǎn)定位誤差有效。
圖2 錨節(jié)點(diǎn)所占比例和定位誤差關(guān)系
對(duì)不同通信半徑進(jìn)行仿真,仿真中共隨機(jī)分布200個(gè)節(jié)點(diǎn),錨節(jié)點(diǎn)比例為10 %,仿真結(jié)果如圖3所示。在通信半徑小于35 m的情況下,IWCLA-SAN算法的定位誤差最小,但在通信半徑大于等于35 m的情況下,ELM算法較IWCLA-SAN、BP算法和DV-Hop算法誤差小,且引入虛擬節(jié)點(diǎn)的ELM算法較ELM算法定位誤差平均降低了4.22 %,表明在通信半徑不同的情況下,引入虛擬節(jié)點(diǎn)升級(jí)次錨節(jié)點(diǎn)對(duì)于降低節(jié)點(diǎn)定位誤差有效。
圖3 通信半徑和定位誤差的關(guān)系
對(duì)不同總節(jié)點(diǎn)數(shù)目進(jìn)行仿真,仿真通信半徑為40 m,錨節(jié)點(diǎn)比例為10 %,仿真結(jié)果如圖4所示。當(dāng)總節(jié)點(diǎn)數(shù)小于300個(gè)時(shí),IWCLA-SAN算法的定位誤差最小,但當(dāng)總節(jié)點(diǎn)數(shù)大于等于300個(gè)時(shí),ELM算法較IWCLA-SAN算法,BP算法及DV-Hop算法誤差都要小,且引入虛擬節(jié)點(diǎn)的ELM算法較ELM算法定位誤差平均降低了3.56 %,亦說(shuō)明在總節(jié)點(diǎn)數(shù)目不同的時(shí),引入虛擬節(jié)點(diǎn)升級(jí)次錨節(jié)點(diǎn)對(duì)于降低節(jié)點(diǎn)定位誤差有效。
圖4 總節(jié)點(diǎn)數(shù)和定位誤差的關(guān)系
采用虛擬節(jié)點(diǎn)和ELM算法結(jié)合的算法選出次錨節(jié)點(diǎn)來(lái)提高錨節(jié)點(diǎn)比例,降低定位誤差。在錨節(jié)點(diǎn)所占比例,通信半徑,總節(jié)點(diǎn)數(shù)目變化的情況下,均可以減小定位誤差,說(shuō)明本文算法可以有效減小定位誤差。算法總體較DV-Hop算法和BP定位算法的誤差小,適用于無(wú)線傳感器網(wǎng)絡(luò)的定位,但對(duì)于錨節(jié)點(diǎn)比例和通信半徑以及總節(jié)點(diǎn)數(shù)目有一定的要求。
參考文獻(xiàn):
[1] 彭 宇,王 彤.無(wú)線傳感器網(wǎng)絡(luò)定位技術(shù)綜述[J].電子測(cè)量與儀器學(xué)報(bào),2011,25(5):389-399.
[2] 莫宏偉,董會(huì)元,基于光電傳感器的移動(dòng)機(jī)器人室內(nèi)定位[J].自動(dòng)化技術(shù)與應(yīng)用,2014,33(10):33-36.
[3] 楊石磊,樊曉平,劉少?gòu)?qiáng),等.一種改進(jìn)的無(wú)線傳感器網(wǎng)絡(luò)DV-Hop定位算法[J].計(jì)算機(jī)測(cè)量與控制,2008,16(9):1356-1358.
[4] Huang G B,Zhu Q Y,Siew C K.Extreme learning machine:A new learning scheme of feedforward neural networks[C]∥2004 Proceedings of IEEE International Joint Conference on Neural Networks,IEEE,2005:985-990.
[5] Huang G B,Zhu Q Y,Siew C K.Extreme learning machine: Theory and applications[J].Neurocomputing,2006,70(1-3):489-501.
[6] 王 雷,沈龍?jiān)?,孫毅剛.基于ELM的航空發(fā)動(dòng)機(jī)傳感器故障診斷方法研究[J].傳感器與微系統(tǒng),2015,34(4):16-18.
[7] Liu R,Sun K,Shen J.BP localization algorithm based on virtual nodes in wireless sensor networks[C]∥Proceedings of the 6th International Conference on Wireless Communications,Networking and Mobile Computing,WiCOM’10,2010:351-355.
[8] Zhao L Z,Wen X B,Li D.Amorphous localization algorithm based on BP artificial neural network[C]∥International Confe-rence on Software Intelligence Technologies and Applications & International Conference on Frontiers of Internet of Things,IET,2015.
[9] 龍 佳,卑璐璐,張 申,等.基于虛擬信標(biāo)節(jié)點(diǎn)的改進(jìn)加權(quán)質(zhì)心定位修正算法[J].微電子學(xué)與計(jì)算機(jī),2017,34(3):74-78.
[10] 衣 曉,王梓有,薛興亮.一種基于次錨節(jié)點(diǎn)的無(wú)線傳感器網(wǎng)絡(luò)質(zhì)心定位算法[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(6):116-120.
[11] 張先超,劉興長(zhǎng),張春園.基于次錨節(jié)點(diǎn)的無(wú)線傳感器網(wǎng)絡(luò)改進(jìn)加權(quán)質(zhì)心定位算法[J].傳感器與微系統(tǒng),2015,34(2):143-146.