◆于俊勇 谭敏生 向 婷 江君祥
一种基于LEACH算法的无线传感网络节能研究与改进
◆于俊勇 谭敏生 向 婷 江君祥
(南华大学计算机科学与技术学院 湖南 421001)
无线传感网络的能耗问题是目前亟待解决的。基于LEACH协议的研究是最普遍的。但是这些研究大都主要几种在节点的剩余能量,簇头的个数研究,但是簇头分布的均匀性和各个簇间的普通节点过量的冗余,却很少顾及。本文首先通过平均能量分组的方法产生分组,再在每个组内选择合适的簇头,然后让簇内的部分不同节点选择行的进行休眠。这样来减少普通节点的的能耗、减少簇头的数据融合能耗,进而减少整个网络的能耗。实验证明,这种方法能够很好的延长网络的生存时间。
无线传感网络;LEACH;簇头选举;能量消耗
无线传感网络(Wireless Sensor Networks,WSN)[1],[2]是部署在监控区域内大量的廉价的传感器节点通过无线通信的的方式形成的多跳自组织网络。传感器的节点的体积小于1立方厘米[3],因此每个节点携带的能量是有限的。由于其在监控区域数量多、分布广,这样为其能量的补充增加了难度。延长网络的生存时间,成为了无线传感网络研究的重点。路由协议的研究是常见的,特别是分层路由协议。典型的是LEACH协议[4]。
在LEACH协议下,首先提到“轮”的概念。不再是通过泛洪进行数据的交换,答题包括簇头的选举和簇的建立以及稳定阶段数据采集、传输。
1.1 LEACH簇头的选举和簇的建立
首先要进行簇头的选举。该算法进行簇头选择的方法如下:在每轮开始时,节点随机产生一个[0,1]的随机数,该随机数和阀值T(n)进行比较,如果小于该阀值就成为该轮的簇头,反之就准备加入相应的簇。
其中:P为节点成为簇头节点的概率,r为当前轮数,G为在最近的1/p轮中未当选簇头的节点集合。簇头节点选定以后,向周围广播自己成为簇头的消息,节点根据接受到的信号的强度来决定要加入的簇。然后,簇头节点采用TDMA的方式为簇内的所有的成员分配传送数据的时隙。这样就完成了簇的建立。
在稳定阶段,传感器节点在相应的时隙将采集到的数据先发送到簇头,簇头对接收到数据进行分析、数据融合再将数据传送到汇集节点,汇聚节点最后将数据传送到监控中心进行数据的处理。至此,一轮已经完成,网络重新进入下一轮的簇的重建,不断循环。
1.2 LEACH算法的不足
LEACH算法选择簇头节点一定时不能均匀分布。向簇头传输数据造成大量的信息冗余,并且簇头的融合也要消耗能量[5]。针对以上不足,提出了一下改进:使簇头的分布更加均匀;成簇的规模更加合理。
2.1 网络模型
本文采用的传感器网络模型具有以下性质:
(1)所有的传感器的节点在一个正方形区域中;
(2)基站是固定的、可维护的、并且有足够的能量;
(3)所有的传感器的节点的能量是有限的,每个节点都知道自身的位置信息;
(4)所有的传感器的节点都具有功率控制能力,可以改变自己的发射功率;
(5)所有的传感器的节点都具有相同的配置,都可以进行数据的融合,都可以根据一定的条件改变自己的发射功率。
2.2 能量消耗模型
本文采用如下无线通信能耗模型。节点发射l位的数据到距离为d的位置消耗的能量ETX(l,d)由发射电路的消耗和功率放大的损耗组成,功率放大的消耗则根据发送者和接收者的距离分别采用自由空间模型和多路径衰减模型,即:
式中Eelec为发射每位数据电路的消耗能量。εfs、εamp分别是2种通信信道模型下功率放大所需要的能量。若传输距离d小于阀值d0(d0为常数),功率放大消耗采用自由空间模型,当d大于阀值d0时,采用多路径衰减模型。
与LEACH算法类似的,该算法也是周期性的。每轮循环包括簇的建立阶段和稳定的工作阶段。
3.1 簇头的选取
假设一个区域内随机分布n个传感器节点,首先基站向该区域内发送一个消息(ACTION),区域内的节点收到这个消息以后,报告自己现在的能量Ei( i=1,2,...n)(刚开始时每个节点的能量完全相等),并且返回一个确认的消息(DEAL),当基站收到每个节点的确认消息以后簇头的选取流程开始。基站计算出该轮应该产生出的簇头的个数K,基站根据接收到的每个节点的能量计算出每个簇的平均的能量Eavg=Etotal/k ,然后最后一个响应的节点i成为第一个组头,基站向该节点发送消息包括分组的编号H1、分组的个数K,能量阀值Eavg,该节点接收到消息以后就向周围广播成为组头的消息,节点收到信号后假如该组。当接收未分组的能量高于阀值时,该节点成为第二个组头节点。同样的上个组头节点将向该节点发送消息包括分组的编号H2、分组的个数K,能量阀值Eavg,该组头继续按照上面的方式成组,如此循环知道形成k个组。
3.2 簇的形成
不再像以前的算法那样每个簇中的普通节点都要进行数据的采集并且传递给簇头节点。下面选择出该论实际工作的m节点,首先在该簇内选择一个节点,与簇头节点的距离在一定的阀值范围内,然后偏移一定的角度再选择一个节点,同样满足节点距离在一定的范围内。这样本轮工作的m个节点就选择出来了,簇内的其他节点本轮关机。
4.1 数据源
本文采用MATLAB作为仿真工具。以随机的方式在N*N的区域内部署传感器节点。试验中的各个参数取值如下: