一种rfid数据流的冗余数据清洗方法

文档序号:1846136 发布日期:2021-11-16 浏览:15次 >En<

阅读说明:本技术 一种rfid数据流的冗余数据清洗方法 (Redundant data cleaning method for RFID data stream ) 是由 鲁建厦 屠佳苠 包秦 于 2021-08-13 设计创作,主要内容包括:本发明公开了一种RFID数据流的冗余数据清洗方法,包括如下步骤:S1,当数据到达时,对其epc进行k次哈希计算,并映射至Timestamp数组,再进行k次哈希计算,并映射至ReaderID数组中;S2,获取下一个数据:S21,其epc的哈希对应Timestamp的值为0,则其为非冗余数据;S22,否则,在ReaderID中存在任意两个差值且不为0,差值为其readerID减去其epc哈希对应ReaderID的值,则其为非冗余数据;S23,若S22不成立,其timestamp减去其epc的哈希在Timestamp的值≤时间阈值,则其为冗余数据;S24,上报非冗余数据,并更新数组,否则丢弃。(The invention discloses a method for cleaning redundant data of an RFID data stream, which comprises the following steps: s1, when the data arrive, performing hash calculation on the epc for k times, mapping the epc to a Timestamp array, performing hash calculation for k times, and mapping the epc to a ReaderID array; s2, acquiring the next data: s21, if the hash value of the epc corresponding to the Timestamp is 0, the hash value is non-redundant data; s22, otherwise, any two difference values exist in the ReaderID and are not 0, and the difference value is obtained by subtracting the value of the ReaderID corresponding to the epc hash from the readerID, so that the difference value is non-redundant data; s23, if S22 is false, the hash of the Timestamp minus the epc is not more than the time threshold value when the value of the Timestamp is not more than the time threshold value, and the hash is redundant data; and S24, reporting the non-redundant data and updating the array, otherwise, discarding.)

一种RFID数据流的冗余数据清洗方法

技术领域

本发明涉及数据过滤技术领域,尤其是涉及一种RFID数据流的冗余数据清洗方法。

背景技术

随着RFID技术在离散车间中的推广,制造车间中的RFID网络变得更加复杂,同时标签对象的数量也随之增多,因此,在现有的数据清洗算法中,大部分算法只适用于读写环境相对单一、简单的应用场景下,而离散制造车间中RFID读写网络庞大、生产要素众多、读取环境复杂,导致其清洗的正确性和实时性不能得到保证。

RFID数据清洗,能够过滤RFID数据流中的不可靠数据(冗余读、多读和漏读),传统的RFID冗余数据过滤算法,包括:布隆过滤算法(BF,Bloom Filter)、时间布隆过滤算法(Time Bloom Filter,TBF)、时间间隔布隆过滤算法(Time Interval Bloom Filter,TIBF)。离散制造车间中的RFID数据流有着数据量大、实时性高、空间性强的特点,在海量RFID数据流的冗余数据过滤中,布隆过滤器(BF)有着时间和空间效率高的优点,但也存在着数据“记录”维度单一和存在假阳性误判的缺点,因此有了时间布隆过滤算法(TBF),TBF算法将位数组改为时间数组,使得能够过滤海量的冗余数据,并且算法有很高的实时性。但是,随着标签的频繁跃迁(动态性强),导致RFID数据流有很强的空间性,导致TBF算法错误率的急剧上升。

因此,在RFID标签对象海量、流动性大等特点的离散制造环境中,清洗效果还有待提高(错误率需要进一步降低)。

发明内容

为解决现有技术的不足,本发明基于TBF算法,提出了考虑读写器地址的时间布隆过滤算法(Time and ReaderID Bloom Filter,TRBF),实现了提高清洗效果,降低错误率的目的,本发明采用如下的技术方案:

一种RFID数据流的冗余数据清洗方法,包括如下步骤:

S1,当新的RFID数据x i 到达时,对x i .epc进行k次独立的哈希函数计算k∈{1,2,3,…,n},n表示自然数,即Hash 1(x i .epc),…,Hash k (x i .epc),并映射至Timestamp数组,对x i .epc进行两轮k次独立的哈希函数计算Hash 1[Hash 1(x i .epc)],…,Hash k [Hash k (x i .epc)],并映射至ReaderID数组中;所述RFID数据x i 为一组三元组数据,数据格式为x i =<epc,readerID,timestamp>,其中,epc为每张标签的唯一标识号,readerID为读取该标签的读写器地址,即表示标签的位置,timestamp为读写器读取该标签的时间戳,i∈{1,2,3,…,n},n表示自然数;两次哈希是为了保证Timestamp和ReaderID数组中映射到的位置尽可能不同,从而将数据的时间和位置信息在二维数组中相互“错开”,从而进一步降低误判概率;

