APP下载

基于RSSI高斯滤波的人工蜂群定位算法*

2021-09-29单好民陈才学

传感技术学报 2021年7期
关键词:定位精度测距蜂群

单好民,陈才学

(1.浙江邮电职业技术学院人工智能学院,浙江 绍兴 312366;2.湘潭大学信息工程学院,湖南 湘潭 411105)

无线传感网络(Wireless Sensor Networks,WSNs)是由在特定区域部署的微型传感节点组成的网络。这些节点感知环境数据,再将数据传输至汇聚节点。收到数据后,汇聚节点对数据进行分析,进而实现对环境的监测目的。位置信息对监测活动至关重要。只有确定了节点位置,感测的数据才具有参考价值[1]。因此,定位技术成为WSNs的关键技术之一。

依据定位过程中是否需要测距,将现存的定位算法可分为基于测距定位算法和基于非测距定位算法。相比于非测距算法,基于测距定位算法精度较高。常见的测距算法有:接收信号强度指标(Received Signal Strength Indication,RSSI)、信号到达时间(Time of Arrival,ToA)、到达角度(Angle of Arrival,AoA)等。与ToA和AoA不同,基于RSSI测距无需额外的测量设备,易实现。

目前,现存多数基于RSSI的定位算法采用降低RSSI的测距误差提高定位精度。如文献[2]提出基于卡尔曼滤波的RSSI值优化算法。文献[3]提出基于人工神经网络的RSSI值处理算法,但是该算法需要大量的RSSI数据。文献[4]提出基于路径损耗传播模型优化的滤波方法,通过优化加权参数,减少测距误差。文献[5]提出基于稀疏傅里叶和RSSI测距的低复杂RSSI定位算法(Spare Fourier-RSSI Positioning,SFRP)。SERP算法通过稀疏傅里叶方法筛选性能较好的锚节点参与定位,降低参与定位的锚节点个数,进而降低算法的复杂度。

近些年来,随着节点计算能力的提升,智能优化算法被广泛应用于节点定位[6]。例如,文献[7]提出基于鸡群优化的定位算法。利用鸡群优化算法估计节点的位置;文献[8]提出的混沌粒子群鸡群融合算法的RSSI质心定位算法(RSSI Centroid Location algorithm Optimized by Chaos Particle Swarm Chicken Swarm Fusion Algorithm,RCCF)。RCCF算法在使用PSO算法的基础上利用混沌优化思想避免搜索过程陷入局部极小,再利用鸡群算法进一步搜索最优解。文献[9]提出基于改进的布谷鸟优化的节点定位算法,提高搜索节点位置的效率;

文献[10]提出粒子群优化的节点定位算法。先建立目标函数,再利用粒子群优化算法求解目标函数,进而获取节点位置。这些启发优化算法将定位问题转化为目标优化问题,再利用优化算法求解。相比于传统的定位算法,这些算法具有较高的定位性能,但是这些算法仍存在收敛速度慢问题。

为此,提出基于RSSI高斯滤波的人工蜂群定位(RSSI Gaussian Filter-based Artificial Bee Colony Localization,RGBL)算法。该算法先建立RSSI测距模型,再利用高斯滤波对RSSI值进行优化处理。然后,利用人工蜂群算法搜索节点位置。仿真结果表明,提出的RGBL算法有效地提高了定位精度,提升算法的收敛速度。

1 RSSI测距模型及测距误差分析

1.1 测距模型

RSSI值与信号传播模型密切相关,而不同环境下的传播模型也不尽相同。通常,在实际环境中采用Shadowing模型:

式中:d表示收发两端间的距离,如图1所示。η表示路径衰减指数;χ表示附加的衰减因子[11];d0表示发送端与接收端相距1 m时的信号损耗;P(d)表示信号传输dm时所发生的损耗。

图1 信号传输模型

依式(2)也能计算P(d):

式中:Pinit表示节点发射的初始信号强度;RSSI(d)表示在离发送端相距d时,接收端所接收的信号强度值。

结合式(1)和式(2)可得:

式中:A表示接收端从相距1 m处所接收的信号强度。

1.2 测距误差分析

在基于RSSI测距阶段,锚节点发射信号,其包含锚节点的ID号和位置信息;未知节点接收发射信号。所谓锚节点是指已知自身坐标信息的节点;未知节点是指需要估计位置坐标的节点。

利用式(3)估计距离:

表1 不同环境下的A和η的取值

从表1可知,不同环境下的A和η值差别较大。因此,RGBL算法将在给定环境下多次测量,获取多个RSSI值,再利用高斯滤波对RSSI值进行处理,剔除误差较大的RSSI值。再将剩余的低误差的RSSI值估计距离,进而提高定位精度。

2 RGBL算法

n个节点随机分布于二维(2-D)网络,其中锚节点所占的比例为a%。令θi=(xiyi)表示第i个未知节点的坐标;令表示第k个锚节点坐标。RGBL算法主要由基于高斯滤波的RSSI测距和基于人工蜂群优化的定位两个阶段构成。

2.1 基于锚节点位置信息的参数估计

由表1可知,不同环境下的A和η的参数不同。目前基于RSSI测距模型常采用一些经验值,如η一般取2~5。这种凭经验取值,并没有考虑真实环境。因此,RGBL算法采用实时估计A和η参数。

对于未知节点i,它就从周围选择三个锚节点。首先从未知节点i的一跳范围内选择离自己最近三个锚节点。原因在于:离自己距离越短,依据RSSI测距的估计值越准确。

若一跳范围内没有三个锚节点,就扩大范围,从二跳范围内搜索,依次类推,直到搜索到三个锚节点。为什么要从节点i的邻近环境内搜索?原因在于:同一个环境下A和η参数差别小。从节点i的邻近环境内选择锚节点,再利用这些锚节点已知的位置信息估计A和η参数,然后所估计的参数值去定位未知节点i。利用这种方式,可以减少因参数不准确所带来的定位误差[13]。

假定未知节点i选择了三个锚节点:{a1,a2,a3}。这三个锚节点的位置坐标分别:,,,。然后依据式(5)计算计算锚节点a1离a2、a3的距离:

同时,锚节点a1记录从锚节点a2、锚节点a3所接收的信号强度值(RSSI1,2,RSSI1,3)。再求解式(6)便可估计参数A和η:

2.2 基于高斯滤波的RSSI测距

即使在特定的环境下,未知节点所接收的RSSI值容易受环境变化,易产生较大误差的RSSI值。为此,在定位之前,先利用高斯滤波对所接收的RSSI值进行处理,剔除误差大的RSSI值,保留误差低的值。

在特定环境下同一对收/发两端进行多次测量,多次测量所获取的RSSI值服从高斯分布(μ,σ2)。第j次接收的RSSI值(RSSIj)的概率密度函数[14]:

依据文献[15],RSSIj值落入在区间(μ-σ,μ+σ)内的概率为:

因此,将未落入在区间内的RSSI值剔除,保留下的RSSI值用于测距。为此,设定一个二值变量bj。若RSSIj的概率Pj不小于0.682 6,则bj=1,否则为零:

再将m次测量的均值作为最后的RSSI值:

2.3 基于人工蜂群的节点定位

相比于粒子群等传统的优化算法,人工蜂群算法的全局寻优能力更好。为此,RGBL算法将人工蜂群算法求解节点位置。在基于人工蜂群算法中,将未知节点作为未知蜜源;有效蜜源的位置就是未知节点位置的估计值[16]。人工蜂群算法中有三类蜂蜜:引领蜂,跟随蜂和侦查蜂。

表2给出这三者之间的关系以及应用于定位系统中与节点间的关系[11]。

表2 人工蜂群算法与节点定位系统间对应关系

2.3.1 基于测距误差的目标函数

先将未知节点的定位问题转化为非线性方程组的求解问题,即建立目标函数。RGBL算法属分布式算法,每个未知节点独立运行算法。因此,每个未知节点构建一个目标函数。

令f(xi,yi)表示未知节点i的目标函数,其定义如式(11)所示:

式中:Na表示与未知节点i相关联的锚节点数;表示通过式(4)所估计的未知节点i与锚节点k间的距离。

2.3.2 基于人工蜂群算法的目标函数求解

首先,初始化蜜蜂位置:

式中:i=1,2,…,M,其中M表示蜜蜂数量;j表示搜索空间的维数;Xmax,j,Xmin,j分别表示蜜蜂位置的上、下限。

第二步,引领蜂依据式(13)进行领域搜索,搜索最优位置:

式中:t表示当前迭代的次数;k表示不同于i的蜜源。

第三步,依据式(14)计算花粉量Ei,即将更新前/后的解进行对比。若更新后的Ei大于更新前的值,就对解进行更新,否则保留原解:

式中:fi表示蜜源i的目标函数值。即将Xi,j代入式(11)所得到的f(xi,yi)值。

第四步,其他蜜蜂以式(15)计算跟随引领蜂的概率[13]:

第五步,如果位于某一位置的蜜蜂搜索次数达到最大迭代次数,式(13)所计算的值仍没有变化,在这种情况下,引领蜂就抛弃此蜜源,并转化为侦查蜂,并依式(21)开发新的蜜源。基于人工蜂群算法求解目标函数的流程如图2所示。

图2 基于人工蜂群算法求解目标函数的流程

3 性能分析

3.1 仿真环境

利用MATLAB软件建立仿真平台,并分析实验数据。在100 m×100 m区域内部署100~200个未知节点(n=100~200),锚节点数15至45个。所有节点的通信半径在20 m~45 m变化。具体的仿真参数如表3所示。

表3 仿真参数

此外,选择-SFRP算法和RCCF算法,并分析它们的归一化定位误差性能:

3.2 锚节点数对归一化定位误差的影响

首先,分析锚节点数对归一化定位误差的影响,如图3所示。实验参数:150个未知节点数,节点通信半径为35 m;锚节点数从15个至45变化,步长为5。

从图3可知,锚节点数的增加降低了节点的归一化定位误差。在锚节点数小于25时,锚节点数的增加,有效地提高了定位精度。原因在于:锚节点数越多,未知节点收到的定位信息越多,定位精度就越高。但当锚节点数增加到一定量后(大于30),锚节点数的增加并不能有效地降低归一化定位误差。此外,相比于SFRP和RCCF算法,提出的RGBL算法的定位精度提高了约8.94%和4.75%。

图3 锚节点数对归一化平均定位误差的影响

3.3 通信半径对归一化定位误差的影响

接下来,分析通信半径对归一化定位误差的影响,如图4所示。实验参数:150个未知节点数,30个锚节点数,节点通信半径从20 m~45 m变化,步长为5。

图4 通信半径对归一化平均定位误差的影响

从图4可知,归一化平均定位误差随通信半径的增加而下降。原因在于:通信半径越大,节点的一跳通信范围越大,测距误差越小。定位精度越高。此外,相比于SFRP算法和RCCF算法,RGBL算法提升了定位精度,归一化平均定位误差分别降低7.86%和3.23%。

3.4 未知节点数对归一化平均定位误差的影响

本次实验分析未知节点数对定位精度的影响,如图5所示。实验参数:通信半径为35 m,未知节点数从100至200个变化,锚节点数为未知节点数的20%。例如,未知节点为200个时,锚节点数就为40个。

图5 未知节点数对归一化平均定位误差的影响

从图5可知,归一化平均定位误差随节点数的增加而下降。原因在于:节点数越多,网络内节点分布可能越均匀,网络连通性越好。由于锚节点数的增加也随之增加,锚节点数的增加也有利于定位精度的提升(如图5所示)。此外,相比于SFRP算法和RCCF算法,RGBL算法在归一化平均定位误差方面仍保有明显的优势。

3.5 收敛速度性能

本次实验分析RGBL算法、SFRP和RCCF算法的收敛速度。实验参数:未知节点150,锚节点30个,节点通信半径为30m。最大的迭代次数为100次。

图6给出迭代次数从1至100变化条件下,RGBL算法、SFRP和RCCF算法的定位误差。从图6可知,RGBL算法在迭代到约11次时,定位误差值就达到了收敛。而RCCF算法在迭到约14次,定位误差达到收敛。人工蜂群算法在整个寻优过程中,引领蜂用于局部开发,跟随峰用于储存解,侦查蜂用于全局搜索,提高了收敛速度。

图6 迭代次数与定位精度的关系

4 总结

针对基于RSSI测距所导致的定位误差问题,提出基于RSSI高斯滤波的人工蜂群定位RGBL算法。RGBL算法结合了高斯滤波和人工蜂群算法。利用高斯滤波算法剔除误差较大的RSSI值保留精度较高的RSSI值;利用人工蜂群算法的快速搜索性能,搜索目标函数的解,进而实现对未知节点的定位。

仿真结果表明,相比于同类的定位算法,提出的RGBL算法减少了定位误差,提升算法的收敛速度。本次仿真考虑的仿真场景较简单,而在实际的地理环境中,RSSI信号受多个环境因素影响。后期,将研究如何在复杂环境提高基于RSSI测距精度。这将是后期的研究工作。

猜你喜欢

定位精度测距蜂群
北斗定位精度可达两三米
“蜂群”席卷天下
类星体的精准测距
GPS定位精度研究
GPS定位精度研究
组合导航的AGV定位精度的改善
浅谈超声波测距
改进gbest引导的人工蜂群算法
基于PSOC超声测距系统设计
蜂群夏季高产管理