APP下载

一种有效延长WSN生存时间的节点休眠调度算法

2020-06-01刘彩霞李树德

桂林航天工业学院学报 2020年1期
关键词:能量消耗电量路由

刘彩霞 李树德

1 桂林航天工业学院 计算机科学与工程学院,广西 桂林 541004;2 桂林航天工业学院 电子信息与自动化学院,广西 桂林 541004

随着无线传感器技术的进步,无线传感器网络(Wireless Sensor Networks, WSN)的应用越来越广泛。但是,对于在野外或者复杂环境中部署的网络而言,由于网络中的节点大都是由电池供电,能量有限,能量消耗情况决定了网络的生存时间,因此如何在当前 WSN节点电量有限的前提下,有效延长WSN的使用寿命,是当前亟须解决的重要问题。在无线传感器网络的实际应用中,节点的部署有多种形式,但绝大多数无线传感器网络都是随机部署的 ( 如森林防火、水质监测等),网络拓扑一般为网状拓扑结构,其中绝大多数节点既要进行数据采集,又要中转转发数据,对于这类节点(路由节点)来说,能量消耗比只进行数据采集的节点(非路由节点)要大很多。而当路由节点的电量耗尽后,即使非路由节点仍然电量充足,整个网络也无法正常工作了,因此,为了有效延长网络寿命,需要平衡路由节点与非路由节点之间的能量消耗。

1 研究现状

针对延长无线传感器网络寿命的研究成果比较多,截至目前,较典型的方案有以下几种类型:

1.1 通过节点休眠方式延长网络寿命

文献[1]提出一种基于统一时间的休眠机制,原理是根据网内的统一时钟来设置休眠。一旦时钟计时到达时间,所有节 点统一进入休眠状态。对于无线传感器网络来说,有一个统一的时钟是很难做到的。文献[2]和[3]提出了改进方法,通过网内节点定时与邻居进行数据包的交换来统一时钟,一旦可以进入休眠状态,则全网统一休眠。数据包交换导致节点通信负担加重,但也未必能保证节点时钟的完全统一。

文献[4]-[6]是以节点剩余能量多少作为判断依据,提出各种节点调度算法;文献[7]提出在簇型结构中,以节点的剩余能量和网络剩余能量的比值作为选择簇头节点的标准,剩余能量多的节点,被选为簇头节点的概率大,进而平衡整个网络的能量消耗,延长网络生存时间;文献[8]则针对网络内部和边界的节点进行不同的调度,提出了一种冗余节点休眠调度算法,称为RNSSA算法;文献[9]使网络中的传感器节点轮流工作,降低了冗余覆盖面积,有效地减少了网络中的能量消耗,以上节点的休眠时间在整个节点调度过程中都采用固定的休眠设置,这样会导致网络中部分节点的能量消耗过快,引起节点过早失效;文献[10]提出了动态调整休眠时间的方法,根据节点以及节点剩余能量延长或者缩短节点休眠时间,在此基础上设计出节点休眠时间动态调整的能量节约算法( STDA);文献[11]提出了一种基于广播的节点休眠机制,并给出了广播休眠方法的网络控制策略,节点是否休眠是通过服务器来判断的,减少了节点的负担,且休眠时间是可以动态调整的,可以有效延长 WSN 的寿命。

1.2 通过调整节点能耗来延长网络寿命

文献[12]提出了一种节点协作的节能路由传输(ECGR)算法,将能耗平衡分布于诸多节点,进而延长了网络寿命。文献[13]提出一种能耗均衡的自适应拓扑博弈算法.该算法根据节点平均寿命调整自身的功率,帮助最短寿命节点降低功率,延长整个网络的生存时间. 文献[14]针对异构无线传感器网络簇头节点能耗大、网络寿命较低等问题,提出一种路由分簇算法,以均衡簇头节点的能耗为目标,采用引力搜索算法对网络簇头的通信链路进行规划,从而降低簇头节点间通信的负载能耗。

2 改进的算法

2.1 算法描述

无线传感器网络的特点是组网灵活,待部署完毕,组网工作完成以后,网络内处于边界位置的终端节点负责数据采集,而绝大多数处于中间位置的节点不仅负责数据采集,还要负责数据转发,因此,处于中间位置的节点很容易比处于边界位置的节点提前耗尽能量,并且,越靠近协调器的节点耗能越快,针对这种情况,本文提出了一种针对中间位置节点的休眠算法,将中间节点分成两类,一类节点只负责采集数据,另一类节点只负责转发数据,从而更好地平衡各节点之间的能量消耗。休眠节点的算法流程图如图1所示。算法步骤如下:

图1 休眠节点算法

(1)首先判断节点是否冗余,如果是则转到(2),否则转到(4);

(2)进入休眠;

(3)本轮休眠结束,查看消息队列,如果收到邻居节点的休眠消息,则转到(4),否则转到(2);

(4)转入预工作状态;

(5)处理消息,如果发现有节点需要被替换,则转到(6),否则,清空消息列表,随后转到(2);

(6)选择一个目标节点,并回复替换消息;

(7)查看是否收到被替换节点的确认消息,如果收到确认消息,则替换相应节点进入工作状态,否则,清空消息列表,随后转到(2)。

