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