陳 龍,張 可,羅配明
(1.電子科技大學(xué) 電子科學(xué)技術(shù)研究院,四川 成都611731;2.電子科技大學(xué) 自動化工程學(xué)院,四川 成都611731)
隨著無線傳感器網(wǎng)絡(luò)(WSNs)研究的不斷深入,應(yīng)用化已經(jīng)逐漸成為人們關(guān)注的焦點。各種在特定應(yīng)用背景下的研究日漸增多,如應(yīng)用在環(huán)境監(jiān)測、目標(biāo)跟蹤、安全監(jiān)控等領(lǐng)域。位置信息對傳感器網(wǎng)絡(luò)的監(jiān)測活動至關(guān)重要,事件發(fā)生的位置或獲取信息的節(jié)點位置是傳感器網(wǎng)絡(luò)節(jié)點監(jiān)測消息中所包含的重要信息,了解傳感器節(jié)點位置信息不僅可以獲取路由信息,而且可以進行節(jié)點定位等等[1,2]。測距的誤差在很大程度上決定了目標(biāo)定位與跟蹤的誤差。常用的定位方法必須測量節(jié)點間的距離,一般測距方式有紅外線、GPS、超聲波和接收信號強度指示(received signal strength indication,RSSI)等[3]。
由于無線芯片具備計算接收信號強度的功能,因此,基于RSSI 的測距主要是通過信號強度推導(dǎo)發(fā)射節(jié)點與接收節(jié)點之間的距離。基于RSSI 的測距具有成本低,無需添加額外硬件的優(yōu)點,而基于超聲的測距雖然精度高,但是需要添加其他硬件,這樣,會導(dǎo)致成本變高和尺寸變大[4],所以,WSNs 定位一般都是采用基于RSSI 測距的方法,首先對RSSI 進行濾波處理,再建立改進的Elman 神經(jīng)網(wǎng)絡(luò)預(yù)測模型得出距離值,該方法不但使得測距精度變高,而且成本也很低。
Elman 神經(jīng)網(wǎng)絡(luò)的特點是經(jīng)典的局部遞歸內(nèi)時延反饋型網(wǎng)絡(luò),以BP 神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),通過引入反饋信號來存儲內(nèi)部狀態(tài),使得Elman 神經(jīng)網(wǎng)絡(luò)具有映射動態(tài)的功能。
從圖1 可以看出:Elman 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)組成包括:輸入層、隱含層、輸出層以及關(guān)聯(lián)層,關(guān)聯(lián)層主要負(fù)責(zé)對隱含層單元前一時刻的輸出值進行記憶和延遲,通過關(guān)聯(lián)層的記憶、延遲作用,隱含層的輸出可以自聯(lián)到該層的輸入。
Elman 模型回歸神經(jīng)元網(wǎng)絡(luò)的隱含層輸入等于上一個時刻的隱含層狀態(tài)連同此時的網(wǎng)絡(luò)輸入,是通過聯(lián)接記憶實現(xiàn)的,起到狀態(tài)反饋的作用。該自聯(lián)方式的優(yōu)點是對歷史數(shù)據(jù)非常敏感,提高網(wǎng)絡(luò)本身處理動態(tài)信息的能力是通過內(nèi)部反饋網(wǎng)絡(luò)的加入實現(xiàn)的,這樣可以動態(tài)建模。但是,Elman 網(wǎng)絡(luò)的前饋連接雖然可以對連接權(quán)進行修正,但是遞歸部分卻不能修正,而且,Elman 神經(jīng)網(wǎng)絡(luò)采用只有一階梯度的BP 算法進行權(quán)值修正,因此,Elman 網(wǎng)絡(luò)學(xué)習(xí)穩(wěn)定性差、精度不高。因此,本文改進了Elman 神經(jīng)網(wǎng)絡(luò)[5],其結(jié)構(gòu)如圖2 所示。
圖2 改進的Elman 神經(jīng)網(wǎng)絡(luò)模型Fig 2 Improved Elman neural network model
從圖1 和圖2 中可以看出:改進后的網(wǎng)絡(luò)模型與改進前的不同之處是:改進后的Elman 網(wǎng)絡(luò)在結(jié)構(gòu)單元中,增加了一個固定增益a,用于自反饋連接,a 的范圍為0 ~1 之間。因此,結(jié)構(gòu)單元在k 時刻的輸出,等于隱含層在k -1時刻的輸出加上結(jié)構(gòu)單元在k-1 時刻輸出值的a 倍,即
其中,l=1,2,…,n;xc,l(k)和 xl(k)分別為第 l 個結(jié)構(gòu)單元輸出向量和第l 個隱含層單元輸出向量,a 為自反饋連接的固定增益。
改進后的Elman 神經(jīng)網(wǎng)絡(luò)計算公式為
改進的Elman 神經(jīng)網(wǎng)絡(luò)的BP 學(xué)習(xí)公式為
其中,i=1,2,…,m;j=1,2,…,n;q =1,2,…,r;l =1,2,…,n。
由于結(jié)構(gòu)單元輸出向量xc,l(k)與關(guān)聯(lián)層、隱含層的權(quán)值向量之間沒有依賴關(guān)系,可得
實驗是在空曠的廣場進行。采用2 個Crossbow 公司的節(jié)點,發(fā)射功率為0 dBm,0 號節(jié)點為固定節(jié)點,用于接收數(shù)據(jù),另一個為移動發(fā)射節(jié)點,發(fā)射節(jié)點與接收節(jié)點均使用短狀天線,節(jié)點放置高度在2 m,固定0 號節(jié)點,移動發(fā)射節(jié)點。經(jīng)過大量的實驗對比,得出RSSI 在10 m 的范圍內(nèi)隨著距離的變化比較明顯,而10 m 之后,RSSI 值隨距離變化較小,所以,此實驗的測試范圍限定在0 ~10 m,這樣能更好地進行誤差對比。實驗人員在0 ~10 m 的范圍內(nèi)移動節(jié)點,每間隔0.3 m 記錄RSSI 值,每個距離均接收200 個左右數(shù)據(jù)包,計算200 個RSSI 值的平均值。
由于獲取的RSSI 值與距離的關(guān)系曲線還不夠平滑,為了使樣本的質(zhì)量更高、訓(xùn)練效果更好,先對RSSI 值進行濾波處理,分別進行限幅濾波處理、遞推平均濾波處理和限幅平均濾波處理。圖3 為3 種濾波方式的效果比較。
圖3 三種濾波方式的比較Fig 3 Comparison of three filtering methods
由圖3 的結(jié)果可以得出:限幅平均濾波后,樣本的效果最好,最終以限幅濾波后的數(shù)據(jù)作為訓(xùn)練樣本。
以限幅濾波后的數(shù)據(jù)作為訓(xùn)練樣本。以RSSI 作為輸入,以距離作為輸出,一般的預(yù)測問題都是采用單隱含層的神經(jīng)網(wǎng)絡(luò)實現(xiàn),這里也是采用單隱含層。最近時刻的距離值都是利用前面不同距離下的RSSI 值進行訓(xùn)練,每一次收到RSSI 都修正網(wǎng)絡(luò)的權(quán)值與閾值,判斷誤差是否小于設(shè)定的誤差值,如果小于,則退出;否則,采用下一批樣本進行訓(xùn)練,如圖4 所示為建立神經(jīng)網(wǎng)絡(luò)的流程圖。
圖4 建立神經(jīng)網(wǎng)絡(luò)的流程圖Fig 4 Flow chart of neural network set up
1)數(shù)據(jù)歸一化處理:為了方便Matlab 的計算,首先對數(shù)據(jù)的大小進行歸一化處理,這里根據(jù)現(xiàn)有的數(shù)據(jù)情況,分別對輸入和輸出量進行歸一化處理[6]。
2)激活函數(shù)的選擇:S 型的對數(shù)函數(shù)logsig 作為隱含層的神經(jīng)元傳遞函數(shù);如果神經(jīng)網(wǎng)絡(luò)的輸出層神經(jīng)元采用S型函數(shù)作為激活函數(shù),那么網(wǎng)絡(luò)的輸出就只在一個較小的范圍內(nèi),如果神經(jīng)網(wǎng)絡(luò)的輸出層神經(jīng)元采用線性函數(shù)作為激活函數(shù),那么網(wǎng)絡(luò)的輸出可以是任意值,因此,輸出層神經(jīng)元傳遞函數(shù)采用線性函數(shù)purelin。
3)設(shè)定網(wǎng)絡(luò)的最大學(xué)習(xí)迭代次數(shù)為2000 次。
4)設(shè)定網(wǎng)絡(luò)的學(xué)習(xí)精度為0.01。
5)最優(yōu)隱含層神經(jīng)元個數(shù)的確定:首先,采用不同的隱含層神經(jīng)元數(shù)對網(wǎng)絡(luò)進行訓(xùn)練,可以得到不同的隱含層神經(jīng)元個數(shù)下的網(wǎng)絡(luò)誤差與網(wǎng)絡(luò)訓(xùn)練次數(shù)。經(jīng)過訓(xùn)練后,隱含層神經(jīng)元個數(shù)為8 的神經(jīng)網(wǎng)絡(luò)對函數(shù)的逼近誤差最小,網(wǎng)絡(luò)訓(xùn)練141 次達到誤差要求,因此,將網(wǎng)絡(luò)隱層神經(jīng)元數(shù)目定為8 個。
6)自反饋固定增益a 的確定:該值根據(jù)不同的訓(xùn)練情況下做出相應(yīng)的調(diào)整,在訓(xùn)練的過程中不斷修正,使得網(wǎng)絡(luò)誤差更小。通過不同的取值進行誤差對比,得出該值為0.2時,網(wǎng)絡(luò)誤差最小,因此,該值定為0.2。
采用上面建立的神經(jīng)網(wǎng)絡(luò)預(yù)測模型進行訓(xùn)練,從訓(xùn)練結(jié)果圖5 中可以看到訓(xùn)練141 次后達到0.01 的誤差要求。
圖5 訓(xùn)練結(jié)果圖Fig 5 Training results
為了驗證該模型的可靠性,根據(jù)網(wǎng)絡(luò)訓(xùn)練的結(jié)果,把測試結(jié)果與真實值進行對比,為了更突出該方法的優(yōu)越性,并與高斯擬合模型計算出來的距離值進行了比較。其中,高斯模型數(shù)據(jù)處理原則為:節(jié)點在同一位置會收到n 個RSSI值,因此會有小概率事件發(fā)生,通過高斯模型獲取高概率發(fā)生的RSSI 值,然后計算其幾何均值。最后采用運算式:RSSI=46 -30lg d(d 為距離值),計算出距離值。表1 為改進的Elman 神經(jīng)網(wǎng)絡(luò)預(yù)測模型、高斯擬合模型與真實值的比較,圖6 為改進的Elman 神經(jīng)網(wǎng)絡(luò)預(yù)測模型與高斯擬合模型的誤差對比曲線。
表1 預(yù)測模型、高斯擬合模型與真實值的比較Tab 1 Comparison of predictive model,Gaussian fitting model and real value
訓(xùn)練次數(shù)141 次
圖6 模型預(yù)測值與經(jīng)驗公式值的誤差對比Fig 6 Error comparison of model predictive value and empirical formula value
由表1 和圖6 可以得出:由改進的Elman 神經(jīng)網(wǎng)絡(luò)預(yù)測模型預(yù)測的距離值比高斯擬合模型計算出來的距離值,整體誤差較小。高斯擬合模型計算的距離誤差最大為2.188 8 m,最小誤差為0.522 9 m,而由改進的Elman 神經(jīng)網(wǎng)絡(luò)模型預(yù)測模型得到的距離誤差最大為0.788 6 m,最小誤差為0.022 3 m,測距的精度明顯提高了很多[7]。
改進Elman 網(wǎng)絡(luò)的預(yù)測值與實測值擬合度更高,誤差更小,預(yù)測精度可以達到很高的要求。通過對樣本的預(yù)處理,可以提高訓(xùn)練結(jié)果的精度,因此,樣本的好壞直接影響訓(xùn)練結(jié)果。節(jié)點RSSI 值的隨機性較大,會隨著環(huán)境與其他干擾的影響發(fā)生突變,因此,先對RSSI 值進行濾波處理,濾掉突變的數(shù)據(jù)再進行網(wǎng)絡(luò)的訓(xùn)練,預(yù)測結(jié)果就能達到較理想的水平。該模型適用于樣本與預(yù)測的數(shù)據(jù)在同一環(huán)境和同樣的實驗平臺下,在10 m 以內(nèi)進行預(yù)測,可以達到很高的測距精度,從而進行精確定位。
[1] Nieulescu D.Nath B.DV-based positioning in Ad Hoc networks[J].Journal of Telecommunication System,2003,22(1/4):267 -280.
[2] Bulusu N,Heidemann J,Estrin D.GPS-less cost outdoor localization for very small devices[J].IEEE Personal Communications,2000,7(5):28 -34.
[3] 方 震,趙 湛,郭 鵬.基于 RSSI 測距分析[J].傳感技術(shù)學(xué)報,2007,20(11):2526 -2530.
[4] 詹 杰,吳伶錫,唐志軍.無線傳感器網(wǎng)絡(luò)RSSI 測距方法與精度分析[J].電訊技術(shù),2010,50(4):83 -87.
[5] 基于Matlab 神經(jīng)網(wǎng)絡(luò)工具箱的作物需水量預(yù)測[J].華北水利水電學(xué)院學(xué)報,2009,30(1):50 -52.
[6] 劉艷文,王福豹,段滑軍,等.基于 DV-Hop 定位算法和 RSSl測距技術(shù)的定位系統(tǒng)[J].計算機應(yīng)用,2007,27(3):15 -18.
[7] 段渭軍,黃曉利,王福豹,等.無線傳感器網(wǎng)絡(luò)測距技術(shù)的研究[J].計算機科學(xué),2007,34(9):54 -62.