無線射頻識別作為一種實時數據采集技術, 被廣泛應用于物流、資產追蹤、設備監控等領域[1,2]。但由于RFID數據具有客觀不可靠性, 容易產生冗余數據或時間戳亂序現象[3]。如果由上層應用系統來解析如此巨大的RFID數據, 不僅會造成系統處理業務邏輯的效率低下, 而且開發的系統也不利于擴展[4]。
國內外學者圍繞RFID不確定性數據清洗問題展開了一系列研究。JEFFERY, GAROFALAKIS等人[5]針對標簽數據清洗最早提出了一種自適應滑動窗口的數據清洗算法, 通過構建標簽數據清洗模型對標簽漏讀、臟讀等現象進行處理, 從而為上層應用提供可靠的數據[5];MASSAWE, KINYUA等人[6]在JEFFERY研究的基礎上針對RFID數據的不可靠性提出一種自適應滑動窗口處理方法, 有效處理了動態環境和標簽下的數據處理;為了解決冗余數據的處理效率問題, 賈紅梅、李文杰[7]分析了倉儲中標簽冗余和閱讀器冗余問題產生的原因, 并給出了解決這兩種冗余的數據過濾模型。FAN, WU等人[8]設計并部署了一種基于標簽行為的RFID數據清洗系統, 并使用了一種通用的RFID應用程序來驗證該方案的有效性, LI, LIU等人[9]針對RFID系統中發生的數據流亂序現象提出了一種優化序列掃描和構建的方法。
本研究以倉儲環境為對象, 針對冗余數據清洗問題, 提出隊列緩存機制實現在線清洗數據。
由于現場環境和讀寫器設備本身性能的影響, 在每一個讀寫器采集位置都有可能產生冗余數據和亂序事件。如果能在實際環境中抽象出具有通用特征的場景, 則更加便于RFID倉儲中數據的清洗。
數據冗余主要包括:單數據源冗余和多數據源冗余兩方面[10]。
以RFID倉儲為例其抽象場景如圖1所示。
單數據源冗余主要指當標簽進入讀寫器R1~R4射頻范圍內, 由于RFID讀周期為0.2 s左右, 假設時間窗口為w, 那么在[t, t+w]時間范圍會產生大量的具有相同Tag_ID的三元組數據。多數據源冗余指不同位置的讀寫器覆蓋范圍重疊現象, 如圖1右邊所示, R6和R7的讀寫器覆蓋范圍重疊, 則會產生交叉冗余數據。假設在某一位置存在m個讀寫器, 有m×n個固定位置的標簽和k個等待判定位置的標簽, 為了方便后續對相關清洗算法地討論現在對本文相關概念做如下定義:
定義1讀寫器元組。為了方便冗余數據過濾論文將標簽原始數據擴展為五元組<Tag_ID, Reader_ID, Reader_Grp, Time_Start, Time_End>, Reader_Grp屬性用于表示讀寫器所在的位置屬性。
定義2確定位置標簽信號強度。假設已知標簽Tagi其屬于讀寫器Readerj, 那么Tagi相對于Readerj的信號強度用Fj, i表示, 其中i∈ (1, ……n) , j∈ (1, ……m) 。
定義3待判定位置標簽信號強度。假設待判定位置標簽Tagi相對Readerj信號強度用Wl, j表示, 其中l∈ (1, ……k) , j∈ (1, ……m) 。
定義4標簽位置相似度。通過歐式距離公式計算Wl, j和Fj, i之間的距離Dl, j, 如果該距離很小那說明該位置不確定的標簽Tagl屬于該讀寫器j, 去計算公式為:
定義5冗余數據產生條件。在某一確定時間范圍內, 當讀寫器讀到相同的標簽時, 就有可能產生冗余數據, 其條件需同時滿足:
在實際的RFID倉儲應用環境中, 通常會分布式部署RFID讀寫器設備, 然后通過TCP/IP或者RS232等傳輸方式將各個位置所采集到的標簽數據以事件流的形式聚集到后臺處理引擎中。在理想狀態下先發生的RFID簡單事件先到達后臺數據處理系統, 但是由于倉儲現場可能存在通信故障、網絡延遲等問題, 可能造成發生早的事件反而到達事件處理引擎的時間更晚[11,12], 其抽象場景如圖2所示。
以入庫流程為例, 在質檢、入庫和上架3個位置分別部署RFID讀寫器, 假設其觸發的事件分別為A、B和C, 使用TA代表A事件從發生到達系統的時間, TA-B代表貨物從A移動到B的時間, 其他事件時間以此類推。如果滿足表達式:TA>TA-B+TB, 則說明先發生的A事件后到達, 則產生事件流亂序問題[13], 在時間戳上先發生的事件后到達則會產生亂序問題。
如果需要對RFID數據進一步挖掘, 那么必須對采集的數據進行處理才能上傳至上層應用系統, 否則會造成后臺系統的業務邏輯設計困難[14]。面向倉儲的RFID數據清洗模型如圖3所示。
該數據清洗模型結合冗余數據清洗算法和亂序事件流修正方法, 對RFID讀寫器網絡所采集到的原始數據進行過濾, 最后將干凈的數據上傳至上層應用系統中進行處理。
本文以多數據源冗余問題為主要對象設計相關算法, 引入標簽位置相似性的方法來判斷標簽所屬讀寫器分組, 并采用互斥原理來消除不同讀寫器之間的交叉冗余數據。其核心偽代碼為:
算法中輸入的參數是讀寫器原始數據流, 輸出的參數是清洗后的標簽元組映射表, 具體步驟為:
(1) 讀寫器網絡不斷推送原始數據流至系統中, 算法首先對標簽編碼進行判斷, 如果標簽編碼符合規則, 則進入 (2) , 否則丟棄該標簽數據;
(2) 根據當前標簽的Reader_Grp屬性判斷當前標簽所對應的隊列是否存在, 如果已經存在, 則進入對應的標簽緩存隊列中, 否則新建一個屬于該讀寫器組的標簽緩存隊列CQi, 如果標簽無法判斷其位置信息, 則進入 (3) , 否則進入 (4) ;
(3) 根據定義4和公式 (1) , 通過Computer Sig-nal Intensity () 計算標簽位置相似度, 根據歐式距離計算結果大小來判斷該標簽屬于哪個讀寫器, 通過最小化相對位置相似度的方法來裁決該交叉冗余數據所屬讀寫器, 判定位置后可以利用互斥原理消除交叉冗余數據;
(4) 與當前標簽緩存隊列中的最后一個標簽數據的Tag_ID進行對比, 如果標簽編號滿足Tag_IDi=Tag_IDj并且時間約束滿足 (Timei=Timej) ∨|TimeiTimej|<=Threshold, 則標簽當前標簽在短時間內出現了重復讀取, 那么就剔除舊數據并更新當前數據的最新時間信息, 如果不滿足約束條件, 那么判斷當前對比的標簽否為隊列中的第一個, 如果不是就繼續循環對比, 如果已經對比結束則進入 (5) ;
(5) 將新數據存入緩存隊列并用Sort () 方法按到達時間進行排序, 如果當前還有數據流需要處理, 則繼續 (2) , 否則進入 (6) ;
(6) 將所屬同一讀寫器組的標簽元組數據進行合并, 最后輸出清洗后的數據。
目前提出的亂序事件流修正框架通常采用Hash加單鏈表結構進行數據存取[15], 采用雙鏈表結構有利于提高數據的操作效率。
本文提出的亂序事件流修正模型如圖4所示。
Hash主表中的每一個位置指向一個主鏈結點, 每一個主鏈結點包含當前的事件類型、事件數量、計時器以及其第一個子鏈結點的地址。本研究用鏈地址法將具有相同事件類型的RFID事件構成一個雙向鏈表, 通過主鏈結點的地址可以找到所有鏈表中的子節點, 其流程圖如圖5所示。
實驗采用C#語言在win764bit、內存為8 G的操作系統上實現, 標簽數據通過多線程隨機產生.
隨著標簽與讀寫器距離的變化, 相關讀寫器讀取參數也會隨之改變, 其中橫坐標表示標簽與讀寫器之間的距離, 縱坐標表示讀寫器檢測到標簽的概率。該模型檢測區域主要分為Major detection region和Minor detection region兩部分。當標簽與讀寫器之間的距離超出DetectionRange時, 讀寫器將檢測不到標簽信號, 檢測概率隨著距離的增大而線性遞減。實驗中設定如下指標驗證算法的性能:
(1) 記錄數。經過冗余數據清洗后的標簽存儲數量;
(2) 正確率。經過亂序修正后可以正確輸出的事件流比例。
實驗中冗余清洗和亂序修正實驗的參數分別如表1、表2所示。
為了驗證本研究所提方法的有效性, 實驗中采用記錄數和準確率來分別對比冗余清洗和亂序修正之后的數據。實驗結果如下:
(1) 記錄數指標測試結果如圖7所示。
記錄數量越小表明冗余清洗結果越好。為了對比算法改進后的效果, 本文與文獻[18]中的SNM算法進行對比。標簽數量在100~500之間, 圖中真實數據表示理想狀態下標簽應該產生的記錄數, 其一般等于實際的標簽數量。
原始數據表示標簽實際環境應該產生的數據量, 其一般大于真實數據。改進前清洗結果表示文獻[18]中SNM算法清洗后的標簽記錄數量。改進后清洗結果表示經過本研究提出算法清洗后的標簽記錄數量, 其越接近真實數據代表算法的清洗效果越好。
通過實驗可以發現, 在標簽數量較少時文中所提算法和SNM算法清洗效果相差不大, 但是隨著標簽數量的增加, 本研究所提算法具有更好的數據清洗效果, 也驗證了該算法的有效性。
(2) 正確率指標測試結果如圖8所示。
正確率越高表明亂序事件修正的效果越好。實驗中隨機生成的亂序比例在0~60%之間, 本研究采用開源復雜事件處理引擎Esper來進行事件的匹配。圖中, Esper代表的結果是沒有經過亂序修正的輸出結果, Hash+Esper (單鏈表) 和Hash+Esper (雙鏈表) 分別表示方法改進前后的輸出結果。
將未經處理的事件發送到復雜事件處理引擎后, 由于事件流的亂序現象會導致原本符合條件的事件不能被匹配到, 而通過Hash算法進行處理后, 可以對原有的亂序事件進行修正。從圖中可以:看出采用雙鏈表結構可以明顯提高正確匹配的事件數量, 符合本研究所提方法的預期效果。
本研究結合RFID倉儲環境中的數據問題設計了面向倉儲的RFID數據清洗模型, 采用不同的實驗參數進行了仿真實驗。結果表明:當標簽數量和亂序率增大時, 通過模型中的數據清洗方法不僅可以有效降低RFID倉儲中的冗余數據, 還可以提高事件輸出的正確率。
下一篇: 配料生產控制及倉儲管理系統設計