一种WSN多路径空洞绕行方法与流程

文档序号:18084800发布日期:2019-07-06 10:24阅读:317来源:国知局
一种WSN多路径空洞绕行方法与流程

本发明涉及无线通信网络的技术领域,尤其是一种wsn多路径空洞绕行方法。



背景技术:

wsn是wirelesssensornetwork的缩写,中文名字叫:无线传感器网络,它由许多的传感器节点组成,通过无线通信方式形成一个多跳的自组织网络。而传感器节点在数据采集和传输过程中某些节点的负担过重,容易导致节点能量提早耗尽从而出现网络空洞。

路由算法一直是无线传感器网络的重要研究课题之一。随着无线传感器网络技术和需求的不断进步,学者们提出了许多有效的路由协议以满足不同应用场景的需要,也取得了较好的效果,这些协议大多是考虑网络正常工作情况下降低网络整体能耗及实现能耗负载均衡,但传感器网络中multipoint-to-point的通信机制使得网络中的传感器节点越靠近sink,能量就消耗得越快,很容易形成路由空洞,也可能因节点部署问题存在天然的路由空洞。

目前大量的研究虽然考虑了网络“空洞”问题,但不合理的设计容易导致数据绕行传输的能耗偏高或“空洞”扩大,例如:1)一部分人则提出了tent规则和boundhole算法,tent准则用来识别网络拓扑中那些采用贪婪转发算法时遇到的“卡点”,boundhole算法用来确定路由空洞的最小边界,但并没有解决如何在负载均衡的情况下完成空洞绕行。2)一部分提出一种贪婪周边无状态路由(greedyperimeterstatelessrouting)算法,该策略在一个平面图上综合了贪婪转发和边缘转发算法,数据包在初始状态时使用贪婪转发协议进行路由,当遇到路由空洞(局部最小现象)时采用右手准则逆时针方向绕过空洞,但该方法会产生盲目避洞和三角路由问题。3)基于gpsr算法,解决了gpsr算法中的三角路由现象和盲目避洞现象,唐国明等提出一种基于感知空洞边界节点信息,将其映射到虚拟坐标系,再根据坐标分布定义空洞形状,采用分段贪婪路由传输模式进行绕洞转发的emgr算法,但这些方法也均没有考虑到绕洞路径上的节点能耗均衡问题,会导致空洞扩散现象。4一部分人提出一种用来在无线传感网络中对路由空洞进行建模的virtualcircles(虚拟圆)方法,当节点发现自己身处路由空洞的边缘时,发送一个探测包用来定义一个能够覆盖整个空洞的圆形区域,当数据包转发到圆的边界节点时,通过切线准则计算出一个锚点,并把数据转发目的改变为锚点,以此来绕过路由空洞。lif,zhangb等提出一种基于地理位置路由的空洞绕行算法hbf,该算法针对空洞生成一个半径可调的虚拟圆,利用虚拟圆生成一个锚点,用来中转到达空洞边界的数据包,但圆形空洞过于理想化和缺泛了一般性。5)pengyuxu等人提出一种空洞绕行策略bhrgr,该算法利用一个能够覆盖路由空洞的虚拟多边形产生中间目标节点,以使数据包绕行。但是上述大量的研究均缺少考虑空洞绕行过程中能耗均衡的问题。



技术实现要素:

本发明的目的是为了解决上述现有技术的不足而提供一种wsn多路径空洞绕行方法。针对上述问题提出一种能量敏感的wsn多路径空洞绕行算法,该算法首先构建凸包来进行有效避洞,然后通过构建多条路径来实现能量负载均衡,从而避免空洞的扩大。

为了实现上述目的,本发明所设计的一种wsn多路径空洞绕行方法,具体包括以下步骤:

s1、将传感器节点均匀的部署在一个长、宽都为r的矩形区域中;

s2、然后利用凸包对路由空洞形状进行建模,具体步骤如下:

①首先完成路径空洞边缘结点的检测,然后定义一个能够覆盖空洞区域的最小凸包,当wsn中的结点需要发送数据时,网络按照地理位置贪婪转发策略对数据包进行转发以达到目的地d点;

