Collisions Are Preferred: RFID-Based Stocktaking with a High Missing Rate -- 笔记+理解+提升

Collisions Are Preferred: RFID-Based Stocktaking with a High Missing Rate – 笔记+理解+提升

简述和翻译

文章来源:IEEE TRANSACTIONS ON MOBILE COMPUTING

下载地址:https://ieeexplore.ieee.org/document/8692578/

作者:Weiping Zhu , Member, IEEE, Xing Meng, Xiaolei Peng, Jiannong Cao , Fellow, IEEE, and Michel Raynal

题目

​ 首选碰撞:高丢失率下的基于RFID的盘点

摘要

​ 基于RFID的盘点使用RFID技术与库存清单相比,验证某个区域(如仓库或图书馆)中是否存在物品。现有的实现这一目的的方法假设丢失的标签数量很小。在某些情况下并非如此,例如,对于手持RFID阅读器,只有较大区域(如仓库)而不是其查询区域内的物品才能被称为库存清单,因此清单中的许多标签被认为是缺失的。丢失的物品大大增加了盘点所需的时间。在本文中,我们提出了一种称为CLS(Coarse-grained inventory list based stocktaking基于***粗粒度***库存列表的盘点)的算法来解决这个问题。CLS允许多个丢失的物体散列到单个时隙,从而一起验证它们。CLS还通过利用多种的RFID冲突和减少读取器发送的大约四分之一的数据量来改进现有方法。此外,我们观察到,在识别过程中,丢失率不断变化,因为一些标签被验证存在或不存在,这影响了时间效率;因此,我们首次提出了一种混合盘点算法DLS(Dynamic Inventory list-based Stocking基于动态库存列表的盘点)来适应这种变化。根据大量模拟的结果,当库存列表是实际存在标签的20倍时,我们的方法的执行时间是现有最佳算法的36.3%。

1 介绍

​ 射频识别(RFID)是一种数字识别技术,它利用射频从RFID标签上使用RFID阅读器收集身份信息。在识别过程中,阅读器向标签发出请求,标签用预先存储的ID和相关信息进行回复。与条形码技术相比,RFID具有非视距、远距离、快速识别、高可靠性等优点。

​ 盘点是RFID的重要应用之一。盘点的目的是验证给定区域(如仓库、图书馆和购物中心)中与给定的库存清单相标签比较是否存在(每个标签都附着在一个对象上)。现有的盘点方法主要包括ID收集方法和缺失标签识别方法。在ID收集方法中,阅读器收集其询问区域中标签的所有ID,然后将其与清单列表进行比较。典型的这种方法包括基于树的方法[4 5 6]和基于ALOHA的方法[7 8 9 10 11]。由于要传输的标签ID很长(例如,96位),并且标签之间的冲突很严重,因此这些方法的执行时间很长。

​ 为加快盘点过程,提出了缺失标签识别方法[12 13 14]。这种算法要求标签在一个时隙的时间范围内回复阅读器。根据给定的标签清单,可以提前计算每个标签回复的时隙。将预先计算的时隙状态与实际结果进行比较,可以确定缺少的标签。例如,如果未收到预期的标签的回复,则可以确定该标签丢失。短消息(例如,1位数据)而不是标签ID被用作标签应答的内容,以减少时间成本。SFMTI[14]实现了目前最好的识别性能,约为每个时隙一个标签。**我们使用缺失标签表示询问区域中缺失但存在于清单中的标签,使用缺失率表示缺失标签与清单中标签的比率。**当丢失率很小时,现有的丢失标签识别算法能够令人满意地工作。

​ 然而,在许多情况下,盘点中的缺失率很高。一个典型的例子是在仓库中使用手持式RFID阅读器进行盘点。由于阅读器的移动性,无法预先知道其相应区域中的库存清单。在这种情况下使用现有盘点技术的一种方法是使用更大区域(例如仓库)而不是询问区域中的标签作为其库存清单。然而,库存清单中的标签比实际存在的标签多得多,即丢失率相当高,这使得盘点的执行时间显著增加。此外,即使我们使用固定阅读器对同一区域(例如,图书馆房间内的书籍清单)进行定期盘点,如果新对象在两次连续盘点过程之间进入询问区域,则可能需要比实际存在的标签多得多的库存清单(整个图书馆的书)。丢失率高的盘点也适用于询问区域的许多标签被移出(例如,商店中的一些人偷了)的情况。现有的缺失标签识别算法在这些场景中不具有时间效率,应该加以改进。

​ 在本文中,我们研究了高丢失率下基于RFID盘点的问题。我们首先分析了丢失率对盘点执行时间的影响。随后,我们提出了一种称为基于粗粒度库存列表的盘点(CLS)算法,其中粗粒度库存列表表示库存列表比现有标记多得多。在丢失率高的场景中,CLS可以在单个时隙内识别多个标签。与现有工作只考虑有 k 个回复的时隙不同,CLS 进一步利用具有四个或更多回复的时隙来提高识别的时间效率。时隙的状态数也被最小化,此后,哈夫曼码被用来缩短阅读器发送的请求。此外,我们观察到,在识别过程中,丢失率不断变化,这在文献中尚未报道。这是因为随着识别的进展,越来越多的标签被确认存在或不存在。我们设计了一种混合算法,称为基于动态库存列表的盘点(DLS),该算法适应不断变化的丢失率,以获得最佳性能。总之,本文提供了以下贡献。

  1. 我们研究了高丢失率下的基于RFID的盘点问题。在许多盘点场景中,库存列表比实际存在的物体多得多,因此需要在高丢失率下提高性能。
  2. 为了解决这个问题,我们提出了一种新的丢失标签识别算法CLS。当丢失率较高时,CLS算法的性能优于现有算法。
  3. 我们观察到,在识别过程中不断变化的丢失率会影响执行时间。因此,我们首次提出了一种自适应混合识别算法DLS来解决这一问题。
  4. 我们进行了大量的仿真,以比较我们的方法与现有算法的时间效率。结果表明,当丢失率较高的情况下,我们的方法优于现有的方法。在一个典型的基于手持RFID阅读器的盘点场景中,库存清单是实际库存的20倍,与现有方法相比,DLS需要其36.3%的执行时间。

