本发明属于水下无线传感器网络拓扑控制技术,具体涉及一种基于三维拓扑控制的集群休眠唤醒调度算法。
背景技术:
海洋是人类维持生存繁衍和社会实现可持续发展的重要基地,开发利用海洋的热潮正在全球兴起。水下传感器网络能够为促进海洋环境管理、资源保护、灾害监测、海上生产作业和海洋军事等提供更好的技术设备和信息平台,得到了世界各国政府部门、工业界、学术界的极大关注。但是在水下环境中,节点能量有限且很难更换电池,若是节点能量耗尽将会造成网络覆盖漏洞,甚至出现局部网络瘫痪,大大影响网络性能。因此设计一种高覆盖、高连通、低能耗的水下无线传感器网络拓扑控制算法具有重要意义。
技术实现要素:
针对上述问题,本发明提供了一种水下传感器网络中基于三维拓扑控制的集群休眠唤醒方法:包括以下步骤:
步骤1:利用三维水下传感器网络模型完成海洋环境采样工作,传感器节点采用三维布尔感知模型,传感器节点ni的感知模型为一个以该点坐标(xi,yi,zi)为球心,以感知半径rs为半径的球体;
传感器节点布放时是一层一层地布放,首先在水底随机布放节点,然后通过浮标将传感器推向水面,第一次绳长为
步骤2:分析传感器各部分能耗大小情况,确定能耗模型;
传感器能耗主要在感知模块、计算模块和无线通信模块;无线通信模块会消耗大部分的能量,通常分为发送、接收、空闲和睡眠四种状态;其中发送能耗最大,接收和空闲能耗适中,而睡眠能耗最小;因此,能耗模型只考虑发送数据、接收数据和空闲状态时的能耗;
发送数据能耗:
假设传感器节点能够正常接收1bit数据的最低功率为pmin,随着传输距离d变化的功率衰减函数为a(d),与衰减系数α、传输距离d和水声信道传输模型有关:
a(d)=αd·dk
式中,k表示水声信道传输类型参数;
通常情况下,衰减系数α与吸收系数α(f)直接相关:
而吸收系数α(f)只与水声信号频率f相关:
因此在浅水区域把lbit的数据发送到相距d米处的另一个节点能耗为:
es=l·pmin·a(d)
接收数据能耗:
接收数据能耗与数据包大小和接收1bit数据时的耗能有关,通常用常数ee表示节点接收1bit数据时所耗费的能量,因此接收lbit数据时的能耗为er=l·ee;空闲时能耗:
空闲状态时节点的能耗与等待时间有关;假设在单位时间内传感器节点监听信道所要消耗的能量是一个常数em,因此空闲时长为tw秒时,传感器的能耗情况为el=tw·em。
步骤3:在监控区域上建立三维坐标系;以监测的三维区域的左下角顶点作为原点,建立监控区域的三维坐标系,为算法的完成提供了很大的便捷;
步骤4:运用三维密集网络的拓扑模型,将整个三维空间划分为多个相同的虚拟组成单元,使得任意时刻,每个虚拟单元中都存在一个活动节点;
步骤5:根据集群休眠调度算法的相关定义及数学公式来确定分割单元和集群的大小,确定节点等级和感知半径,并设置休眠时间和信息表;
步骤5.1:进行相关定义:
定义1:覆盖率cr:传感器网络的覆盖率是指传感器节点感知范围v1,v2,…,vn的交集与监控区域体积va的比值,即
定义2:分割单元:目标三维区域a可以被分割为若干个相同的多面体polytope,则
定义3:集群:立方体分割单元与其26个一级物理邻接单元组成的立方体称为集群;
定义4:节点编号id0:使用节点在监控区域的三维坐标系中的坐标(x,y,z)作为节点的编号,记为ido=(x,y,z);
定义5:分割单元编号id1:每一个分割单元设置一个唯一的身份标识号码,即分割单元编号id1=(i,j,k),其中i代表分割单元所处的行数,j代表分割单元所处的列数,k代表分割单元所处的层数;所以每一个编号为(i,j,k)的分割立方体的坐标范围为:
因此,节点可以通过id0得到所在分割单元的编号:
定义6:集群编号id2:每一个集群设置一个唯一的身份标识号码,即集群编号id2=(a,b,c);则该集群的坐标范围为:
因此,节点可以通过id0得到所在集群的编号:
定义7:节点等级rank:根据节点在分割单元内的位置信息划分节点的级别,记为节点等级rank;
定义8:通信半径rc:传感器节点的通信范围与感知范围相似;
定义9:边界区域:由j=1或
定义10:最大偏移距离distance:节点在速度为零时根据距离公式求得与初始位置之间的距离,即最大偏移距离distance;
步骤5.2:确定分割单元和集群的大小
集群的边长为l,那么集群内的最远距离为
步骤5.3:确定节点等级和感知半径
根据分割单元的边长l可知,每一个分割单元内的最远距离为
步骤5.3.1:设置一级节点的感知半径:当节点位于分割单元中心平面的横线区域中时,节点为一级节点,即rank=1;此时节点的坐标范围为:
此时,当传感器节点的感知半径为
步骤5.3.2:设置二级节点的感知半径:当节点位于分割单元中心平面的竖线区域中时,节点为二级节点,即rank=2;此时节点的坐标范围为:
此时,当传感器节点的感知半径为
设置三级节点的感知半径:当节点位于分割单元中心平面的斜线区域中时,节点为三级节点,即rank=3;此时节点的坐标范围为:
此时,当传感器节点的感知半径为
步骤5.4:对边界节点进行处理:
随着边界节点的移动,监测区域的边界区域就会出现覆盖漏洞,就要重新设置边界节点的感知半径,即rs=rs+distance;
步骤5.5:设置休眠时间
在考虑网络质量的前提下,为传感器节点设置工作、等待、深度休眠三种状态,使用双重控制条件来设置休眠时间,邻居节点越少且剩余能量越小、越靠近水面的节点,休眠时间相对较长;因此休眠时间为:
其中,tmax为最长休眠时间,它需要根据实际情况具体设置;
根据能耗模型,可以假设每秒钟临时控制节点消耗的能量为eper,则eper=er+es;
临时控制节点每秒发送数据所消耗的能量为:
es=λ·pmin·a(d)
其中,λ表示1秒钟传感器节点可以发送λbit的数据,即发送速率,pmin代表传感器节点能够正常接收1bit数据的最低功率;a(d)代表通信距离为d的功率衰减函数,在这里d指的是通信半径rc;
临时控制节点每秒接收数据所消耗的能量为:
er=ε·eelec
其中,ε表示1秒钟传感器节点可以接收εbit的数据,即接收速率,eelec代表节点接收1bit数据时消耗的能量;
根据临时控制节点轮换条件可知,当
步骤5.6:设置信息表
由于后续的节点状态将会发生动态变化,为节点设置一个信息表,用来存储与节点的相关信息,提前知晓节点自身和集群内的相关信息。
步骤6:根据确定好的信息,实现集群休眠唤醒调度算法:
步骤6.1:根据已放置好的节点,选取临时控制节点;每个节点在集群内广播自己的信息表,根据收到的消息更新自己的信息表;然后选举出该集群内使得
步骤6.2:选取工作节点;临时控制节点根据节点的剩余能量eresidual,在每一个分割单元内,找到一个eresidual最大的节点作为工作节点,其余传感器进入深度休眠状态;
步骤6.3:节点进行状态转换;当节点到达预设的休眠时间ts时,传感器节点就会自动从深度休眠状态转换为等待状态;
步骤6.4:临时控制节点轮换;当
步骤6.5:重复上述步骤6.1至6.4,直至网络中的节点能量都为零。
有益效果:
本发明在网络覆盖率、网络连通率以及网络生命周期方面均比传统的随机部署算法更有优势,实现了网络的高覆盖、高连通和低能耗,并确定节点等级和感知半径。
附图说明
图1是三维密集网络的拓扑模型图。
图2是节点在水下受力和运动情况图。
图3是网络覆盖率与工作节点数的折线关系图。
图4是网络连通率与时间的折线关系图。
图5是工作节点数与时间的柱状关系图。
具体实施方式
一种水下传感器网络中基于三维拓扑控制的集群休眠唤醒方法:包括以下步骤:步骤1:利用三维水下传感器网络模型完成海洋环境采样工作,传感器节点采用三维布尔感知模型,传感器节点ni的感知模型为一个以该点坐标(xi,yi,zi)为球心,以感知半径rs为半径的球体;
传感器节点布放时是一层一层地布放,首先在水底随机布放节点,然后通过浮标将传感器推向水面,第一次绳长为
步骤2:分析传感器各部分能耗大小情况,确定能耗模型;
传感器能耗主要在感知模块、计算模块和无线通信模块;无线通信模块会消耗大部分的能量,通常分为发送、接收、空闲和睡眠四种状态;其中发送能耗最大,接收和空闲能耗适中,而睡眠能耗最小;因此,能耗模型只考虑发送数据、接收数据和空闲状态时的能耗;
发送数据能耗:
假设传感器节点能够正常接收1bit数据的最低功率为pmin,随着传输距离d变化的功率衰减函数为a(d),与衰减系数α、传输距离d和水声信道传输模型有关:
a(d)=αd·dk
式中,k表示水声信道传输类型参数;
通常情况下,衰减系数α与吸收系数α(f)直接相关:
而吸收系数α(f)只与水声信号频率f相关:
因此在浅水区域把lbit的数据发送到相距d米处的另一个节点能耗为:
es=l·pmin·a(d)
接收数据能耗:
接收数据能耗与数据包大小和接收1bit数据时的耗能有关,通常用常数ee表示节点接收1bit数据时所耗费的能量,因此接收lbit数据时的能耗为er=l·ee;空闲时能耗:
空闲状态时节点的能耗与等待时间有关;假设在单位时间内传感器节点监听信道所要消耗的能量是一个常数em,因此空闲时长为tw秒时,传感器的能耗情况为el=tw·em。
步骤3:在监控区域上建立三维坐标系;以监测的三维区域的左下角顶点作为原点,建立监控区域的三维坐标系,为算法的完成提供了很大的便捷;
步骤4:运用三维密集网络的拓扑模型,如图1所示,将整个三维空间划分为多个相同的虚拟组成单元,使得任意时刻,每个虚拟单元中都存在一个活动节点;
步骤5:根据集群休眠调度算法的相关定义及数学公式来确定分割单元和集群的大小,确定节点等级和感知半径,并设置休眠时间和信息表;
步骤5.1:进行相关定义:
定义1:覆盖率cr:传感器网络的覆盖率是指传感器节点感知范围v1,v2,…,vn的交集与监控区域体积va的比值,即
定义2:分割单元:目标三维区域a可以被分割为若干个相同的多面体polytope,则
定义3:集群:立方体分割单元与其26个一级物理邻接单元组成的立方体称为集群;
定义4:节点编号id0:使用节点在监控区域的三维坐标系中的坐标(x,y,z)作为节点的编号,记为ido=(x,y,z);
定义5:分割单元编号id1:每一个分割单元设置一个唯一的身份标识号码,即分割单元编号id1=(i,j,k),其中i代表分割单元所处的行数,j代表分割单元所处的列数,k代表分割单元所处的层数;所以每一个编号为(i,j,k)的分割立方体的坐标范围为:
因此,节点可以通过id0得到所在分割单元的编号:
定义6:集群编号id2:每一个集群设置一个唯一的身份标识号码,即集群编号id2=(a,b,c);则该集群的坐标范围为:
因此,节点可以通过id0得到所在集群的编号:
定义7:节点等级rank:根据节点在分割单元内的位置信息划分节点的级别,记为节点等级rank;
定义8:通信半径rc:传感器节点的通信范围与感知范围相似;
定义9:边界区域:由j=1或
定义10:最大偏移距离distance:节点在速度为零时根据距离公式求得与初始位置之间的距离,即最大偏移距离distance;
步骤5.2:确定分割单元和集群的大小
集群的边长为l,那么集群内的最远距离为
步骤5.3:确定节点等级和感知半径
根据分割单元的边长l可知,每一个分割单元内的最远距离为
步骤5.3.1:设置一级节点的感知半径:当节点位于分割单元中心平面的横线区域中时,节点为一级节点,即rank=1;此时节点的坐标范围为:
此时,当传感器节点的感知半径为
步骤5.3.2:设置二级节点的感知半径:当节点位于分割单元中心平面的竖线区域中时,节点为二级节点,即rank=2;此时节点的坐标范围为:
此时,当传感器节点的感知半径为
设置三级节点的感知半径:当节点位于分割单元中心平面的斜线区域中时,节点为三级节点,即rank=3;此时节点的坐标范围为:
此时,当传感器节点的感知半径为
步骤5.4:对边界节点进行处理:
如图2所示,节点沿弧线从a点运动到b点,先做加速运动再做减速运动直至速度为零,并且在时间范围[tmin,tmax]内随机取一个时间tp来描述节点在b点位置保持静止的时间。随后再以b点为起始点,做如上运动。随着边界节点的移动,监测区域的边界区域就会出现覆盖漏洞,就要重新设置边界节点的感知半径,即rs=rs+distance;
步骤5.5:设置休眠时间
在考虑网络质量的前提下,为传感器节点设置工作、等待、深度休眠三种状态,使用双重控制条件来设置休眠时间,邻居节点越少且剩余能量越小、越靠近水面的节点,休眠时间相对较长;因此休眠时间为:
其中,tmax为最长休眠时间,它需要根据实际情况具体设置;
根据能耗模型,可以假设每秒钟临时控制节点消耗的能量为eper,则eper=er+es;
临时控制节点每秒发送数据所消耗的能量为:
es=λ·pmin·a(d)
其中,λ表示1秒钟传感器节点可以发送λbit的数据,即发送速率,pmin代表传感器节点能够正常接收1bit数据的最低功率;a(d)代表通信距离为d的功率衰减函数,在这里d指的是通信半径rc;
临时控制节点每秒接收数据所消耗的能量为:
er=ε·eelec
其中,ε表示1秒钟传感器节点可以接收εbit的数据,即接收速率,eelec代表节点接收1bit数据时消耗的能量;
根据临时控制节点轮换条件可知,当
步骤5.6:设置信息表
由于后续的节点状态将会发生动态变化,为节点设置一个信息表,用来存储与节点的相关信息,提前知晓节点自身和集群内的相关信息,如下表所示;
节点信息表
步骤6:根据确定好的信息,实现集群休眠唤醒调度算法:
步骤6.1:根据已放置好的节点,选取临时控制节点;每个节点在集群内广播自己的信息表,根据收到的消息更新自己的信息表;然后选举出该集群内使得
步骤6.2:选取工作节点;临时控制节点根据节点的剩余能量eresidual,在每一个分割单元内,找到一个eresidual最大的节点作为工作节点,其余传感器进入深度休眠状态;
步骤6.3:节点进行状态转换;当节点到达预设的休眠时间ts时,传感器节点就会自动从深度休眠状态转换为等待状态;
步骤6.4:临时控制节点轮换;当
步骤6.5:重复上述步骤6.1至6.4,直至网络中的节点能量都为零。
进行仿真实验,将监测范围设置为100m*100m*100m的三维空间,节点的通信半径设置为60m,感知半径根据其位置分别被设置为8.17m、12.99m和14.53m。初始布放时投放1000个节点,通过多次实验取得数据平均值,以覆盖率、连通率和网络生命周期为重要的考察对象,忽略节点的边界效应以及在节点布放时出现的失误;
可以得出网络覆盖率与工作节点数的折线关系,如图3所示;可以得出网络连通率与时间的折线关系,如图4所示;也可以得出工作节点数与时间的柱状关系,如图5所示。