②当数据到达一个不能找到下一跳数据转发的节点即“卡点”时,并用结点vini(1)代表第一个卡点,此时该结点vini(1)会向距离目的地d点和自身的连线最近的一条边分别按顺时针和逆时针方向发送空洞边缘检测数据包,称为hbdcw和hbdccw,数据包中包含自身接节点的位置和结点id;

③数据包分别按右手准则和左手准则沿顺时针方向和逆时针方向转发检测数据包;

④若一个结点同时接收到hbdcw和hbdccw包则停止转发过程,这个结点被我们标识为交叉结点vint(1);

⑤当探测过程完成后,节点vint(1)得到所有空洞边缘节点的位置信息,用h代表所有的顶点集合,节点vint(1)采用grahamscan算法对这些节点进行筛选以形成凸包;

⑥算法完成后,堆栈中包含所有按逆时针的顺序形成凸包的顶点;

s3、定义路径长度并确定需要构建的路径个数,具体步骤如下:

1)根据步骤s2完成后,节点vint(k)得到所有第k条路径上形成凸包顶点的节点信息,然后再其中选择两个节点va(k)和vb(k)使得这两点和汇聚节点s所形成的角度最大,即小于或等于180度,并通过计算正交积来确定va(k)和vb(k)分别是顺时针或逆时针数据绕行空洞转发时经过的点,在这里分别表示为vcw(k)和vccw(k);

2)并用{c0(k),c1(k)…cn(k)}来表示属于第k条路径上的凸包顶点,用{g0(k),g1(k)…gm(k)}来表示第k条路径上vcw(k)按顺时针路径上到达vccw(k)所经过的所有凸包顶点,则路径长度定义如公式(1-1)所示:

s4、判断数据是否到达,最终完成路径选择,当节点vint(k)计算出路径减负效果后,它发送凸包信息数据包给vcw(k)和vccw(k),这两个节点分别按逆时针和顺时针方向发送路径建立数据包给最近的凸包顶点,以此类推,转发过程使用贪婪边界无状态路由算法,具体步骤如下:

(1)每个收到路径建立数据包的节点通过计算到达vcw(k)和vccw(k)的跳数,如果跳数差异小于2,则不再进行转发,

(2)每个收到路径建立数据包的节点执行如下操作:首先,如果减能效果是负数,该节点认为自己是“路外节点”,否则为“路径上的点”;然后根据收到的路径建立数据包的方向,来确定自己属于“顺时针区域”或“逆时针区域”,并以此来决定自己应该记录到达vcw(k)或vccw(k)节点的跳数;最后把这些信息发送自己的1跳邻居;如果一个节点不属于路径上的节点或路外节点,我们把它叫做普通节点,如果普通节点w发送数据给第k条路径上的路上节点,则认为它是第k+1条路径上的初始节点vint(k+1),并开始建立第k+1条路径,第k条路径上的所有路上节点都被当作空洞区域内的节点,直至整个路径选择完成即可。

进一步,在步骤s3中构建多条绕行路径的目的是为了负载均衡,但是如果有些路径长度过大,会使得转发需要的开销增大,此时用nodesquantity(k)来表示第k条路径上的节点个数,这k条路径对于第1条路径的减负效果是[(k-1)/k]*nodesquantity(1),而第2条路径到第k条路么上增加的额外转发开销可以表达为:

进一步,在步骤s4中由于路径上的节点个数和路径长度成正比,因此路径减负效果的具体计算公式如下:

本发明得到的一种wsn多路径空洞绕行方法,首先构建凸包来进行有效避洞,然后通过构建多条路径来实现能量负载均衡,从而避免空洞的扩大。

附图说明

图1为一种wsn多路径空洞绕行方法中路由空洞示意图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

实施例1:

本发明提供的一种wsn多路径空洞绕行方法,

具体包括以下步骤:

s1、将传感器节点均匀的部署在一个长、宽都为r的矩形区域中;

s2、然后利用凸包对路由空洞形状进行建模,具体步骤如下:

①如图1所示,首先完成路径空洞边缘结点的检测,然后定义一个能够覆盖空洞区域的最小凸包,当wsn中的结点需要发送数据时,网络按照地理位置贪婪转发策略对数据包进行转发以达到目的地d点;

