一、理论基础
1、LEACH算法概述
请参考这里。
2、改进的LEACH算法
改进的LEACH算法(LEACH-N)主要针对LEACH算法分簇阶段的缺陷而改进的,具体步骤如下:
(1)每一个节点计算与其他节点距离小于
d
0
d_0
d0的节点数
a
a
a,
d
0
d_0
d0的计算公式如下:
d
0
=
ε
f
s
/
ε
m
p
(1)
d_0=\sqrt{\varepsilon_{fs}/\varepsilon_{mp}}\tag{1}
d0=εfs/εmp(1)式中:
ε
f
s
\varepsilon_{fs}
εfs表示自由空间信道模型信号放大器功耗;
ε
m
p
\varepsilon_{mp}
εmp表示多路径衰减信道模型信号放大器功耗。
(2)计算节点剩余能量
E
l
E_l
El。
(3)节点根据剩余能量和特定范围内的节点数计算出各个节点可成为新的簇头节点的阈值, 阈值计算公式为:
T
(
n
)
=
{
p
i
1
−
p
i
(
r
m
o
d
(
1
/
p
i
)
)
⋅
E
l
E
0
,
n
∈
G
0
,
o
t
h
e
r
w
i
s
e
(2)
T(n)=\begin{dcases}\frac{p_i}{1-p_i\left(rmod(1/p_i)\right)}\cdot\frac{E_l}{E_0},\quad n∈G\\0,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\, otherwise\end{dcases}\tag{2}
T(n)=⎩⎨⎧1−pi(rmod(1/pi))pi⋅E0El,n∈G0,otherwise(2)式中:
p
i
=
p
⋅
a
/
n
p_i=p\cdot a/n
pi=p⋅a/n,
p
p
p为整个网络中簇头节点占总节点数
n
n
n的比例;
E
0
E_0
E0为节点的初始能量;
G
G
G代表在最近的
r
−
1
r-1
r−1轮中未当选簇头的节点集合,
r
r
r是WSN进行的当前轮数;
r
m
o
d
(
1
/
p
i
)
rmod(1/p_i)
rmod(1/pi)为一轮循环中当选过簇头的传感器节点个数。
(4)节点会产生一个[0,1]的随机数。如果随机数小于这个阈值T(n),则该节点成为簇头。
(5)所有簇头选择完成之后,广播所有簇头节点位置信息,剩余的普通节点选择距离最近的簇头入簇,并将自己的标识记为该簇头的标识号。
(6)所有节点入簇完成,转为数据传输阶段,簇内的普通节点比较到簇头和Sink节点的距离,若到Sink节点的距离更小,则直接传输数据到 Sink节点,减少能量的消耗。
(7)簇头节点接收簇内非簇头节点的数据,通过计算、融合后将数据发送给Sink节点。该阶段运行一轮后,进入下一轮,转至步骤(2) ,计算剩余能量
E
l
E_l
El。
二、算法流程图
三、仿真实验与分析
仿真网络中有100个节点且随机地分布在100m×100m范围内,Sink 节点的位置固定,每个节点的初始能量为0.5J,仿真参数如表1所示。
图2~4分别是存活节点数目、网络剩余能量、基站接收的数据量随轮次的变化曲线。
四、参考文献
[1] 韩广辉, 张丽翠. 基于LEACH协议的无线传感网能效分簇算法[J]. 吉林大学学报(信息科学版), 2017, 35(1): 26-31.
[2] 何书前, 严晨, 邓正杰, 等. 无线传感器网络路由优化中的能量均衡LEACH改进算法[J]. 现代电子技术, 2020, 43(5): 6-9.