一种基于跳数和粒子群优化的无线传感器网络定位方法技术

技术编号:25052387 阅读:32 留言:0更新日期:2020-07-29 05:40
本发明专利技术公开了一种基于跳数和粒子群优化的无线传感器网络定位方法,属于计算机技术领域。本发明专利技术以实数表示节点之间的单跳跳距,使得估算出的任意一对节点之间的跳距与实际距离之间的误差更小;每个节点仅接收并转发距离其跳数最少的锚节点的信标信息,而忽略其他的信标信息,减少了网络中数据包的广播数量,节省了网络开销;使用粒子群优化算法计算节点坐标,提高了定位精度。

【技术实现步骤摘要】
一种基于跳数和粒子群优化的无线传感器网络定位方法
本专利技术属于计算机
,具体涉及一种基于跳数和粒子群优化的无线传感器网络定位方法。
技术介绍
无线传感器网络是对物理世界进行感知的主要手段之一,是物联网的主要组成部分,广泛应用于军事侦察、地理环境监测、交通路况监测等。在实际应用中,感知信息必须带有位置信息才能有实际意义,而受限于能量、计算和存储能力,无线传感器网络节点无法采用传统的全球定位系统或无线网络定位技术进行定位,必须为之设计低功耗、高效率且高精度的专用定位算法。现有的定位算法主要分为基于测距和无需测距的定位算法,前者需要测量传感器节点(以下简称节点)之间的距离,成本较高,但定位误差小;后者无需测量节点之间的距离,成本较低,但定位误差大,且通常需要在无线传感器网络中以泛洪的方式广播大量数据包。
技术实现思路
针对现有技术中存在的上述技术问题,本专利技术提出了一种基于跳数和粒子群优化的无线传感器网络定位方法,设计合理,克服了现有技术的不足,具有良好的效果。为了实现上述目的,本专利技术采用如下技术方案:一种基于跳数和粒子群优化的无线传感器网络定位方法,该无线传感器网络由大量传感器节点组成,所有传感器节点的通信范围都是一个半径为R的圆,且每个传感器节点都有一个唯一标志其身份的ID,传感器节点分为锚节点和盲节点两类,其中锚节点是位置已知的传感器节点,盲节点是需要被定位的、位置未知的传感器节点;当两个传感器节点之间的距离不超过R时,它们互为对方的邻居节点,给定一对传感器节点,它们在互相通信时需要经过的跳段数量称为两者之间的跳数;当两个传感器节点之间的距离是R时,跳数为1;根据跳数计算出的任两个节点之间的距离称为它们之间的跳距;假定无线传感器网络是连通的,即任意一对传感器节点之间都能直接或间接地传递消息,锚节点发出的用于辅助盲节点定位的数据包称为信标信息;对于一个集合A,其元素个数记为|A|;其共有Si个节点;每个节点Si同时执行如下步骤:步骤1:Si维护一个邻居节点列表Ni,列表中的每个元素包含邻居节点ID和信号强度两个字段;初始时即空集;步骤2:Si向邻居节点广播一个包含其自身ID的数据包;步骤3:Si接收到来自邻居节点Sj(j≠i)的数据包后,置Ni=Ni∪{(Sj,RSSj→i)},其中RSSj→i为Sj到Si的接收信号强度;重复该步骤,直到没有新的数据包到来;步骤4:Si将自己的邻居节点列表Ni发送给其所有邻居;步骤5:对于Si的每个邻居节点Sj,置步骤6:解方程求得x1,x1为根扼估算出的Si和Sj间的跳数;步骤7:解方程求得x2,x2为根据估算出的Si和Sj间的跳数;步骤8:取hji为最终估算出的Si和Sj间的跳数;步骤9:重复步骤5-步骤8,直至Si的所有邻居节点都计算完毕,然后转入步骤10;步骤10:如果Si是一个锚节点,则广播一个信标信息{Si,xi,yi,hi}给其邻居节点,其中xi、yi和hi分别表示Si的横坐标、纵坐标和到接收该信标信息的节点的跳数,hi初值为0;如果Si是盲节点,则转步骤11;步骤11:Si维护一个信标信息列表Li={Bj|Bj=(Fj,Sj,xj,yj,hij)},Bj是来自锚节点Sj的信标信息,其中Fj是将信标信息发送给Si的上一级节点的ID,xj、yj和hij是Sj的横坐标、纵坐标以及Si与Sj之间的跳数;初始时,步骤12:置计时器Ti>0,每隔一定时间Ti=Ti-1;步骤13:如果|Li|≥3且Ti=0,Si没有收到新的信标信息,则转步骤17;否则转步骤14;步骤14:Si等待接收新的信标信息,在接收到来自邻居节点Sk的信标信息Bj后,进行如下判断:若Bj中所记录的锚节点Sj∈Li,且相应记录的hjk+hki<hji,则更新记录(Fj,Sj,xj,yj,hji)=(Sk,Sj,xj,yj,hjk+hki),其中hki为第一阶段所求出的Si与Sk之间的跳数,并向邻居节点转发(Si,Sj,xj,yj,hjk+hki);如果hjk+hki≥hji,则忽略该信标信息;若Bj中所记录的锚节点且|Li|<3,则置Li=Li∪{(Sk,Sj,xj,yj,hjk+hki)},并向邻居节点转发(Si,Sj,xj,yj,hjk+hki);若Bj中所记录的锚节点且|Li|≥3,取hmax=max{hil|hil是Si与锚节点Sl之间的跳数,Sl∈Li};如果hjk+hki≤hmax,则置Li=Li∪{(Sk,Sj,xj,yj,hjk+hki)},并向邻居节点转发(Si,Sj,xj,yj,hjk+hki);如果hjk+hki>hmax,则忽略该信标信息;步骤15:如果|Li|<3,转步骤14;否则转步骤16;步骤16:如果|Li|≥3,重置Ti为原始值,每隔一定时间Ti=Ti-1,转步骤13;步骤17:如果Si是一个锚节点,计算作为Si所估算的单跳的平均跳距,并向其邻居节点广播信标信息(Si,AHDi);如果Si是盲节点,则转步骤18;步骤18:盲节点Si收到邻居节点转发的来自锚节点Sj的信标信息(Sj,AHDj)后,如果Sj∈Li,则更新Li中关于Sj的记录为(Fj,Sj,xj,yj,dij),其中dij=hij×AHDj,dij为Si和Sj间的跳距,并向其邻居节点转发信标信息(Sj,AHDj);如果则忽略该信标信息;重复此步骤,直到Li中所有信标信息中的跳数更新为跳距;步骤19:盲节点Si估算自身位置。优选地,在步骤19中,具体包括如下步骤:步骤19.1:在二维空间中随机部署50个粒子,其中第l个粒子Pl的位置Al=(al1,al2),初始速度Vl=(vl1,vl2),ω=0.729,c1=c2=1.494,最大迭代次数Tmax=300;定义函数其中步骤19.2:对每个粒子Pl,计算Pl的函数值fl=f(Al)=f(al1,al2),置粒子最佳位置Abest=Al;步骤19.3:置迭代次数iter=1;步骤19.4:如果iter≤Tmax,即最大迭代次数,转步骤19.5,否则转步骤19.11;步骤19.5:计算Gbest=argmin{Al|fl,l=1,2,…,50},即所有粒子中f值最小的粒子的位置;步骤19.6:对每个粒子,计算新的速度值Vl=ωVl+c1r1(Abest-Al)+c2r2(Gbest-Al),其中r1和r2为(0,1)的随机数;步骤19.7:对每个粒子,计算新的位置Al=Vl+Al;步骤19.8:对每个粒子,计算fl=f(Al);步骤19.9:对每个粒子,如果fl<f(Abest),则更新Abest=Al;步骤19.10:置iter=iter+1,转步骤19.4;步骤19.11:当前节点Si的位置为Gbest。本专利技术所带来的有益技术效果:(本文档来自技高网...

【技术保护点】
1.一种基于跳数和粒子群优化的无线传感器网络定位方法,其特征在于:该无线传感器网络由大量传感器节点组成,所有传感器节点的通信范围都是一个半径为R的圆,且每个传感器节点都有一个唯一标志其身份的ID,传感器节点分为锚节点和盲节点两类,其中锚节点是位置已知的传感器节点,盲节点是需要被定位的、位置未知的传感器节点;/n当两个传感器节点之间的距离不超过R时,它们互为对方的邻居节点,给定一对传感器节点,它们在互相通信时需要经过的跳段数量称为两者之间的跳数;当两个传感器节点之间的距离是R时,跳数为1;根据跳数计算出的任两个节点之间的距离称为它们之间的跳距;/n假定无线传感器网络是连通的,即任意一对传感器节点之间都能直接或间接地传递消息,锚节点发出的用于辅助盲节点定位的数据包称为信标信息;对于一个集合A,其元素个数记为|A|;其共有S

【技术特征摘要】
1.一种基于跳数和粒子群优化的无线传感器网络定位方法,其特征在于:该无线传感器网络由大量传感器节点组成,所有传感器节点的通信范围都是一个半径为R的圆,且每个传感器节点都有一个唯一标志其身份的ID,传感器节点分为锚节点和盲节点两类,其中锚节点是位置已知的传感器节点,盲节点是需要被定位的、位置未知的传感器节点;
当两个传感器节点之间的距离不超过R时,它们互为对方的邻居节点,给定一对传感器节点,它们在互相通信时需要经过的跳段数量称为两者之间的跳数;当两个传感器节点之间的距离是R时,跳数为1;根据跳数计算出的任两个节点之间的距离称为它们之间的跳距;
假定无线传感器网络是连通的,即任意一对传感器节点之间都能直接或间接地传递消息,锚节点发出的用于辅助盲节点定位的数据包称为信标信息;对于一个集合A,其元素个数记为|A|;其共有Si个节点;每个节点Si同时执行如下步骤:
步骤1:Si维护一个邻居节点列表Ni,列表中的每个元素包含邻居节点ID和信号强度两个字段;初始时即空集;
步骤2:Si向邻居节点广播一个包含其自身ID的数据包;
步骤3:Si接收到来自邻居节点Sj(j≠i)的数据包后,置Ni=Ni∪{(Sj,RSSj→i)},其中RSSj→i为Sj到Si的接收信号强度;重复该步骤,直到没有新的数据包到来;
步骤4:Si将自已的邻居节点列表Ni发送给其所有邻居;
步骤5:对于Si的每个邻居节点Sj,置






步骤6:解方程求得x1,x1为根据估算出的Si和Sj间的跳数;
步骤7:解方程求得x2,x2为根据估算出的Si和Sj间的跳数;
步骤8:取hji为最终估算出的Si和Sj间的跳数;
步骤9:重复步骤5-步骤8,直至Si的所有邻居节点都计算完毕,然后转入步骤10;
步骤10:如果Si是一个锚节点,则广播一个信标信息{Si,xi,yi,hi}给其邻居节点,其中xi、yi和hi分别表示Si的横坐标、纵坐标和到接收该信标信息的节点的跳数,hi初值为0;如果Si是盲节点,则转步骤11;
步骤11:Si维护一个信标信息列表Li={Bj|Bj=(Fj,Sj,xj,yj,hij)},Bj是来自锚节点Sj的信标信息,其中Fj是将信标信息发送给Si的上一级节点的ID,xj、yj和hij是Sj的横坐标、纵坐标以及Si与Sj之间的跳数;初始时,
步骤12:置计时器Ti>0,每隔一定时间Ti=Ti-1;
步骤13:如果|Li|≥3且Ti=0,Si没有收到新的信标信息,则转步骤17;否则转步骤14;
步骤14:Si等待接收新的信标信息,在接收到来自邻居节点Sk的信标信息Bj后,进行如下判断:
若Bj中所记录的锚节点Sj∈Li,且相应记录的hjk+hki<hji,则更新记录(Fj,Sj,xj,yj,hji)=(Sk,Sj,xj,yj,hjk+hki),其中hki为第一阶段所求出的Si与Sk之间的跳数,并...

【专利技术属性】
技术研发人员:崔焕庆王森梁永全张峰魏永山徐强
申请(专利权)人:山东科技大学
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1