基于BP,神经网络的RSSI,测距优化算法

姚军 甄梓越 马宇静

(西安科技大学通信与信息工程学院,西安 710054)

基于接收信号强度指示(received signal strength indication,RSSI)测距的定位系统在日常生活多个领域有广泛应用,例如室内场所的定位服务,包括商品定位、地下停车场的车辆定位,以及提供消防救援和井下安全的人员定位等,无线定位技术成为当前研究的重点.目前室外定位方面,GPS 有实时、准确度高等特点,为人们的出行提供了很大便捷.室内环境下[1]主要有WiFi、蓝牙、红外线以及射频识别(radio frequency identification,RFID)几种定位技术,由于卫星信号会被建筑物遮挡,如物流公司对快递投递的包裹等,许多情况下也不方便设置GPS 模块.这几种定位技术中,RFID 技术由于成本低、精度高以及多目标识别等优点,被广泛应用在室内定位技术中[2].

基于RSSI 测距结合三边定位法是目前最常用的一种RFID 室内定位方法.但由于信号的损耗系数以及在实际情况下信号衰弱难以计算等因素,RSSI 测距的误差无法得到有效控制[3].文献[4]针对环境因素导致的测距误差较大问题提出了一种基于天牛须搜索的改进BP 神经网络测距算法,克服了环境干扰,降低了误差.文献[5]为了解决RSSI 值的不稳定波动问题,提出一种结合中位数法和最短距离法来获取RSSI 权值的方法,通过修正权值解决波动问题.文献[6]针对RSSI 测距误差较大的问题,提出了一种结合实时模型修正以及优化定位结果的方法.文献[7]研究了人的存在和移动对不同距离处RSSI 的影响.文献[8]针对多元素影响RSSI 测距准确性的问题,提出一种基于找到最佳节点方向的改进RSSI 测距算法.文献[9]针对RSSI 距离映射的复杂度、稳定度以及定位精度问题,提出一种考虑分段传输模型和室内空间场景的优化方法.文献[10]对传统RSSI 测距算法进行分析并提出一种基于BP 神经网络的测距算法,实验结果表明该算法提高了定位精度.文献[11]针对动态室内环境中噪声、多径效应等问题对RSSI 测距的影响,提出了一种基于斜率近似的改进RSSI 测距算法.文献[12]针对传统RSSI测距对环境参数过于依赖的问题,提出了一种基于蚁群算法优化BP 神经网络的测距模型,提高了测距精度.文献[13]提出一种融合加权质心以及自适应阈值选择的测距算法,提高了测距定位的精度和稳定性.文献[14]为优化定位精度,提出一种采用高斯滤波方法并用粒子群算法对标签测距进行了优化.上述研究者主要是在不同场景下对RSSI 测距精度进行研究,提供了多个改进方向并使用了各种算法进行优化,但这些算法并未考虑到阅读器在识别标签时RSSI 值与真实距离的映射关系会因为距离的变化而产生些许误差,其会引起测距精度不足进而影响定位系统的性能.

本文为减小这种测距误差,使用K-means 聚类算法对采集的目标数据进行聚类,然后分别建立BP 神经网络训练并测试,以降低将所有数据整体输入后导致的映射关系不均匀问题,并与改进前算法精度做分析对比.

1.1 RSSI 测距原理

由于实际室内环境具有静态和动态的障碍物,其会影响信号的正常传播,造成反射和折射等现象,进而导致阅读器接收到的信号强度不准确,存在误差.经过大量实验发现,室内环境的信号传播距离与路径损耗服从以下分布模型[10]:

式中:d是距离阅读器的真实距离,单位为m;
P是对应距离下的信号接收强度;
d0是参考距离;
n是路径损耗常数,信号的损耗会随着距离的增加而增加,因此在不同的环境下,n的取值范围为1.5~4.5,并且在室内环境下最小;
X为遮蔽因子,单位是dB,均值为0,均方差为4~10 的正态随机变量[10].以下为简化后的模型:

式中,A是距离阅读器1 m 处测到的信号强度,单位为dBm.

1.2 基于BP 神经网络的测距方法

传统的RSSI 测距算法对环境因素要求过高,直接利用该算法计算误差较大,应用局限性较高.而具备非线性映射、自适应优点的BP 神经网络,可以更好地处理环境因素等问题.

BP 算法是一种基于人工神经网络的监督式机器学习算法,在各类应用中具有很好的非线性映射能力、自我学习和适应能力、泛化能力以及容错能力[15].在该算法下,先将输入数据作为训练数据,然后建立一个学习模型不断调整达到预期准确率,最后根据学习好的BP 网络模型进行测试.实现流程如图1所示.

