罗丹霞 湖南工学院计算机与信息科学学院
LEACH 路由协议是分层的传感器网络路由协议。该算法的基本思想是[1]:在簇生成阶段,各节点(SN)随机选取一个介于(0,1)之间的值,若该值小于阈值T(n),则该节点成为簇头(CH)。阈值T(n)的计算公式如下:
公式1:阈值计算公式
由于簇头选取的随机性,有以下四个缺点:
(1)簇头分布不能保证均衡。(2)每轮簇头数量随机。(3)簇头的选取没有考虑节点的剩余能量。(4)簇头与BS 通信采用单跳的方式。
在 L E A C H 协议算法中,采用第一顺序无线电信道模型。
根据此模型,传感器节点发送Kbit 字节的能量消耗为:
一般认为BS 距离节点较远,所以采用多径衰减模型即d4进行计算。
每个非簇头节点仅仅需要将自己的数据传输给簇头节点。由于簇头节点和非簇头节点间的距离相对较近,所以能量消耗遵循自由空间衰减信道模型。每个非簇头节点消耗的能量为:
这样,一个簇在一帧内的能耗为
图1 节点分布图
本文采用九宫格区域划分法,假设基站位于区域上方(50,100)的位置。初始化时每个节点根据自己的位置判断所在方格,保存自身到基站的距离。算法如下:
for i=1:i:n
if(i 的坐标位于区域1)
s(i).area_id=1;
……..
if(i 的坐标位于区域9)
为了修正原来算法中簇头选取没有考虑节点的剩余能量,结合最优簇头数,本文修正簇头选举阈值公式2 为:
公式2 改进后的阈值公式
簇头选择伪码如下:
IF 轮数r 为奇数
For i=1:1:n
If 节点i 格子编号在2,6,6,8,5&&节点i 的剩余能量大于该区域平均能量&&该区域未有簇头
该节点当选簇头
Else
For i=1:1:n
If 节点i 格子编号在1,3,5,7,9&&节点i 的剩余能量大于该区域平均能量&&该区域未有簇头 该节点当选簇头
本文使用MATLAB[5]对LEACH-EN 进行了仿真,并和LEACH协议进行了对比,仿真主要参数如表1:
表1 仿真参数
数据包的大小为2000 bit,簇头的数据压缩率为 0.7,即有 2 000 bit 数据发送到簇头,经簇头处理之后就将1400 bit 传给簇头中继。数据融合消耗的能量为 5 J/bit/message,传输的能量为 50 nJ/bit。
图2 的结果是因为改进后的LEACH-EN 才用了多跳于单挑相结合的通信方式,使得簇头有节点较为有效地节约了能量。另外分簇结构更合理,使得网络总的信息处理量要小,故而节约了能量。
图2 总能量消耗对比
图3 所示改进后的协议在提高网络生存时间上有所提高。这是因为合理的分簇能够有效地均衡网络能量,使得整个网络生命周期得以延长。
图3 网络生存时间对比