利用遗传算法和粒子群算法优化RFID的部署(一)

本文探讨RFID系统在不同场景下的四种部署策略:常开、最大覆盖、同步优化和调度策略,分析各策略优劣及适用场景,介绍算法实现细节及优化方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

        最近暑期实训在老师实验室做有关RFID部署的问题,老师让我们在学长的基础上接着做,感觉还挺有意思的。PSO和GA也是我比较感兴趣的一个方向,这类算法可以很方便地求解NP-hard问题。

       代码和图片见:github

二、原理

        RFID系统分为阅读器(reader)和标签(tag)两部分,标签可以自带电池,也可以不带电池,阅读器可以发射电磁波,标签接受到电磁波后可以产生 相应的信号从而被阅读器识别。在识别的过程中可能会有产生碰撞,这里的碰撞分为两种:

        1.读写器-读写器碰撞:指一个标签落入到两个读写器的识别区域内,这是标签将无法识别。

        2.读写器-标签碰撞:当标签位于另一读写器的干扰区域时,该标签无法被当前读写器识别。

       在真实的场景中,标签的识别是连续的,为了简化算法的实现,我们将实间按照时隙进行划分,这样,我们只需要统计所有时隙内被识别的标签数量,除以总的时隙和标签,就能得到该场景下的识别准确率。

        针对不同的场景,这里一共有四种策略:

        1.常开策略    

           常开策略是一种积极的策略,它在所有的时隙打开所有的读写器。算法计算每个标签是否受到RFID碰撞的影响。如果标签没有受到碰撞影响,则认 为标签被识别。每个读写器都会计算当前时隙执行所有任务的得分,并执行得分最高的任务。

           该策略的优点是读写器不用在监控时间内切换状态,简化了RFID系统的操作。常开策略可以覆盖更大的工作区域,适用于工作区域大,碰撞少的场 景。缺点是无法消除RFID碰撞,尤其是发生读写器-标签碰撞时,两个读写器都无法正常识别标签。

        2.最大覆盖策略

            最大覆盖策略是一种简单而冒险的策略,它在所有时隙打开所有读写器。最大覆盖策略在计算过程中不考虑RFID的碰撞,当标签被一个或多个读写器覆盖时,就认为标签已被识别。

            该策略的优点是可以实现覆盖范围的最大化,简单且易于实现,计算量少,适用于读写器不密集、RFID碰撞少的场景。

        3.同步优化策略

            同步优化策略中,每个读写器的位置和开关状态都是由启发式算法决定的,RFID不需要额外的读写器开关策略确定读写器的开关状态。同步优化策略的输入是一 个包含读写器坐标和开关状态的读写器部署方案,即长度为2*M+M*S的向量,前2*M长度的向量代表读写器位置,后M*S长度的向量代表读写器在每个时 隙的开关,是二进制变量。然后累加所有时隙,得到所有任务识别到的标签数,然后计算出监控准确率。

            该策略的优点是在启发式算法优化效果良好时,可以取得良好的结果,而且读写器并不是在所有时隙都处于打开状态,因此相对于常开策略和最大覆盖策略,同步优 化策略可以提升RFID系统经济效益,缺点是会加大启发式算法的复杂度。在大规模RFID系统中,当读写器数量和时隙数很大时,优化变量会变得非常多,空 间维度相应增加,可能出现维度灾难问题,算法难以收敛。在实际实验中,同步优化策略的监控策略是比较差的。

        4.调度策略

            使用贪心的思想,在不同的时隙打开不同的读写器以避免标签碰撞。在每个时隙,调度策略计算每个读写器完成每个任务的得分,从中选出得分最高的读写器,打开 该读写器,让其执行得分最高的任务。同时,关闭与该读写器发生碰撞的所有读写器。在剩余未确定状态的读写器中重复此步骤,直至所有读写器均确定状态与任 务。

            该策略的优点在于完全消除了碰撞,节约了RFID系统的能量;缺点在于可能会误判冗余读写器。比如,当两个读写器只发生了很小的读写器-读写器碰撞时,调 度策略还是会关闭其中一个得分低的读写器。

三、方法

       1.参数

          RFID物体监控算法的超参数主要有:监控区域的长与宽、标签数量、读写器数量、读写器识别半径、读写器干扰半径

          时隙模型参数:时隙数量、标签在每个时隙的位置

          监控任务参数:监控任务的数量、监控任务的监控对象和监控时间、监控任务的权重。

       2.任务

          主要分为四种任务:

          a.在所有时隙监控所有标签

          b.在所有时隙监控所有标签

          c.在所有时隙监控所有标签至少一次

          d.监控特定ID的标签

     3.算法实现

       算法主要采用java来实现,遗传算法采用的jenetics开源库,粒子群算法采用的是jswarm库(不是官方标准库)。算法速度很快,具体的代码可以看前文的github。

     4.效果

       经过运行后,可以发现同步优化策略效果很差,我认为这是由于粒子编码的原因造成的,算法中有50个时隙,10个阅读器,粒子的维度是50*10+2*10=520, 维度比较高,所以算法难以收敛,而且阅读器的开关状态只有0和1两种取值,直接编码不太合适,和老师讨论以后我们打算将开关状态编码为长度为50的向量,每个维度的取值为0-2^10,这样粒子的维度比之前要低很多,有利于算法的收敛。

 

          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值