图1 BP 神经网络流程图Fig.1 Flowchart of BP neural network

文献[10]将采集的RSSI 数据以及实际距离d建立训练数据库,以此构建了一个三层BP 神经网络训练模型,采集的RSSI 数据设定为输入数据,实际距离d设定为输出数据.其中tansig 和purelin 函数分别设定为隐含层以及输出层的传递函数、trainlm 为模型训练方式.然后通过修改多次隐含层节点个数并测试,最终得出设定3 个节点时测试效果最好.最后将数据导入MATLAB 中进行仿真测试,结果显示相对于传统RSSI 测距算法而言,基于BP 神经网络模型的RSSI 测距误差更小,测距性能更好.

1.3 K-means 聚类算法

上述基于BP 神经网络改进的RSSI 测距算法只是对构建网络进行优化,并未对采集数据的RSSI 值和真实距离之间由于距离区间不同导致的映射关系不均匀问题进行处理.本文使用聚类算法先对采集到的数据进行聚类处理,然后对多类数据分别建立BP 神经网络模型,即可有效解决该问题.

K-means 算法是一种基于计算点与点之间距离的聚类算法,具有简单、高效、快速收敛的优点.计算两两目标之间的距离,距离越小越容易被分在一类,距离定义为欧式距离sqeuclidean、城市街区距离cityblock 以及针对有时序关系数据的correlation等.其算法思想是先在所有的样本数据中通过随机选取或自主设置的方式得到k个簇中心点,再把其他所有样本数据根据距离最近的原则划分到各个中心点所在的簇中,然后持续对簇中心点进行更新变化并且重新计算分类,当簇中心点不再变化即可确定一个最好的分类方式.

用模型表示,将k设置为需要划分的簇种类数量,各个类别分别为C1,C2,...,Ck,则算法的目的是最小化平方误差E.

式中,μi是质心,

通过采用迭代方法,求出式(3)的最小值即可.

改进测距算法主要是根据RSSI 值的不同衰减程度导致不同距离区间RSSI 值与真实距离之间的映射关系不均匀问题.首先通过K-means 算法对训练数据进行区域分类,然后根据不同的分类区域建立多个网络模型进行分别训练,最后将需要测距的RSSI 值对应所在距离区域的网络模型进行测距.主要流程如图2 所示.

图2 改进测距算法主要流程Fig.2 Process of the ranging optimization algorithm

2.1 数据采集和预处理

2.1.1 数据采集

为使建立的网络模型在训练时达到更好的效果,将之前基于BP 神经网络测距算法的训练数据进行相同方式补充采集并作为下一步网络训练的输入数据,如表1 所示.

表1 补充后的训练数据Tab.1 Supplementary training data

2.1.2 归一化处理

对数据进行归一化处理后,分别找出RSSI 数据及距离的最大、最小值,然后将这些值通过mapminmax函数规范到[0,1]内,其作用是消除数据因为量纲不同对分析结果的影响,加快求出最优解速度的同时还可以提高测试精度.

2.2 划分距离区间

对输入数据预处理之后,采用K-means 算法通过MATLAB 软件将整理好的数据根据距离区间划分为若干个类.本文以分两类为例进行算法研究.算法主要分为六步,步骤如下:

1) 确定输入数据.以RSSI 值和与其对应的距离值建立坐标系,确定所有输入数据点Pi.

2) 确定分类个数K,然后随机选取K个点,作为K个类的聚类中心,用Kj表示.

3) 对所有数据点Pi进行遍历并计算其欧式距离,找到距每个数据点最近的中心点Kj,即第i个数据距离第j个中心点最近,Pi属于第j类.

4) 计算每个类的样本均值,更新其中心点.

5) 重复步骤3、4,直到聚类中心点不再变化.

6) 输出最终的聚类中心点以及j个类.

具体参数设置.首先是聚类个数,本文旨在研究聚类后的拟合效果,为使BP 神经网络达到更好的训练目标,聚类个数K设置为2,初始聚类中心根据所有数据的分布范围均匀生成,所以参数设置为uniform.由于本文主要是为了研究真实环境下距离与RSSI之间的关系,而欧式距离这种定义方式能更好地反映两个点之间的真实距离,因此将距离参数设置为sqeuclidean.

2.3 BP 神经网络训练