②当数据到达一个不能找到下一跳数据转发的节点即“卡点”时,并用结点vini(1)代表第一个卡点,此时该结点vini(1)会向距离目的地d点和自身的连线最近的一条边分别按顺时针和逆时针方向发送空洞边缘检测数据包,称为hbdcw和hbdccw,数据包中包含自身接节点的位置和结点id;

③数据包分别按右手准则和左手准则沿顺时针方向和逆时针方向转发检测数据包;

④若一个结点同时接收到hbdcw和hbdccw包则停止转发过程,这个结点被我们标识为交叉结点vint(1);

⑤当探测过程完成后,节点vint(1)得到所有空洞边缘节点的位置信息,用h代表所有的顶点集合,节点vint(1)采用grahamscan算法对这些节点进行筛选以形成凸包;

⑥算法完成后,堆栈中包含所有按逆时针的顺序形成凸包的顶点;

s3、定义路径长度并确定需要构建的路径个数,具体步骤如下:

1)根据步骤s2完成后,节点vint(k)得到所有第k条路径上形成凸包顶点的节点信息,然后再其中选择两个节点va(k)和vb(k)使得这两点和汇聚节点s所形成的角度最大,即小于或等于180度,并通过计算正交积来确定va(k)和vb(k)分别是顺时针或逆时针数据绕行空洞转发时经过的点,在这里分别表示为vcw(k)和vccw(k);

2)并用{c0(k),c1(k)…cn(k)}来表示属于第k条路径上的凸包顶点,用{g0(k),g1(k)…gm(k)}来表示第k条路径上vcw(k)按顺时针路径上到达vccw(k)所经过的所有凸包顶点,则路径长度定义如公式(1-1)所示:

s4、判断数据是否到达,最终完成路径选择,当节点vint(k)计算出路径减负效果后,它发送凸包信息数据包给vcw(k)和vccw(k),这两个节点分别按逆时针和顺时针方向发送路径建立数据包给最近的凸包顶点,以此类推,转发过程使用贪婪边界无状态路由算法,具体步骤如下:

(1)每个收到路径建立数据包的节点通过计算到达vcw(k)和vccw(k)的跳数,如果跳数差异小于2,则不再进行转发,

(2)每个收到路径建立数据包的节点执行如下操作:首先,如果减能效果是负数,该节点认为自己是“路外节点”,否则为“路径上的点”;然后根据收到的路径建立数据包的方向,来确定自己属于“顺时针区域”或“逆时针区域”,并以此来决定自己应该记录到达vcw(k)或vccw(k)节点的跳数;最后把这些信息发送自己的1跳邻居;如果一个节点不属于路径上的节点或路外节点,我们把它叫做普通节点,如果普通节点w发送数据给第k条路径上的路上节点,则认为它是第k+1条路径上的初始节点vint(k+1),并开始建立第k+1条路径,第k条路径上的所有路上节点都被当作空洞区域内的节点,直至整个路径选择完成即可。

进一步,在步骤s3中构建多条绕行路径的目的是为了负载均衡,但是如果有些路径长度过大,会使得转发需要的开销增大,此时用nodesquantity(k)来表示第k条路径上的节点个数,这k条路径对于第1条路径的减负效果是[(k-1)/k]*nodesquantity(1),而第2条路径到第k条路么上增加的额外转发开销可以表达为:

进一步,在步骤s4中由于路径上的节点个数和路径长度成正比,因此路径减负效果的具体计算公式如下:

在本实施例中所述路径选择阶段,我们构建一种能量敏感的空洞绕行策略。为此,我们提出能量等高线概念:结点的能量消耗越高,它的等高线越高,反之亦然。当结点需要转发数据时,加入自己的能量等高值,这样所有结点都可以更新其邻居的等高值。路径上的数据包的转发按以下两条准则进行:第一,数据包按照等高线的高低不同,像水流一样自然流动;第二,数据包会向着汇聚结点方向流动。当第i条绕行路径上的结点u(i)收到数据,它会把数据转发给具有最低能量等高线的邻居,如果超过一个结点具有相同等高线,则转发给序号最低的路径上的结点。

因此通过本发明实现首先构建凸包来进行有效避洞,然后通过构建多条路径来实现能量负载均衡,从而避免空洞的扩大。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1