工作节点的算法流程图如图2所示。步骤如下:

(1)节点正常工作;

(2)间隔一定时间,节点判断一次自身剩余电量,如果剩余电量低于设定的值K1,则转到(3),否则转到(1);

(3)仍然正常工作并发送休眠消息,同时清空消息队列;

(4)监测消息队列中是否收到替换消息,如果收到了替换消息,则发送确认休眠消息,随后处理完当前数据后进入休眠,否则等待时间T1后,转到(3)。

图2 工作节点算法

2.2 算法中部分步骤详解

在休眠节点的算法的步骤(5)中,处理消息这个环节较复杂,需要判断消息列表中是否有同一个节点发来的预休眠和确认休眠消息。如果有,说明这个节点已经找到了替换节点;如果没有,则按照消息来源将消息分成路由节点的和普通节点的两类。选择被替换节点时优先选择路由节点,每类节点中优先选择剩余电量最低的节点。但是,如果被替换节点的电量接近于或者明显高于当前节点的,则认为没有节点需要被替换。

在工作节点的算法步骤(2)中,对于正常工作的路由节点来说,判断剩余电量时设置的K1可以适当大一些,比如可以设置为30%~40%,当该路由节点休眠又苏醒后,可以继续用来替换其他需要休眠的节点,这样做还可以保证初期进入休眠的节点尽可能被用来替换路由节点,从而更好地平衡整个网络的能耗;对于正常工作的普通节点来说,判断剩余电量时设置的K1尽量小一些,比如可以设置为5%左右,当该普通节点休眠后,直接停止工作,不再用来替换任何节点,这样做的好处是减少了节点的状态转换次数,明显减少了因转换状态而进行通信的次数,从而有效地为普通节点节约了能量。

在工作节点的算法步骤(4)中,若收到的替换消息只有一条,则直接发送确认休眠消息;若收到的消息较多,则需要选择一个电量最高的节点并发送确认休眠消息;正常工作的普通节点剩余电量低于K1时,开始发送预休眠消息,若收到的替换消息只有一条,也是直接发送确认休眠消息;若收到的消息较多,则需要选择一个电量最低的节点并发送确认休眠消息;这样做可以保证整个网络在控制能耗平衡的情况下,更好地保证网络的覆盖率。

2.3 针对本算法对协议做相应调整

为每个节点增加消息队列,用于接收并保存邻居节点发送的预休眠消息和确认休眠消息。

预休眠消息中,应该有一个字段标记当前节点编号,有一个字段用于标记节点是路由节点还是普通节点,有一个字段标记节点当前剩余电量。

替换消息中,应该有一个字段标记当前节点编号,有一个字段标记被替换节点编号。

确认休眠消息中,应该有一个字段标记当前节点编号,应该有一个字段用于标记节点是路由节点还是普通节点,有一个字段标记替换节点编号。

3 算法分析

3.1 本算法的创新点

(1)由于节点路由过程的能量消耗比数据采集的要高,尤其是靠近Sink节点的路由节点,能量消耗更快,因此,本算法在能满足网络覆盖度要求的情况下,将布网后处于中间位置的节点分成两类,一类节点只负责数据采集,另一类节点只负责数据转发,冗余节点则直接进入休眠状态。

(2)为了保持整个网络的有效覆盖并减少邻居节点间的通信,路由节点在电量低于一个较高值时,发送预休眠消息,选择一个电量更高的休眠节点进行替换;对于普通节点,当其电量快耗尽时,才发送预休眠消息,找一个节点来替换。

3.2 本算法的适用范围

本算法用于网络中的冗余节点调度过程中,在网络中存在大量冗余节点的情况下,相比于没有休眠策略的网络而言,毫无疑问可以延长网络的生存时间;而对于应用了休眠策略,但其中频繁更换工作节点的算法,本算法通过合理设置K1值,可以有效地减少节点间的通信及路由调整带来的开销,从而达到延长网络生存时间的目的。

3.3 下一步需要深入研究的问题

本算法中设置了消息队列,用于收集节点处于休眠状态时邻居节点发送的消息,对于消息队列的实现机制还需要进一步的深入研究。

4 总结

本文提出一种算法,首先将中间位置节点分成只负责采集数据和只负责发送数据两类节点,并使布网完成后的冗余节点直接进入休眠状态,之后,通过合理设置K1值,来有效调度休眠节点。通过性能分析,本算法在网络中存在大量冗余节点的情况下,可以达到更好地延长网络生存时间的效果。但对于消息队列的实现机制还需要进一步的深入研究。

猜你喜欢

能量消耗电量路由
太极拳连续“云手”运动强度及其能量消耗探究
储存聊天记录用掉两个半三峡水电站电量
中年女性间歇习练太极拳的强度、能量消耗与间歇恢复探究分析
物联网智能燃气表电量自补给装置
没别的可吃
铁路数据网路由汇聚引发的路由迭代问题研究
多点双向路由重发布潜在问题研究
一种基于虚拟分扇的簇间多跳路由算法
探究路由与环路的问题
电量隔离传感器测试仪的研制