把输入数据通过K-means 算法分成两类后,需要建立各自的BP 神经网络学习模型,这里将归一化后的RSSI 值作为输入数据,真实距离作为输出数据.由于RSSI 与距离d之间的关系可大致拟合为按对数衰减,模型不复杂.经过多次实验发现,一直增加BP 神经网络层数以及隐含层节点个数并不会降低误差,因此使用三层BP 神经网络,并把隐含层节点设置为3 个.以训练集70%、验证集15%、测试集15%的样本分布对实验数据进行训练.同样设置tansig 和purelin 函数为模型的隐层传递函数以及输出层传递函数.对比trainlm、trainbr 和trainscg 三种算法,trainscg 函数占用内存少,但训练结果误差较大(trainlm 算法的误差仅为trainscg 算法的55.1%).trainlm 算法虽然占用比trainbr 更多的内存,但训练时间快,且结果误差略小,因此本文设置trainlm 函数作为BP 神经网络的训练函数.结构如图3 所示.

图3 BP 神经网络结构Fig.3 Network structure of BP neural network

3.1 实验仿真

3.1.1 输入数据处理和分类

使用MATLAB 仿真软件进行实验仿真,首先导入所要使用和处理的数据,经过mapminmax 函数进行归一化处理后再通过K-means 算法以及上述的参数选取对所有输入数据进行分类,将所有数据展示在坐标系上.如图4 所示,(a)是所有的数据分布,(b)是经过K-means 分类后的结果以及两个类各自的簇中心点.

图4 K-means 算法分类前后数据分布Fig.4 Data distribution before and after K-means algorithm classification

3.1.2 BP 神经网络训练

对两类数据分别进行BP 神经网络训练,图5 为训练效果.可以看出,第一类的输出Output=0.98×Target+0.009 8,其中值为0.992;
第二类Output=0.95×Target+0.007 9,中值为0.996.可见两个BP 神经网络模型的拟合效果都比较理想,因此划分为两个类后建立的两个BP 神经网络学习模型都是理想且可用的.

图5 分类后BP 神经网络训练效果Fig.5 Training effect of BP neural network after classification

3.2 对比算法分析

基于同样的数据,将RSSI 值作为输入数据,距离d作为输出数据,使用三层BP 神经网络,3 个隐层节点,传递函数和样本分布皆与改进算法一致的方式进行仿真测试.图6(a)是传统BP 神经网络测距算法的拟合效果以及误差分布,(b)和(c)分别是改进算法第一类和第二类的拟合效果以及误差分布.可以看出,本文改进算法的误差除个别因样本数据不均导致较大以外,普遍比传统BP 神经网络算法要小.

图6 算法改进前后拟合效果对比Fig.6 Comparison of fitting effect before and after the algorithm improvement

对改进前后的算法以及一种信号加权算法进行误差分析,传统BP 神经网络测距算法的均方根误差为1.425 7,信号加权算法的均方根误差为2.010 3,本文改进测距算法的均方根误差为1.288 7,综上可以看出本文的改进测距算法精度优于其他两种算法.

本文首先针对传统的信号传播路径损耗模型对基于RSSI 的测距算法进行研究,提出先用K-means算法对数据进行预处理分类,再使用BP 神经网络建立多个网络模型对RSSI 进行分类测距.该方法优化了由于不同距离区间的RSSI 值衰减程度不均匀导致的误差问题.根据MATLAB 实验仿真的拟合效果以及误差分析结果可以看出优化后的BP 神经网络测距算法对比传统BP 测距算法拟合效果更好,误差更小.

猜你喜欢 中心点测距聚类 一种傅里叶域海量数据高速谱聚类方法北京航空航天大学学报(2022年8期)2022-08-31基于RSSI测距的最大似然估计的节点定位算法导航定位学报(2022年4期)2022-08-15基于知识图谱的k-modes文本聚类研究南京理工大学学报(2022年1期)2022-03-17激光精密测距技术进展航天返回与遥感(2021年6期)2022-01-11一种改进K-means聚类的近邻传播最大最小距离算法计算机应用与软件(2021年7期)2021-07-16Scratch 3.9更新了什么?电脑报(2020年12期)2020-06-30基于模糊聚类和支持向量回归的成绩预测华东师范大学学报(自然科学版)(2019年5期)2019-11-11如何设置造型中心点?电脑报(2019年4期)2019-09-10磨课,一段痛苦与快乐交织的过程新课程·小学(2019年1期)2019-03-18寻找视觉中心点大众摄影(2015年9期)2015-09-06

推荐访问:神经网络 测距 算法