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