​ 论文的其余部分组织如下:第2节描述了本研究中使用的系统模型,并阐述了问题。我们的解决方案如第3节所示。第4节报告了模拟结果。第5节回顾了相关工作,第6节总结了本文。

​ 本文基于我们的会议论文**[15]**。在此版本中,我们扩展了该方法,以自动适应识别过程中丢失率的变化。本文还包括其他讨论和评估结果。

2 系统模型和问题表述

​ 在本节中,我们将介绍本文中使用的系统模型,并随后阐述问题。

2.1 应用模型

​ 在一个大的区域中有许多物体,例如仓库、图书馆和购物中心。RFID标签附着在每个物体上。这些RFID标签的ID记录在库存清单中,并提前知道。例如,仓库的库存清单可以通过监控进出口的物品的进出来获得。这些 RFID 标签称为候选标签,用 N* 表示。

​ 对于盘点的目的是,使用 RFID 阅读器来识别其询问区域内的标签。询问区域比总面积小得多,即,总面积的1/10。留在询问区域中的标签称为存在标签,表示为N。相应的N* - N 表示丢失标签,N未知,需要识别。唯一知道的信息时N ⊆ N* 和 | N | << | N* |。在本文中,我们对丢失率的定义义如下:
p = ∣ N ∗ ∣ − ∣ N ∣ ∣ N ∗ ∣ p = \frac{|N^*| - |N|}{|N^*|} p=NNN
​ 重复多次识别过程以覆盖该区域并获得所有存在标签的列表。标签列表可与N进行比较,以便于审核。

2.2 通信模型

​ 根据文献,我们假设RFID阅读器使用Reader Talks First(RTF)模式与RFID标签通信[16]。在这种模式下,RFID阅读器首先查询标签,标签在一个时隙时间范围内回复。接下来是阅读器对标签回复可选确认信息。上述过程称为一轮识别,需要多轮识别才能完成整个过程。在每一轮中,被成功识别的标签保持沉默,只有其他标签参与识别。阅读器发送的每个查询都包含一个随机数r和一个帧大小f。在接收到查询后,标签t使用其哈希函数Ht,通过计算 H t ( t ) m o d f H_t(t) mod f Ht(t)modf来确定应答的时隙。Ht可通过基于标签中预存储数据的伪随机方法实现[12]。阅读器知道所有候选标签的哈希函数(即,由标签制造商提供)。在本研究中,我们假设识别过程中存在可靠的通信。

​ 根据标签的回复,时隙分为空时隙、单时隙或k-碰撞时隙。空时隙是没有标签答复的时隙,单时隙是只有一个标签答复的时隙,k-碰撞时隙是k个标签答复的时隙。为了便于区分它们,我们将基于候选标签计算的空时隙称为预期空时隙,将实际标签中的空时隙称为实际空时隙。类似地,我们有预期单时隙、预期k-碰撞时隙、实际单时隙和实际k-碰撞时隙。

​ 识别过程中考虑了阅读器请求和标签回复的时间成本。我们使用 T t a g T_{tag} Ttag 来表示阅读器向标签发送 96-bits请求所需的时间。其他长度的请求根据数据量消耗与Ttag成比例的时间,当满足不同的识别要求时,标签回复的时间成本会有所不同。如果阅读器需要区分空时隙和其他时隙,则标签应仅传输1bit数据,而如果阅读器需要区分空时隙、单例时隙和碰撞时隙,则标签应传输至少10bits的数据。在本文中,传输1bit数据所需的持续时间表示为 T s h o r t T_{short} Tshort,传输10bits数据所需的持续时间表示为 T l o n g T_{long} Tlong。我们依据[14]中的参数设置,其中Ttag为2.4 ms(包括任何两个连续传输之间的等待时间),Tshort为0.4 ms,Tlong为0.8 ms。

​ 在本研究中,我们假设通信是可靠的,即来自阅读器的请求和来自标签的响应是完整的。尽管这一假设通常用于现有的丢失标签识别算法,这可能不适用于实际应用。为了解决这个问题,我们使用类似于 [18 19 20] 中的概率模型进行通信。阅读器和标签需要根据所需的可读性进行多次通信。详细设计超出了本文的范围,将在未来的工作中讨论。

2.3 问题

​ 鉴于上述系统模型,我们需要设计一种算法来尽快识别 RFID 阅读器询问区域中的存在标签。

​ 我们的问题不同于现有的丢失标签识别问题,其库存列表和现在标签几乎相同,即缺失率很小。如果RFID系统对同一区域进行高频周期性盘点(因此可以从上次盘点中获得盘点清单),并且在连续两次盘点过程之间没有物体进入询问区域,则确实如此。然而,这种清单往往难以确定。例如,第一次盘点、标签在区域内自由移动、使用手持式RFID阅读器等。在这种情况下,我们的算法可以用来提高识别过程的时间效率。

3 解决方案

​ 我们首先分析一些现有的盘点作业,然后详细说明我们的算法。随后,我们讨论了如何确定算法中的关键参数以及其他技术考虑。

3.1 现有方法

​ 盘点的一种简单方法是收集现存标签的所有ID。由于标签之间的冲突,每个标签在被识别之前平均需要传输其ID 2.72次,并且需要来自阅读器的一条短消息来确认每次传输的成功或失败。 因此,这种方法的执行时间约为 2.72 ∣ N ∣ ( T t a g + T s h o r t ) 2.72|N|(T_{tag}+T_{short}) 2.72N(Ttag+Tshort)。 当 | N | 很大时,它需要大量的时间。

​ 我们可以用的另一个方法是轮询法,阅读器逐个发送候选标签的ID,在标签收到它的ID后,用短信息进行回复。它的只想时间约为 ∣ N ∗ ∣ ( T t a g + T s h o r t ) |N^*|(T_{tag}+T_{short}) N(Ttag+Tshort),由于我们的问题,|N*| >> |N| ,这个方法甚至需要更多的时间。

​ 为了避免传输标签ID,丢失标签识别算法被提出。这些算法之间最好性能由SFMTI提出,即,执行时间约等于 ∣ N ∗ ∣ T s h o r t |N^*|T_{short} NTshort。当|N*|近似为|N|时,它具有理想的性能,但当|N*| >> |N|时,它的性能会迅速下降。然而,我们相信它的基本思想对解决我们的问题是有用的,因此我们将其描述如下。

