崔遠
(蘭州職業技術學院 電子信息工程系,甘肅 蘭州 730070)
無線通信的快速發展以及電子元器件技術的日漸成熟,使無線傳感網絡(wireless sensor networks, WSNs)已在智能交通系統、森林防火報警系統、動物跟蹤等領域內廣泛使用。WSNs由多個微型傳感節點組成,這些節點收集環境數據,再傳輸匯聚節點或者鄰近的其他節點。
WSNs常部署于野外或者不便于接入的環境,傳感節點需在惡劣環境內長時間工作。因此,傳感節點自身狀態存在不確定因素。傳感節點可能狀態良好,能夠繼續感測/傳輸數據;傳感節點也可能出現故障[1],無法感測/傳輸數據。
WSNs內節點的故障可分為硬件故障和軟件故障兩類。因節點能量消耗殆盡或元器件損壞,導致節點無法工作,這類問題稱為硬件故障[2];通常將錯誤計算或者參數匹配錯誤等行為導致節點不能工作稱為軟件故障[3]。軟件故障可進一步劃分為永久性、間歇性和瞬態性軟件故障。
為了緩解節點故障對WSNs網絡性能的影響,研究人員對檢測故障節點策略進行了大量研究,并提出不同的檢測算法。例如,文獻[4-5]采用神經網絡模型診斷節點的故障節點。文獻[6-7]結合統計和軟件計算策略檢測故障節點,并對節點進行分類。
這些檢測算法需要訓練更多數據,需通過多次迭代才能完成對故障的檢測,這無疑增加了節點能耗。眾所周知,節點能量屬傳感節點的有限能量。因此,所設計的檢測算法應考慮節點能量問題,盡量降低檢測算法的復雜度,減少節點能耗。
為此提出了基于(anderson-darling,AD)檢驗傳感節點軟件故障檢測的(AD-Soft Fault Detection of sensor node, AD-SFD)算法。AD-SFD算法通過分析傳感節點所感測數據的分布規律,判斷節點是否為軟件故障節點,并通過降低算法的復雜度,減少節點能耗。仿真結果表明,提出的AD-SFD算法提高了軟件故障檢測率,并減少了節點能耗。
在e×e區域內部署n個同構節點,每個節點有唯一的ID號。所有節點具有相同的通信半徑R。最初,所有節點均無故障。用圖G=(V,E)表示網絡拓撲,其中V為節點集;E為節點間的邊集。如果兩個節點(si,sj)間的歐式距離dij小于R,則節點i與節點j間存邊界集:

假定任意一對節點間的通信鏈路是無方向的,即如果(si,sj)∈V,則(sj,si)∈V。節點感測數據,再采用能量有效的媒體接入協議(medium access control,MAC)的策略[8]傳輸數據。
作為雜波擬合檢驗算法,AD檢測器利用樣本分布函數和經驗概率密度函數間的二次AD距離判斷樣本是否屬于某一特定分布簇[9]。即判斷原假設H0是否成立。
假設H0:X1,X2,…,XN同分布。令F(X)為分布函數。因此,利用式(2)計算離散的AD檢驗統計量:

通過Monte-Carlo仿真實驗,可得到在指數分布條件下的閾值,如表1所示。

表1 AD 檢驗臨界值
令Si(x)表示在時刻x從節點si收集的數據。用{Si(x)}tx=1表示從時刻1至時刻t所收集的數據,其中x=1,2…,t。將數據Si(x)映射于正態分布N(Ai(x),μi,σ2i),其中Ai(x)表示節點si實際感測的數據;μi為均值;σ2i為方差。使節點si發生錯誤的噪聲與方

因此,任意節點si就依據算法1計算統計量ADi的修正值,具體過程如算法1所示。

算法1:計算節點數據的統計量images/BZ_193_270_1551_1232_2312.png

利用NS-2.35[10]建立仿真平臺,分析AD-SFD算法的性能。在700m×700m區域內部署100個傳感節點,傳感節點的通信半徑為150m。假定節點感知環境的正常溫度數據在[20,30]間。為了體現真實的環境數據,在節點感知的數據附加一定的噪聲。節點的初始能量為6000 mAh。具體的仿真參數如表2所示。

表2 仿真參數
圖1給出AD-SFD算法的FDA隨故障率的變化情況。從圖1可知,故障率的增加,使FDA呈下降趨勢。原因在于:故障率越高,網絡內出現故障節點數量越多,這就降低了FDA。相比于DSDA和UPFD,提出的AD-SFD算法的故障檢測率得到有效提高。例如,當故障率在0.2時,AD-SFD算法的檢測率仍達到0.9,但DSDA和UPFD算法的檢測率低至0.84和0.8。

圖1 檢測率隨故障率的變化情況
圖2給出AD-SFD算法、DSDA和UPFD算法的虛警率隨故障率的變化情況。
從圖2可知,故障率的增加,增加了虛警率FAR。這主要是因為:故障率的增加,加大了故障節點數。一旦故障節點數增加,就增加了錯誤判斷的概率。相比于DSDA和UPFD算法,提出的AD-SFD算法有效地控制了虛警率。例如,當故障率為0.2時,UPFD和DSDA算法的虛警率分別達到0.0365和0.031。

圖2 虛警率隨故障率的變化情況
圖3給出AD-SFD算法、DSDA和UPFD算法的假陽率FPR隨故障率的變化情況。從圖3可知,FPR隨節點故障率的增加而上升。原因與圖1、圖2相類似。故障率的增加,增加了檢測難度,也就提升了假陽率FPR。

圖3 假陽率隨故障率的變化情況
相比于DSDA和UPFD算法,提出的AD-SFD算法的假陽率得到有效控制。例如,在故障率為0.3時,AD-SFD算法的假陽率低至0.15。而DSDA和UPFD算法的假陽率高達0.242和0.235。
考慮到傳感節點常部署于野外惡劣環境,節點容易出現軟件故障。為此,本文提出AD-SFD檢測算法。AD-SFD算法通過觀察節點感測數據,判斷節點是否出現軟件故障,并減少控制開銷,降低算法復雜度。仿真結果表明,提出的AD-SFD算法提高了檢測精度。