基于功率控制与分簇数量的LEACH优化算法
2018-09-27齐华,吕龙,陈红
齐 华, 吕 龙, 陈 红
(1.西安工业大学 电子信息工程学院,陕西 西安 710021; 2.武警工程大学 信息工程系,陕西 西安 710086)
0 引 言
合理高效地使用能量,是无线传感器网络[1,2](wireless sensor networks,WSNs)需要首先考虑的问题。近年来,国内外学者从网络的拓扑结构出发,研究出各种均衡网络能量消耗的算法,较为经典的有低能量自适应聚簇分层(low energy adaptive clustering hierarchy,LEACH)[3]算法,该算法让节点轮流当选簇头,共同分担簇头节点的高能耗,实现均衡能耗的效果,但不足之处在于算法没有考虑节点的发射功率、节点剩余能量和位置、 簇头数量不稳定等问题,文献[4]提出一种基于距离划分和剩余能量的分簇算法,以网格内节点到汇聚节点的距离为标准,以剩余能量大小确定簇头节点,使簇头节点分布更合理;文献[5]提出了一种基于剩余能量和节点度的分簇算法,在簇头选取过程中,综合考虑所有节点剩余能量和节点度,避免能量低的节点当选为簇头;文献[6]提出一种自适应功率控制及调度算法,通过监听邻居簇首调度以及功率等级表来自适应地安排簇内节点的发射功率级和时隙,减少簇间干扰和发射功率浪费的现象。
本文提出一种自适应功率控制与优化分簇数量的改进路由算法 (LEACH-power control optional cluster,LEACH-PCOC),综合考虑节点的能量状态、节点的位置、节点的发射功率和簇头数的变化4个因素,最终实现网络能量有效利用,延长网络寿命。
1 LEACH-PCOC算法的实现思路
1)使用虚拟单元格划分监测区域。针对LEACH算法在簇的建立阶段没有考虑节点的分布情况以及节点的数据冗余度问题,本文通过引入虚拟单元格划分监测区域,将单元格内的节点能量作为簇头竞选的条件,优化簇的建立,减少数据冗余度,提高网络生存周期。
2)优化簇头数目选取方式。若网络中的簇头数目过少,将会增加节点通信引起的能量损耗;若簇头数目过多,每轮中总的耗能将会增大,因此,网络中一定存在最优的簇头数目,使总能耗最小,根据网络自身的变化调整簇头数目将会提高 LEACH 算法的性能。
3)动态调整节点的发射功率。LEACH算法在簇头选举时,不考虑节点间的距离和簇间干扰,使用最大发射功率完成通信,导致节点能量的浪费,因此,自适应的调整发射功率,有利于延长网络的生存周期。
4)改进簇头阈值T(n)。LEACH算法在选择簇头时有可能使剩余能量小的节点被选为簇头,导致这类节点加速死亡,缩短网络寿命,改进阈值将会提高网络节点存活率。
2 LEACH-PCOC算法的实现过程
2.1 算法模型及假设
1)网络模型
设监测区域为J=L×L的正方形,节点在监测区域内随机播撒,汇聚节点位于区域中心的位置,节点自组网形成WSNs。
2)能量模型
本文假设的网络采用简单能量消耗模型,在模型中,A节点将k比特的数据包发送到距离为d的B节点,所需的发射能耗ETx(k,d)和接收能耗ERx(k,d)为
(1)
ERx(k,d)=k·Eelec
(2)
式中Eelec为电路发送或者接收1 bit数据所消耗的能量;εamp和εfs分别为远近距离传输时的射频参数,由功率放大器决定;d0为能量模型的传输临界距离,若d>d0,采用自由空间衰落模型,若d≥d0,则采用多径衰落信道模型。
在模型中,每个节点都具有数据融合的能力,设融合1 bit数据消耗的能量为EDA,则把m个节点1 bit数据融合成为1个数据消耗的能量表示为lEDA(m)。
3)相关假设
a.所有节点随机部署在一个二维的平面内,且部署后位置唯一,固定不动;
b.汇聚节点能量无限,通信距离覆盖整个网络;
c.节点可自由调节发射功率,且节点均可跟汇聚节点直接通信;
d.通信链路具有对称性,接收节点能以相同功率向发射节点发送数据;
e.簇头执行信号处理,并对簇内节点的信息进行融合后传输给Sink节点。
2.2 算法描述
2.2.1 虚拟单元格划分监测区域
以网络的汇聚节点为坐标原点的位置,建立直角坐标系,将L×L的平面监测区域划分为若干个边长为r的正六边形虚拟网格。区域划分好后,设由4个正六边形的中心点连接形成的长方形的长为2d,宽为2h,则每个网格的中心点坐标即可确定,设为(x0,y0),如图1所示,故可定义此网格的网格号为G(m,n)=(m=x0/d,n=y0/h)
图1 正六边形虚拟网格
通过节点关联法计算节点(x,y)所属的网格号G(m,n):
1)初始化:d=3r/2;h=sqrt(3)/2;Xint=int(x/d);Yint=int(y/d);Xr=x-Xintd;Yr=y-Yinth。
2)循环:判断Xint+Yint是否偶数?
a.偶数:如果(Xr·Xr+Yr·Yr)≤(d-Xr)(d-Xr)+(h-Yr)(h-Yr),节点(x,y)属于网格G(m,n);否则,节点(x,y)属于网格G(m+1,n+1)。
b.奇数:如果(Xr·Xr+(h-Yr)(h-Yr))≤(d-Xr)(d-Xr)+Yr·Yr,节点(x,y)属于网格G(m,n+1);否则,节点(x,y)属于网格G(m+1,n)。
3)循环结束。把在虚拟网格中能量最多的节点作为该网格的活跃节点,参与竞选簇头,网格内的其他节点可在一轮的循环中进入休眠的状态。改进后的算法通过簇头和活跃节点对区域进行监测,保护能量小的节点,减少数据的冗余度。
2.2.2 簇头数量动态优化
针对文献[7]提出的方法进行修改,设计一个与网络变化相匹配的最优簇头数,提高网络能耗均衡性。设在边长为L的正方形监测区域内,随机分布n个节点,其最优簇头数为k,则平均每个簇内有1个簇头节点和(n/k-1)个簇成员节点,则簇头的总能耗为
(3)
(4)
式中dtoBS为节点到汇聚节点的距离,dtoCH为成员节点到簇头的距离,Enon-CH为成员节点能耗。
假设簇头位于簇的中心,且节点在区域内是均匀分布的,则网络的总耗能为
(5)
2.2.3 动态调整节点的发射功率
令d表示接收节点和发送节点间的距离间隔,Pt表示发送节点发送1个数据帧的功率,Pr表示接收节点接收到该数据帧的功率,则有
(6)
式中λ为载波波长;Gt,Gr为发射天线增益和接收天线增益;n为信道衰落系数。
预调整系数c可以由实验确定。如果一个接收节点已知Pt和Rt,并且能够测出接收信号的能量Pr,则就能够计算出发送节点必须至少以多大的发射功率才能保证其被接收节点正确接收。
每个节点都有一个调度表,包含所有与其相邻节点的信息。在基于功率控制的MAC协议中,调度表中增加了与功率控制有关的信息,即与相邻节点进行通信时所需要的最低功率量化值(Pm)。每当从相邻节点接收到一个SYNC帧时,系统会自动提取,并计算出这一相邻节点的下一休眠时间以及其最低功率量化值,这样发送节点就可以计算出到接收节点之间通信所需要的最小发射功率。
2.2.4 簇头节点选举
为了使剩余能量较多的节点更有机会当选为簇首, 同时为了避免网络的后期因节点能量过低导致竞选簇头概率变低的问题,引入能量影响因子[8]和平衡因子
χ(i,r)=E(i,r)/Enet_average(r),
φ(i,r)=(Einitial-E(i,r))/Einitial
(7)
式中E(i,r)为节点i在第r轮开始前的剩余能量;Enet_averger(r)为在第r轮开始前网络存活节点的平均能量。具体阈值为
(8)
式中m为网络存活节点个数。
改进后的LEACH-PCOC算法的工作流程图2。
图2 LEACH-PCOC算法的工作流程
3 仿真结果与分析
本文使用 MATLAB对LEACH算法和LEACH-PCOC算法进行仿真,具体的实验参数为:节点总数为200,汇聚节点位置为(100,100)m,Einitial=0.5 J,εfs=10 pJ/(bit/m2),εmp=0.001 3 pJ/(bit/m4),数据包为4 000 bit,广播包为200 bit,Eelec=50 nJ/bit,EDA=5 nJ/bit。仿真结果如图3所示。
图3 2算法性能比较
由图3(a)可以发现,在同一条件下,LEACH算法在700轮左右时,节点全部死亡,并且曲线斜率大,死亡的速度快,而改进算法在1 300轮左右时,节点全部死亡,曲线斜率较小,死亡缓慢。由此可见,LEACH-PCOC算法有效的均衡节点能耗,延长了网络的生存时间。图3(b)中在网络运行的整个阶段里,改进算法LEACH-PCOC的总能耗一直低于LEACH算法,由此可知,新算法更能使网络中的能耗均衡,延长网络的生存时间。
4 结束语
本文在分析LEACH路由算法的基础上提出自适应功率控制与优化分簇数量的新型路由算法LEACH-PCOC,提高了节点能量的利用率,平衡了网络能耗,实现延长网络生存周期的目的。