SFMTI首先生成随机数r1和r2以及帧大小f。对于N*中的所有标签,根据r1和f计算预期时隙。由于N*中所有标签的哈希函数都是已知的,因此这项工作可以在阅读器端执行。预期2-碰撞时隙或预期3-碰撞时隙对应的标签分别使用r2和帧大小2和3执行第二次哈希。如果标签被哈希为完全不同的值,(例如,标签t1、t2、t3分别散列为0、1和2),它们中的每一个被分配不同的时隙;因此,预期碰撞时隙被转换为预期单时隙。这个过程称为协调。随后,阅读器向标签发送相应的信息,并请求它们回复。只有与预期的单时隙相对应的标签会回复短消息,而所有其他标签保持沉默。对于每个预期单时隙,可以将相应的标签标识为存在或缺失,并且不需要参与后续识别。

​ 在我们的问题中,丢失的标签数量非常大,SFMTI花费大量时间来识别它们。因此,我们认为识别优先权应该是给定的缺失的标签,而不是现存标签。如果可能的话,我们可以将多个丢失标签哈希到单个时隙中,从而将它们一起验证以提高时间效率。此外,在SFMTI中,预期k-碰撞时隙,(k>3)不被使用,这不仅错过了这些时隙中的识别机会,而且还使处理复杂化,因为标签需要将其处理与预期2-碰撞时隙的处理区分开来。我们将尝试合并所有预期碰撞时隙的处理。

3.2 初步解决方案(重点

​ 我们提出了一种基于粗粒度库存清单的盘点算法来解决这个问题。CLS包括三个阶段:时隙分配阶段、过滤向量生成阶段和标签验证阶段。在时隙分配阶段,为每个候选标签分配一个时隙。在过滤向量生成阶段,基于期望时隙生成过滤向量。在标签验证阶段,阅读器向标签广播过滤向量,标签回复阅读器。随后,阅读器计算识别的标签,同时标签改变其状态。我们将详细描述如下。

​ 在时隙分配阶段,阅读器首先生成随机数r和帧大小f,然后基于r、f和N* 计算预期时隙。根据我们在第2节中描述的系统模型,分配给标签t ∈ N* 的时隙可以由Ht® mod f确定。随后,生成长度为f的分配向量A。A的第i个元素为A(i),表示第i个时隙对应的标签数,其中A(i)=0,1,2,3…,进一步,我们用L来存储此外,我们使用L来存储详细的分配,其中L(i)表示与第i个时隙对应的所有标签。图1a中显示出了期望时隙和相应的分配向量的示例。

​ 在过滤向量生成阶段,我们将A的元素中大于1的所有元素更改为m。例如,图1b示出了对应于图1a中的改变的A。随后,我们构造了一个过滤向量V。V是已更改A的哈夫曼编码,其中m编码为“1”,0编码为“00”,1编码为“01”。我们使用哈夫曼编码,因为它的解码可以很容易地在标签端实现。此外,我们观察到当 p p p较大时,k-碰撞时隙(k≥2)的数量几乎是所有时隙的一半;因此,k-碰撞时隙使用1bit长度的代码表示,其他两种时隙使用2bits长度的代码表示。这样的编码可以节省大约四分之一的要发送的数据量。过滤向量的示例如图1c所示。

​ 在标签验证阶段,阅读器向其询问区域中的标签广播r、f和V。每个标签t用 s = H t ( r ) m o d f s = H_t(r) mod f s=Ht(r)modf计算一个索引s。随后,标签t解码V并通过计算V中s之前的非空时隙来确定其时隙。如图1b所示,标签t0将在第一时隙中回复,因为在其索引之前只有一个空时隙,并且标签t4,t5,t6将在第三个时隙回复,因为在他们的索引前有一个单时隙和一个m-碰撞时隙。每个标签都会回复一条短消息,而不是它的ID。根据我们的系统模型,此消息的持续时间为Tshort。

​ 回复后标签的操作根据其在V中的值而有所不同。假设标签t被分配第j个时隙 ( j = H t ( r ) m o d f ) i f V ( j ) = 1 (j=H_t(r)modf) if V(j) =1 (j=Ht(r)modf)ifV(j)=1,标签t将其状态更改为“静默”,并且不参与随后的识别过程。如果V(j)=m,则标签t不会改变其状态,并且仍然需要参与后续识别过程。CLS不要求阅读器确认标签的回复,标签可以在回复后立即更新其状态。

​ 在读取器侧,在每个时隙中接收来自标签的应答,并与A进行比较。如果在时隙i中接收到的标签应答的数量表示为k,则我们具有以下条件。

  1. 如果A(i) = 1 且 k = 1,则与i对应的标签被标识为存在。
  2. 如果A(i) = 1 且 k = 0,则与i相对应的标签被确定为缺失。
  3. 如果A(i) = m 且 k = 0,则与i对应的所有标签都被标签为缺失。
  4. 如果A(i) = m 且 k > 0,则没有标签被识别。

​ 显然,CLS中只存在预期单时隙和预期m-碰撞时隙,因此,A(i)只能是1 或 m。

​ 所有被识别为存在或丢失的标签都将从N*中删除。重复该过程,直到N*为空,此时所有候选标签都被识别为缺失或存在。识别为现存标签的候选标签是询问区域中标签识别过程的目标。

​ CLS和SFMTI有几个不同之处,首先,CLS移除了在时隙分配过程中的协调过程。为了避免候选标签之间的碰撞,SFMTI将一些2-碰撞时隙和3-碰撞时隙协调为期望单时隙。在CLS中,我们更喜欢这些碰撞,因为它们很可能导致成功识别多个丢失的标签。第二,CLS 利用 k-collision slot (k > 3) 来提高其时间效率。SFMTI 不使用此类时隙,因为 k-collision 时隙 (k > 3) 的处理与标签端的其他类型时隙的处理不同。为了支持这些时隙,SFMTI 需要 3 位(以区分空时隙、单例时隙、2-冲突时隙、3-冲突时隙和 k-冲突时隙 (k > 3))而不是 2 位数据(以区分空时隙 、单例槽、2-碰撞槽和3-碰撞槽)来表示过滤器向量的一个元素。与收益相比,这需要更多的时间成本。CLS支持k-碰撞时隙(k>3),但是,不会引入额外的成本,因为所有冲突时隙的处理是相同的。第三,CLS使用哈夫曼编码进一步减少阅读器发送的数据量的大约四分之一。第四,在CLS中,一些回复阅读器的标签需要在后续轮次中再次回复;然而,在SFMTI中,任何回复标签都不需要参与后续轮次。这是因为在SFMTI的标签验证阶段中只存在预期单时隙,因此,所有回复都会导致成功识别候选标签。相比之下,CLS允许识别中有k个碰撞槽(k ≥ 2)。由于使用了短回复,我们无法区分来自一个标签的回复和来自多个标签的回复。 因此,这些标签需要在后续轮次中再次回复。 然而,与可能产生的收益相比,这样的成本微不足道。

3.3 CLS的最佳帧长(重点

​ 在上述过程的每一轮中,帧长f影响时间效率;因此,在这部分,我们确定它的最佳值。分析过程与[14]类似,但增加了丢失率的处理。如前所述, N ∗ N^* N 表示候选标签, p p p 表示丢失率。我们首先计算一个时隙是k-碰撞时隙的概率, P k P_k Pk,如下:
P k = C N ∗ k ( 1 f ) k ( 1 − 1 f ) N ∗ − k ( 2 ) P_k=C^k_{N^*}(\frac{1}{f})^k(1-\frac{1}{f})^{N^*-k} \qquad\qquad(2) Pk=CNk(f1)k(1f1)Nk(2)
​ 预期k碰撞时隙的数量 N k N_k Nk可计算如下: N k = N ∗ × P k ( 3 ) N_k = N^* × P_k\qquad \qquad (3) Nk=N×Pk(3)

​ 考虑到一些候选标签丢失,我们计算在标签验证阶段预期的k-碰撞时隙中未检测到回复的概率,如下所示:
P k ‘ = C N ∗ k ( 1 f ) k ( 1 − 1 f ) N ∗ − k × p k ( 4 ) N k ‘ = f × C N ∗ k ( 1 f ) k ( 1 − 1 f ) N ∗ − k × p k ( 5 ) P k ‘ = P k × p k ( 6 ) P_k^`=C^k_{N^*}(\frac{1}{f})^k(1-\frac{1}{f})^{N^*-k}×p^k \qquad \qquad (4)\\ N_k^`=f×C^k_{N^*}(\frac{1}{f})^k(1-\frac{1}{f})^{N^*-k}×p^k \qquad \qquad (5)\\ P_k^` = P_k × p^k \qquad \qquad (6) Pk=CNk(f1)k(1f1)Nk×pk(4)Nk=f×CNk(f1)k(1f1)Nk×pk(5)Pk=Pk×pk(6)
​ 在CLS中,可以在两种情况下识别标签的存在或缺失。首先,根据是否接收到对应于预期单时隙的标签的回复,可以将对应于预期单时隙的标签识别为存在或丢失的标签。其次,如果没有收到回复,则与预期的k碰撞时隙(k>2)对应的标签可以被识别为丢失的标签。随后,可按如下方式计算所识别标签的数量:
R = N 1 + ∑ k = 2 N ∗ k N k ‘ ( 7 ) \R = N_1 + \sum^{N^*}_{k=2}kN^`_k \qquad\qquad(7) R=N1+k=2NkNk(7)
​ CLS使用哈夫曼代码对预期的空时隙、预期的单例时隙和其他时隙进行编码。前两种时隙采用2位编码,后一种时隙采用1位编码。因此,阅读器发送请求所需的持续时间为
T r = ( N 0 + N 1 ) × t t a g 96 × 2 + ( f − N 0 − N 1 ) × t t a g 96 ( 8 ) T_r=(N_0+N_1)×\frac{t_{tag}}{96}×2+(f-N_0-N_1)×\frac{t_{tag}}{96} \qquad\qquad(8) Tr=(N0+N1)×96ttag×2+(fN0N1)×96ttag(8)
​ 在标签验证阶段,标签回复的总时间为,且识别标签所需的平均时间为
T v = ∑ k = 1 N ∗ N k × t s h o r t ( 9 ) T R = T r + T v N 1 + ∑ k = 2 N ∗ k N k ‘ ( 10 ) T_v=\sum^{N^*}_{k=1}N_k×t_{short} \qquad\qquad(9)\\ \frac{T}{\R} = \frac{T_r+T_v}{N_1 + \sum^{N^*}_{k=2}kN^`_k} \qquad\qquad(10) Tv=k=1NNk×tshort(9)RT=N1+k=2NkNkTr+Tv(10)
​ 令 ρ = N ∗ / f \rho = N^* / f ρ=N/f,当N*是大的且k是小的,我们可以获得
P k = C N ∗ k ( 1 f ) k ( 1 − 1 f ) N ∗ − k ≈ 1 k ! ρ k e ρ ( k = 0 , 1 , . . . ) ( 11 ) ∑ k = 2 N ∗ k N k ‘ = ∑ k = 1 N ∗ k N k ‘ − P 1 ‘ ( 12 ) T R ( 13 ) P_k=C^k_{N^*}(\frac{1}{f})^k(1-\frac{1}{f})^{N^*-k}≈\frac{1}{k!}\rho^ke^\rho(k=0,1,...)\qquad\qquad(11)\\ \sum^{N^*}_{k=2}kN^`_k = \sum^{N^*}_{k=1}kN^`_k-P_1^` \qquad\qquad(12)\\ \frac{T}{\R}\qquad\qquad(13) Pk=CNk(f1)k(1f1)Nkk!1ρkeρ(k=0,1,...)(11)k=2NkNk=k=1NkNkP1(12)RT(13)
​ 我们将(13)的导数等于0,以获得其最大值和相应的ρ。虽然由于p的存在,我们无法提供结果的封闭形式表达式,当p给定时,可以很容易地求解。

​ 在上述分析中,我们假设丢失率p是已知的。在实践中,我们应该首先估计它。可根据相关区域和整个盘点区域的面积近似确定。现有的估计标签基数的方法[16 21 22 23]还可用于根据识别过程中的回复估计丢失率。

3.4 适应性盘点(重点

​ 在详细验证了识别过程之后,我们观察到在不同的轮次中丢失率发生了变化。这是因为随着识别的进展,越来越多的标签被确认存在或不存在。如图2所示,当其初始值为0.8、0.9或0.95时,丢失率随着执行而逐渐降低。这种现象以前没有被调查过。如果在现有工作[12 14]中使用固定的帧大小,识别的时间效率将受到影响。

​ 我们提出了一种基于动态库存清单的盘点(DLS)算法来解决这个问题,它是基于CLS和现有算法的一种混合算法。首先,它在每轮开始时估计丢失率,并相应地调整帧大小。我们假设在第 i 轮之前,候选标签是Ni,丢失率是pi,在第 i 轮鉴定过程中,验证为丢失的标签为Mi,验证为存在的标签为Hi,这些都是由阅读器记录的。因此,这一轮之后的丢失率可以计算如下:
P i + 1 = ∣ N i ∣ ∗ p i − ∣ M i ∣ ∣ N i ∣ − ( ∣ M i ∣ + ∣ H i ∣ ) ( 14 ) P_{i+1}=\frac{|N_i|*p_i-|M_i|}{|N_i|-(|M_i|+|H_i|)} \qquad\qquad(14) Pi+1=Ni(Mi+Hi)NipiMi(14)
​ 根据更新后的丢失率,可以计算新的帧大小。我们还可以根据一组丢失率(例如,从 0.6 到 1,步长为 0.5)预先计算帧大小的值,随后在识别过程中,将帧大小调整为最接近的丢失率的帧长。

​ 之后,DLS使用混合自适应策略进行识别。

​ CLS设计用于高丢失率的场景,SFMTI设计用于低丢失率的场景。因此,当丢失率足够小时,CLS的性能比SFMTI差。当丢失率非常大(即,现存标记的数量非常小)时,可以直接使用ID收集方法,而不是使用CLS。DLS的策略如下:当丢失率在t1和t2之间时,使用CLS,并如前一节所示调整帧大小;当缺失率小于t1时,使用SFMTI;当丢失率大于t2时,使用ID收集方法。使用此方法,CLS与其他方法协作,以在所有场景中实现最佳性能。

​ 然后我们计算t1和t2的值,如下所示。与CLS分析类似,我们有以下SFMTI方程

image-20211208154605160

​ 通过将该方程与方程(13)相等,我们得到p的值为t1,即0.679。

​ ID收集方法平均需要 2.72 ( t t a g + t s h o r t ) 2.72(t_{tag}+t_{short}) 2.72(ttag+tshort)来识别标记。结合方程(13),我们在下面的方程中求解p,得到t2为0.994。
T R × ∣ N ∗ ∣ = 2.72 ( t t a g + t s h o r t × ( 1 − p ) ∣ N ∗ ∣ ) ( 16 ) \frac{T}{\R}×|N^*|=2.72(t_{tag}+t_{short}×(1-p)|N^*|) \qquad\qquad (16) RT×N=2.72(ttag+tshort×(1p)N)(16)
​ 值得注意的是,当丢失率很小时,使用SFMTI和CLS之间的差异很大,而当丢失率非常大时,使用ID收集方法和CLS之间的差异可以忽略不计。如果我们打算简化设计,我们可以在丢失率大于t1时使用CLS,否则使用SFMTI。

3.5 讨论(重点

​ 最后,我们分析了DLS对EPC C1G2 RFID协议的遵从性及其实现。协议中需要进行一些修改以实现DLS。在DLS中,除了帧大小之外,还应向标签发送一个过滤向量。应修改协议中的Query命令,以包含过滤向量。相应地,标签的过程逻辑应该被修改。处于就绪状态的标签支持哈夫曼解码,并根据帧大小、索引s和s之前的非空时隙计算回应时隙索引。处于回复状态的标签以短消息而不是RN16响应,然后更新其状态。如果过滤向量太长而无法在一个时隙中传输,则与现有著作[12 14]类似,过滤向量可被划分为96位的多个段并顺序传输。在这种情况下,应该进一步修改Query命令及其流程逻辑,以支持多个段。

​ 在DLS的实现中,计算s的方法与现有的基于ALOHA的方法是一致的。对于哈夫曼解码,EPC C1G2 RFID协议中的标签已经需要类似的功能,因此可以重复使用或修改。例如,从阅读器发送的命令通过不同长度的代码进行区分,包括“00”表示查询QueryRep,“01”表示ACK,“1000”表示Query,,“1001”表示QueryAdjust等。对于不同类型的标签,这种方法的详细实现是不同的。例如,考虑到只有三个符号:“1”表示m,“00”表示0,并且,“01”代表1。在实现中,m可以用2表示。96位临时存储器,用于在标签中需要s之前存储过滤向量段和非零时隙计数器。如果N*的最大值为65536,则计数器的16位就足够了。此处理的时间复杂度与过滤向量的长度(和N*)成正比。

4 性能评估

​ 仿真结果验证了该方法的有效性。我们首先比较了我们的方法与其他方法的执行时间,然后分析了算法设计中不同参数对执行时间的影响。重复100次模拟以获得图形的每个数据点。置信水平为0.95。

4.1 丢失率的影响

​ 我们首先比较了CLS和DLS与SFMTI、IIP和EDFSA[10]在执行时间方面的性能。如果在预期单插槽中收到回复,IIP将验证标记的存在,但不会验证标签的丢失。为了公平起见,我们稍微修改一下,如果在一个时隙内没有收到回复,我们允许它验证标签丢失。如果该验证仅在预期单时隙执行,则该算法表示为IIP-Revied1,如果该验证也在预期碰撞时隙执行,则该算法表示为IIP-Revied2。对于EDFSA,假设可以根据询问区域的面积计算该信息,则不考虑估计标签数量所需的时间。我们将SFMTI的帧大小设置为N/1.68[14],将IIP-Revied1和IIP-Revied2的帧大小设置为N/1.516,[12] 以达到最佳性能。为了公平起见,我们还将CLS的帧大小设置为与SFMTI相同。DLS使用简化设计,当丢失率大于0.679时使用CLS,否则使用SFMTI,动态调整DLS的帧大小。我们通过改变丢失率来比较这些方法的性能。结果如图3所示。

​ 可以观察到IIPrevised1和SMFTI的执行时间是稳定的,即分别约为8760 ms和4900 ms。这是因为它们在预期单插槽中标识候选标记。尽管丢失率发生变化,但候选标签的数量保持不变,因此执行时间保持不变。IIP-Revied2的执行时间总是小于IIP-Revied1的执行时间。当丢失率增加时,它会逐渐减少,因为更多预期碰撞时隙变为空。然而,它的性能仍然比SFMTI差,这表明IIP-Revied2中的许多时隙仍然被浪费。CLS的目标是在一个时隙中识别多个标签。然而,只有当丢失的标签占总标签的很大比例时,它才有效。当丢失率增加时,CLS的执行时间迅速减少。当使用相同的帧大小时,当丢失率大于0.71时,CLS优于SFMTI。DLS始终在该图中显示最佳性能。由于帧大小的动态调整,DLS在丢失率小于0.9时略微缩短了执行时间,在丢失率大于0.9时更明显。当丢失率为0.95时,DLS的执行时间约为CLS的67.8%,SFMTI的36.3%。当丢失率很小时,EDFSA的性能最差。当丢失率非常大时,它会显示理想的性能,因为当前标记的数量很小。根据我们的模拟结果,当丢失率大于0.9985时,它的性能优于DLS。

​ 如果我们事先不知道丢失率,我们可以使用LOF[22]来估计它。我们可以调用LOF进行10次试验(根据[23]对标签进行粗略估计,也用于SRC_s的第一阶段[23])来计算缺失率,然后使用DLS进行盘点。我们将这种方法称为LOF-DLS。我们通过改变丢失率来比较LOF-DLS和DLS的性能;结果如图4所示。当丢失率在 0.70 到 0.95 之间时,LOF-DLS 的执行时间比 DLS 多 3.5-7.7%。 这表明如果没有丢失率的先验知识,DLS 可以在粗略估计丢失率后实现理想的性能。

​ 我们进一步比较了当丢失率在0.994和0.999之间时,不同应用程序的性能。结果如图5和6所示。我们把它们分成两个数字,以便更清楚地显示它们之间的差异。Buzz[25]也包括在这个比较中。Buzz可能会获得当前RFID标签的错误结果。我们重复处理,只在结果正确时计算Buzz的执行时间。由于Buzz只获取标签的短ID,因此我们使用SFMTI或轮询方法进一步获取完整的标签ID,由Buzz SFMTI和Buzz轮询表示。对于Buzz SFMTI,时隙是基于短ID计算的,来自标签的响应是完整的标签ID。对于Buzz轮询,阅读器一个接一个地发送短ID,相应的标签回复其完整的标签ID。

​ 可以观察到,SMFTI的IIPrevised1的执行时间与图3中的执行时间相同。IIP-revised2的执行时间与SMFTI的执行时间相近,因为IIP-revised2受益于许多预期的碰撞时隙变为空。它们的执行时间比CLS和DLS多得多。Buzz SFMTI和Buzz-Polling具有类似的性能,这表明获取标记的短ID控制Buzz的执行时间。Buzz(Buzz SFMTI或Buzz-polling)的执行时间小于SMFTI和CLS,但大于DLS。结果表明,动态改变帧大小是有效的。由于丢失率估计的代价,LOF-DLS的执行时间比DLS多约32毫秒。当丢失率大于0.998时,EDFSA的性能优于DLS。

4.2 候选标签数量的影响

​ 我们将候选标签的数量从2000改为10000,以验证不同方法的性能。丢失率设置为0.9。结果如图7所示。

​ 可以观察到,所有方法的执行时间都随着候选标签数量的增加而增加。这是因为要识别的标签数量增加了。IIP-Revied1的执行时间接近EDFSA。与EDFSA相比,其他方法具有更好的性能。DLS在该模拟中始终具有最佳性能。当候选标签数量增加时,其执行时间与其他方法的执行时间之间的差距变大。

4.3 不同哈希策略的影响

​ 随后,我们检查可用于解决问题的不同哈希策略的影响。如前所述,在CLS中,时隙被划分为k-碰撞时隙(k=2,3,4…)。我们可以为后续验证保留这些时隙,或者使用第二个随机数来协调它们,类似于SFMTI[14]中的处理。我们将保留2-碰撞时隙但协调3-碰撞时隙的算法称为CLS-K2R3,将保留2-碰撞时隙和3-碰撞时隙的算法称为CLS-K2K3。这两种算法都不使用k-碰撞时隙,(k>3)用于识别。如果算法保留所有k-碰撞时隙(k ≥ 2),我们将其称为CLS-K2+。CLS-K2R3、CLS-K2K3和CLS-K2+通过第3.3节中类似的计算使用最佳帧大小,我们比较不同丢失率的执行时间。SFMTI的数据也绘制为基线。由于丢失率在不同轮中发生变化,因此我们仅使用这些算法执行第一轮识别,然后分析识别候选标记所需的平均执行时间。值得注意的是,在所有这些算法中,没有使用哈夫曼编码。N*设置为10000。结果如图8所示。

​ 从图中可以看出,当丢失率较小时,CLS-K2+表现不如CLS-K2K3和CLS-K2。这是因为大多数实际时隙都是碰撞时隙,无法识别任何标记。当丢失率增加时,所有算法的执行时间都会减少,并逐渐优于SFMTI。当丢失率大于0.7时,CLS-K2+在这些算法中表现出最好的性能。在这种情况下,大多数预期的冲突时隙实际上是空的,因此识别出与此类时隙对应的多个候选标签。CLS-K2R3和CLS-K2K3需要更多的时间来完成识别过程,因为前者只考虑预期2-碰撞时隙,后者只考虑预期2-碰撞时隙和3-碰撞时隙。两种算法都没有考虑预期的k-碰撞时隙(k>3),但是如果使用得当,这些时隙可以节省时间。当缺失率较小时,CLS-K2K3和CLS-K2+的差距远小于CLS-K2K3和CLS-K2R3的差距以及CLS-K2R3和SFMTI之间的差距,这表明节省时间的好处主要归功于 预期的 2-collision slot 和预期的 3-collision slot 的识别,以及预期的 k-collision slot (k > 3)。当丢失率增加时,识别预期k-碰撞时隙(k>3)的好处更为明显。

4.4 哈夫曼编码的影响

​ 我们还检查了CLS中使用的哈夫曼编码的效果。哈夫曼编码用于减少从阅读器发送的数据量。此技术不能用于SFMTI和CLS-K2R3,因为它们需要区分四种状态:空时隙、单时隙、2-碰撞时隙和3-碰撞时隙。CLS结合了所有k-碰撞时隙(k ≥ 2)的处理,因此只需要三种状态。使用哈夫曼编码,1位的代码用于表示k-碰撞时隙(k ≥ 2),2位的代码用于表示空时隙和单时隙。将哈夫曼编码添加到CLS-K2K3时,我们将该算法称为CLS-K2K3Huffman。当丢失率较大时,DLS相当于CLS-K2+和哈夫曼编码。我们把N*设为10000。结果如图9所示。

​ 可以观察到,DLS的性能始终优于CLS-K2+。这是因为哈夫曼编码仅用于减少从阅读器发送的数据量,但保持其他处理相同。这个结果也可以通过CLSK2K3Huffman和CLS-K2K3之间的差异来验证。当缺失率在0.7到0.95之间时,哈夫曼编码的好处是DLS比CLS-K2+约为4.0–8.1%,CLS-K2K3Huffman比CLS-K2K3约为2.7–4.6%。

4.5 帧长的影响

​ CLS的性能受帧大小的影响。根据我们在第3.3节中的分析,最佳帧大小应设置为N = ρ,其中ρ根据丢失率计算。我们首先检查当候选标签的数量为 10,000 且缺失率分别为 0.8 和 0.85 时,不同 ρ 值下 CLS 的执行时间。与之前的模拟类似,我们使所有这些算法仅执行第一轮识别,然后分析平均执行时间以识别候选标签。结果如图10所示。

​ 可以观察到存在一个使执行时间最小化的最优ρ,缺失率为0.8时为5,缺失率为0.85时为7。我们进一步比较了模拟中r的最佳值与第3.3节中计算的值。结果如表1所示。可以观察到它们之间的差异很小,这表明我们计算的最佳帧大小是正确的。

5 相关工作

​ ID收集算法可直接用于盘点。这些算法分为基于树的算法[4],[5] 以及基于ALOHA的算法[7]、[8]、[9]、[10]、[11]、[26]。它们分别遵循树遍历模型或ALOHA通信模型,请求标记将其ID发送给读取器。由于标签ID很长,并且传输中存在许多冲突,因此这些算法花费了大量时间。

​ 近年来,一些研究者对缺失标签检测和识别问题进行了研究。缺失标签检测[27]、[28]、[29]、[30]、[31]、[32]旨在检测给定区域中是否有任何标签缺失,但不关心哪些标签丢失。这与本文讨论的问题不同。缺失标签标识要求获取缺失标签的所有ID,这些ID可用于盘点。在该问题的解决方案中,将基于库存列表计算的预期时隙与实际时隙进行比较,以验证标签的存在或缺失。标签应答携带1位数据,而不是整个ID。IIP[12]验证是否存在与预期单插槽对应的标签。为了增加预期的单例时隙的数量,IIP请求预期碰撞标签以50%的概率回复。IIP的缺点是,预期碰撞时隙的数量占很大比例,并且预期的空时隙完全未使用。根据[14],这些未使用的时隙约占所有时隙的48%。[12]中的作者还通过引入轮询阶段和/或消除一些碰撞时隙,研究了其他算法,包括TPP、TPP/TR和TPP/CSTR。据报道,它们的表现比IIP更差。在[13]中,Zhang等人使用多个RFID阅读器来识别丢失的标签。协调阅读器并发工作,从而减少执行时间。这种方法不能提高单个阅读器识别的时间效率。SFMTI[14]旨在改善IIP。SFMTI用一个第二个随机数将一些2-碰撞时隙和3-碰撞时隙协调为单时隙。所期望的空时隙和碰撞时隙不需要回复,并且他们的时隙被跳过。该算法是针对具有少量丢失标签的静态环境设计的,当缺失率增加时,其性能会下降。这种方法有两个问题。一个是执行0-1整数线性规划以获得结果需要大量内存空间。另一个是Buzz只获取标签的一个短ID,并且需要额外的处理,(例如,ID轮询)来获取完整标签ID所必需的。根据我们的模拟,当丢失率较大时,其执行时间与EDFSA相似。PCMTI建议在一个时隙中同时安排一对标签进行应答,并使用曼彻斯特编码来确定应答的标签。此协议需要在物理层进行修改。此外,没有利用k-碰撞。RUN[17],HARN[3],OMTI[33]是为了解决出现一些意外标签时的问题。这些标签可以使一些缺失的标签被检测为存在标签。iVEKI使用隐私保护法确定许多普通标签中缺少的关键标签。这些问题与本研究中调查的问题不同。

6 结论

​ 在这项研究中,我们研究了高缺失率的基于RFID的盘点。它不同于以前的缺失标签识别问题,因为候选标签明显多于现存标签。我们提出了一种基于粗粒度库存清单的盘点算法来解决这个问题。CLS支持将多个缺失的标记散列到单个时隙,从而将它们一起验证。对所有碰撞时隙的处理是组合的,因此,k碰撞时隙(k>3)可以有助于识别。CLS将时隙的状态数从4减少到3,随后,可以使用哈夫曼编码技术来减少从阅读器发送的数据量。我们还提出了CLS的一个扩展,称为基于动态库存清单的盘点,以自适应地处理识别过程中不断变化的丢失率。我们已经进行了大量的仿真,以验证所提出方法的有效性。根据结果,当缺失率为0.95且候选标记数为10000时,与最先进的解决方案相比,我们的方法只需要36.3%的执行时间

笔记

文章中符号描述

  1. N ∗ N^* N 表示候选标签(库存清单中的标签)集合, ∣ N ∗ ∣ |N^*| N 表示候选标签个数
  2. N N N 表示阅读器询问区域内的存在标签的集合, ∣ N ∣ |N| N 表示存在标签个数
  3. r r r 表示阅读器发送的随机数
  4. f f f 表示阅读器发送的帧长
  5. A 表示分配向量
  6. A(i) 表示第i个时隙对应的标签个数
  7. L(i) 表示与第i个时隙对应的所有标签
  8. V 表示过滤向量
  9. p p p 表示丢失率
  10. s 表示标签计算得到的索引,相当于sc(时隙计数器)
  11. P k P_k Pk 表示一个时隙是k-碰撞时隙的概率
  12. N k N_k Nk 表示预期k-碰撞时隙的个数
  13. P k ‘ P_k^` Pk 表示一个时隙是k-碰撞时隙,但实际是空时隙的概率
  14. N k ‘ N_k^` Nk 表示预期k-碰撞时隙,实际是空时隙的个数
  15. R \R R 表示可识别的标签数
  16. T r T_r Tr 表示阅读器发送请求所需的时间

文章重点理解

基本内容
  1. 盘点的目的是验证给定区域(如仓库、图书馆和购物中心)中与给定的库存清单相标签比较是否存在
  2. 一个典型的例子是在仓库中使用手持式RFID阅读器进行盘点。由于阅读器的移动性,无法预先知道其相应区域中的库存清单。在这种情况下使用现有盘点技术的一种方法是使用更大区域(例如仓库)而不是询问区域中的标签作为其库存清单。然而,库存清单中的标签比实际存在的标签多得多,即丢失率相当高,这使得盘点的执行时间显著增加。
  3. 在ID收集方法:阅读器收集其询问区域中标签的所有ID,然后将其与清单列表进行比较。由于要传输的标签ID很长(例如,96位),并且标签之间的冲突很严重,因此这些方法的执行时间很长。
  4. 丢失标签识别方法:要求标签在一个时隙的时间范围内回复阅读器。根据给定的标签清单,可以提前计算每个标签回复的时隙。将预先计算的时隙状态与实际结果进行比较,可以确定缺少的标签。例如,如果未收到预期的标签的回复,则可以确定该标签丢失。短消息(例如,1位数据)而不是标签ID被用作标签应答的内容,以减少时间成本。SFMTI[14]实现了目前最好的识别性能。
  5. 本文主要贡献:
    1. 研究了高丢失率下的基于RFID的盘点问题
    2. 当丢失率较高时,CLS算法的性能优于现有算法
    3. 识别过程中不断变化的丢失率会影响执行时间。因此,我们首次提出了一种自适应混合识别算法DLS
    4. 进行了大量的仿真,以比较我们的方法与现有算法的时间效率
问题和模型设计
  1. 基本通信模型(非本文最终设计):
    1. 阅读器发送询问请求,询问请求中包括(f, r)
    2. 标签通过哈希选择f中的一个时隙,并保存到时隙计数器中
    3. 会产生空时隙、单时隙、碰撞时隙
    4. Ttag = 2.4ms–96bits Tshort=0.4ms–1bit Tlong=0.8ms–10bits
    5. 通信可靠,阅读器和标签之间的通信完好无损
  2. 提出问题:当丢失率很高时,丢失标签识别算法是耗时的,如何设计一个算法,实现在高丢失率的情况下完成丢失标签识别?
  3. 本文的模型设计和模型修改方案:
    1. 阅读器除了发生f 和 r 外 需要发送过滤向量V
    2. 标签需要支持过滤向量的哈夫曼解码
    3. 标签需要根据帧大小、索引s和s之前的非空时隙计算回应时隙索引
    4. 标签需要处于回复状态的标签以短消息而不是RN16响应
    5. 标签需要自己更新其状态
    6. 如果过滤向量太长而无法在一个时隙中传输,过滤向量可被划分为96位的多个段并顺序传输(和SFMTI类似)
算法思想

941639055896_.pic_hd

951639055903_.pic_hd

961639055908_.pic_hd

971639055912_.pic_hd

981639055917_.pic_hd

991639055922_.pic_hd

各算法之间的比较
算法简介判定理论时间性能
IIP-revised1阅读器发送Query和ACK,标签随机映射,回复ID,会产生很多碰撞仅利用产生的单时隙作为判断依据,若预期的单时隙,在实际中为空,则确定丢失2.72 | N | (Ttag+Tshort)相对来说最差
IIP-revised2阅读器发送Query和ACK,标签随机映射,回复ID,会产生很多碰撞利用产生的所有时隙作为判断依据,若预期的非空时隙,在实际中为空,则确定丢失同上相似当p较小时同上,当p较大时,有更好的性能
轮询用候选标签清单依次进行ID轮询,标签收到后回复短信息若有回复,则存在,若无回复,则丢失|N*| (Ttag+Tshort)当N*较小时,性能较好,很大时,最差
SFMTI阅读器发送r1 r2 f ,通过r2来协调2-碰撞和3-碰撞,变为单时隙,标签回复短信息仅利用单时隙进行判定,若预期单时,在实际中为空,则丢失。其他时隙的标签不参与判定|N*| Tshort在p小于0.7时比CLS好,大于0.7后,比CLS差
CLS阅读器发送r f v,充分利用单时隙和所有碰撞时隙作为判定条件,标签回复短信息若单时隙在实际为空,则丢失;若碰撞时隙在实际中为空,则碰撞时隙中的标签全部丢失T=Tr+Tv在p小于0.7时,第三好,在大于0.7后,第二好
DLS在p>0.7时采用CLS,在p<0.7时,采用SFMTI始终最好
ρ的最佳取值表
p0.650.70.750.80.850.90.95
理论值1.32.23.44.86.710.020.0
仿真值1.02.03.55.07.010.019.5

相关引文

1 SFMTI

题目:Completely pinpointing the missing RFID tags in a time-efficient way

来源:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6616545

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lF5w0u7-1639127806642)(/Users/xinyu/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/9a455baaa2b1e98ed403fccc4557a01c/Message/MessageTemp/9e20f478899dc29eb19741386f9343c8/Image/1001639120594_.pic_hd.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fb6kCeEH-1639127806642)(/Users/xinyu/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/9a455baaa2b1e98ed403fccc4557a01c/Message/MessageTemp/9e20f478899dc29eb19741386f9343c8/Image/1011639120598_.pic_hd.jpg)]

1021639120603_.pic_hd

2 IIP

题目:Identifying the missing tags in a large RFID system

来源:https://dl.acm.org/doi/pdf/10.1145/1860093.1860095

1031639126459_.pic_hd

自我提升

  1. IIP 2010年的论文 经典
  2. SFMTI 现存可以说在 较小丢失率的 情况下, 性能最佳
  3. CLS 在较大丢失率的情况下,性能最佳
  4. DLS 中和了 CLS SFMTI 实在在任何丢失率下 都表现极佳
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SoaringW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值