S2,通过比较下一个数据x i+1 的时间x i+1 .timestamp和位置x i+1 .readerID信息与二维数组中的值来判断x i+1 是否为冗余数据,包括如下步骤:

S21,如果存在Timestamp[Hash k (x i+1 .epc)]=0,k∈{1,2,…,n},则判断x i+1 为非冗余数据;由于相同epc的哈希映射是相同的,因此,在某组映射中,如果数组中只要有映射到的一位是0,则表示还没有赋值,因此可以直接判断该数据是首次到达,因此是非冗余数据;

S22,否则,对于所有的k∈{1,2,…,n},如果有x i+1 .readerID-ReaderID[Hash k (Hash k (x i+1 .epc)]=ε k ,并且ReaderID数组中,任意两个差值ε k 相等且不为0,则说明标签x i+1 .epc的读写器地址x i+1 .readerID发生了变化,即标签进行了读写器之间的移动,由定义3可知,数据x i+1 是由另一台读写器产生的数据,即可直接判断x i+1 为非冗余数据;

S23,如果S22不成立,再进行时间上的判断,即对于所有的k∈{1,2,…,n},如果x i+1 .timestamp-Timestamp[Hash k (x i+1 .epc)]≤τ,则x i+1 为冗余数据,否则x i+1 为非冗余数据,所述τ为时间阈值;

S24,如果x i+1 为非冗余数据,则将x i+1 上报,并更新k个二维数组:

Timestamp[Hash k (x i+1 .epc)]=x i+1 .timestamp(k=1,2,…,n)

ReaderID[Hash k (Hash k (x i+1 .epc))]=x i+1 .readerID(k=1,2,…,n);

如果x i+1 为冗余数据,则丢弃。

具体地,所述映射,是将哈希函数计算得到的值,与数组中的位置对应,再将该数据的timestamp放入Timestamp数组的位置中,readerID放入ReaderID数组的位置中。

具体地,所述哈希函数计算的值为正整数,用于标记数组的位数,从而使哈希函数计算得到的值,与数组中的位置对应。

具体地,所述S1中,先对x i .epc进行k次独立的哈希函数计算,用于映射至Timestamp数组,然后再将得到的哈希值进行第二轮k次独立的哈希函数计算,用于映射至ReaderID数组。

具体地,所述S1前,进行TRBF算法初始化状态时,将Timestamp数组和ReaderID数组同时置0。

具体地,所述读写器是逻辑读写器,为了提高标签的识别概率,在某些监控区域会部署多台读写器,监控同一个区域的多台读写器称为同一个逻辑读写器。

具体地,构建RFID数据流S={x 1,x 2,x 3,…,x n},所述S1中的x i x 1当所述S34执行完毕后,将i=i+1,并返回S31,直至数据流最后一项x n执行完S34。

本发明的优势和有益效果在于:

本发明提出了考虑读写器地址的时间布隆过滤方法(TRBF),该方法不但保留了BF算法和TBF算法清洗速度快、占用内存空间少、海量数据流过滤效率高的优点,还能够使用动态标签所产生的数据流进行冗余数据清洗,仿真结果表明,与相似的发明(TBF、TIBF)相比,TRBF算法有着更低的错误率。

附图说明

图1是本发明中TRBF算法结构示意图。

图2是本发明的方法流程图。

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

本发明属于RFID冗余数据的过滤,针对生产环境中海量的RFID数据流,结合离散车间的生产情况,设计了考虑读写器地址的时间布隆过滤算法(Time and ReaderID BloomFilter,TRBF),用于RFID数据流的冗余数据清洗,TRBF算法在TBF算法的基础之上,考虑了标签数据中的另一个属性,即读写器地址readerID,该属性也可以理解为标签的物理位置,改进的TRBF算法将TBF的一维时间数组扩展成二维数组,分别为时间数组Timestamp和读写器地址数组ReaderID。包括如下步骤:

定义1:将任一时间段产生的RFID数据流定义为S={x 1,x 2,x 3,…,x n},其中任意一条RFID数据x i 为一组三元组数据,数据格式为x i =<epc,readerID,timestamp>,其中,epc为每张标签的唯一标识号,readerID为读取该标签的读写器地址,即表示标签的位置,timestamp为读写器读取该标签的时间戳,i∈{1,2,3,…,n},n表示自然数。

定义2:在同一个逻辑读写器下(为了提高标签的识别概率,在某些监控区域会部署多台读写器,这些用来协同监控同一个区域的读写器称为同一个逻辑读写器,没有具体说明,读写器即为不同逻辑的读写器),现有数据流S,其中存在数据x i x i’ Sii’),且x i .epc=x i’ .epc,若x i’ .timestamp-x i .timestampτ(其中τ为实际应用环境中用户所设置的时间阈值),此时认定数据x i’ 相对于x i 是冗余数据,i,i’∈{1,2,3,…,n},n表示自然数。

定义3:在不同读写器下,现有数据流S,其中存在不同读写器的数据x i x j Sij),且x i .epc=x j .epc,若x j .timestamp-x i .timestampτ,但x i .readerIDx j .readerID,则此时认定数据x j 相对于x i 不是冗余数据,i,j∈{1,2,3,…,n},n表示自然数。

针对离散制造车间中RFID数据流海量、空间性强的特点,提出了考虑读写器地址的时间布隆过滤(Time and ReaderID Bloom Filter,TRBF)算法,如图1所示,tag1、tag2、tag3表示不同的标签。

TRBF算法的核心思想是维护了Timestamp和ReaderID两个数组,通过对标签epc进行k次随机的哈希映射,分别将映射结果映射至Timestamp和ReaderID两个数组中,将标签的时间信息和读写器地址信息分别和Timestamp和ReaderID两个数组中的数据进行对比,从而来判断该数据是否为冗余数据。

如图2所示,当有新的RFID数据x i 到达时,判断x i 是否为冗余数据,TRBF算法的执行冗余清洗的步骤如下:

1、TRBF算法初始化状态时,将Timestamp数组和ReaderID数组同时置0。

2、当新数据x i 到达时,对x i .epc进行k次独立的哈希函数计算k∈{1,2,3,…,n},n表示自然数,即Hash 1(x i .epc),…,Hash k (x i .epc),并映射至Timestamp数组,此外同时进行两次哈希函数Hash 1[Hash 1(x i .epc)],…,Hash k [Hash k (x i .epc)],映射至ReaderID数组中,两次哈希是为了保证Timestamp和ReaderID数组中映射到的位置尽可能不同,从而将数据的时间和位置信息在二维数组中相互“错开”,从而进一步降低误判概率。

具体地,每条RFID数据x i 的格式是<epc,readerID,timestamp>(标签标识,读写器地址,时间戳),映射到Timestamp数组中的值,是将epc进行Hash计算,所得到的值与Timestamp数组中的位置对应,再将该数据的timestamp放入数组的位置中,例如:Hash 1 (x i .epc)=2,将x i .timestamp赋值到Timestamp数组的第三位(第一位为0),即Timestamp[2]=x i .timestamp。

ReaderID数组中的值也是同样道理,只是进行了两次哈希Hash 1 [Hash 1 (x i .epc)],数组中的值是读写器地址x i .readerID,由于读写器地址不像时间戳,会随着时间的增长增大,不能直接作差来判断,因此在判断方式上有所不同。

3、通过比较下一个数据x i+1 的时间x i+1 .timestamp和位置x i+1 .readerID信息与二维数组中的值来判断x i+1 是否为冗余数据,包括如下步骤:

(1)如果存在Timestamp[Hash k (x i+1 .epc)]=0,k∈{1,2,…,n},则可直接判断x i+1 为非冗余数据。由于相同epc的哈希映射是相同的,因此,在某组映射中,如果数组中只要有映射到的一位是0,则表示还没有赋值,因此可以直接判断该数据是首次到达,因此是非冗余数据。

(2)否则,对于所有的k∈{1,2,…,n},如果有x i+1 .readerID-ReaderID[Hash k (Hash k (x i+1 .epc)]=ε k ,并且ReaderID数组中,任意两个差值ε k 相等且不为0,则说明标签x i+1 .epc的读写器地址x i+1 .readerID发生了变化,即标签进行了读写器之间的移动,由定义3可知,数据x i+1 是由另一台读写器产生的数据x j ,即可直接判断x i+1 为非冗余数据。

(3)如果(2)不成立,再进行时间上的判断,即对于所有的k∈{1,2,…,n},如果x i+1 .timestamp-Timestamp[Hash k (x i+1 .epc)]≤τ,则x i+1 为冗余数据x i’ ,否则x i+1 为非冗余数据。

(4)如果x i+1 为非冗余数据,则将该数据上报,并同时更新k个二维数组:

Timestamp[Hash k (x i+1 .epc)]=x i+1 .timestamp(k=1,2,…,n)

ReaderID[Hash k (Hash k (x i+1 .epc))]=x i+1 .readerID(k=1,2,…,n);

如果x i+1 是冗余数据,则直接将其丢弃。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种应用于数字化企业的数据联动分析系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!