一、簇的形成
DEBUC(distributed energy-balanced unequal clustering routing protocol)采用分布式簇头竞争算法,簇头的选举完全依据局部竞争。参与簇头竞争的候选簇头节点保存一个邻居节点信息表,见表1,并按一定规则竞争成为最终簇头。候选簇头之间竞争的规则定义如下:
规则1. 在竞选过程中,若候选簇头
v
i
v_i
vi宣布其竞选获胜,则在
v
i
v_i
vi的竞争半径内的所有候选簇头均不能成为最终簇头,需要退出竞选过程。
候选簇头
v
i
v_i
vi的邻居节点集合包括与
v
i
v_i
vi具有规则1所约束的竞争关系的所有候选簇头节点,其定义如下:
定义1. 在 DEBUC 簇头竞选算法中,候选簇头
v
i
v_i
vi的邻居节点集合
N
T
i
NT_i
NTi为
N
T
i
=
{
v
j
∣
v
j
是
候
选
簇
头
,
且
d
(
v
i
,
v
j
)
<
m
a
x
(
v
i
.
R
c
o
m
p
,
v
j
.
R
c
o
m
p
)
}
(1)
NT_i=\{v_j|v_j是候选簇头,且 d(v_i,v_j)<max(v_i.R_{comp},v_j.R_{comp})\}\tag{1}
NTi={vj∣vj是候选簇头,且d(vi,vj)<max(vi.Rcomp,vj.Rcomp)}(1)由于在 WSNs 的实际应用中,节点的密度一般较高(如20个节点/平方米),因此没有必要每个节点都成为候选簇头。设置一个门限值
T
T
T以控制候选簇头节点的比例。同时,每个候选簇头节点设置一个竞争范围
R
c
o
m
p
R_{comp}
Rcomp,它是该节点与基站距离的函数,用于控制簇头在网络中的分布。为了使距离基站较近的簇具有较小的几何尺寸,在距离基站较近的区域应选举更多的簇头。因此,候选簇头节点的竞争半径应正比于它与基站的距离。亦即,随着候选簇头到基站距离的减小,其竞争半径应该随之减小。假设
R
c
o
m
p
o
R_{comp}^o
Rcompo是预先定义的最大竞争半径,候选簇头节点
v
i
v_i
vi的
R
c
o
m
p
R_{comp}
Rcomp为
v
i
.
R
c
o
m
p
=
(
1
−
c
d
m
a
x
−
d
(
v
i
,
B
S
)
d
m
a
x
−
d
m
i
n
)
R
c
o
m
p
o
(2)
vi.R_{comp}=\left(1-c\frac{d_{max}-d(v_i,BS)}{d_{max}-d_{min}}\right)R_{comp}^o\tag{2}
vi.Rcomp=(1−cdmax−dmindmax−d(vi,BS))Rcompo(2)其中,
d
m
a
x
d_{max}
dmax和
d
m
i
n
d_{min}
dmin分别代表节点和基站的最大和最小距离,
d
(
v
i
,
B
S
)
d(v_i,BS)
d(vi,BS)代表节点
v
i
v_i
vi和基站的距离,
c
c
c是位于0~1之间的常数。根据公式(2)可知,候选簇头节点的竞争范围在
(
1
−
c
)
R
c
o
m
p
o
(1-c)R_{comp}^o
(1−c)Rcompo到
R
c
o
m
p
o
R_{comp}^o
Rcompo之间变化。
簇头选举算法的伪代码如图1所示。在簇头选举算法中,控制信息的广播半径是
R
c
o
m
p
o
R_{comp}^o
Rcompo,以保证候选簇头节点能接收其邻居节点的信息。首先,每个候选簇头节点广播包括自身
I
D
ID
ID、竞争范围和剩余能量的
C
O
M
P
E
T
E
_
H
E
A
D
_
M
S
G
COMPETE\_HEAD\_MSG
COMPETE_HEAD_MSG消息,而普通节点则进入休眠状态直到簇头选举算法结束,如图中第1行 ~ 第9行所示。接收这些消息后,候选簇头节点更新其邻居节点信息表,如第10行~第13行所示。下一步是候选簇头节点竞争簇头阶段。其
他一些算法(如EEUC)中,剩余能量大于所有邻居节点的候选簇头节点竞选成功并广播消息通知其邻居节点,邻居节点收到该消息后放弃竞争并广播消息。在这种方式下,候选簇头节点竞争簇头时需要广播和接收大量消息,特别是当节点密度较大时。DEBUC 在簇头竞争阶段采用计时广播代替协商机制,如第19行~第27行所示。候选簇头节点
v
i
v_i
vi依据自身时间进度广播
F
I
N
A
L
_
H
E
A
D
_
M
S
G
FINAL\_HEAD\_MSG
FINAL_HEAD_MSG消息,宣布自己成为簇头。
t
i
=
k
×
T
C
H
×
E
ˉ
N
T
i
R
E
i
(3)
t_i=k×T_{CH}×\frac{\bar{E}_{NTi}}{RE_i}\tag{3}
ti=k×TCH×REiEˉNTi(3)其中,
k
k
k是均匀分布在
(
0.9
,
1
)
(0.9,1)
(0.9,1)之间的随机数,用于减小广播消息时间冲突的可能性;
T
C
H
T_{CH}
TCH是预先定义的簇头选择所 需的时间;
R
E
i
RE_i
REi是
v
i
v_i
vi的剩余能量;
E
ˉ
N
T
i
\bar{E}_{NTi}
EˉNTi是
v
i
v_i
vi邻居节点的平均剩余能量。如果
R
E
i
<
E
ˉ
N
T
i
RE_i<\bar{E}_{NTi}
REi<EˉNTi则
v
i
v_i
vi放弃竞争簇头,如第14行~第18行所示。根据公式(3),广播时间
t
t
t取决于节点的剩余能量和其邻居节点的平均剩余能量。如果节点在其所处区域具有较大的能量,则它成为簇头的等待时间较短,概率较大。
C
l
u
s
t
e
r
H
e
a
d
s
S
e
l
e
c
t
i
o
n
A
l
g
o
r
i
t
h
m
Cluster\,Heads\,Selection\,Algorithm
ClusterHeadsSelectionAlgorithmFor every node in the network
1:
μ
←
R
A
N
D
(
0
,
1
)
μ\leftarrow RAND(0,1)
μ←RAND(0,1)
2: if
μ
<
T
μ<T
μ<T then
3:
b
e
V
o
l
u
n
t
e
e
r
N
o
d
e
←
T
R
U
E
\quad beVolunteerNode\leftarrow TRUE
beVolunteerNode←TRUE
4: end if
5: if
b
e
V
o
l
u
n
t
e
e
r
N
o
d
e
=
T
R
U
E
beVolunteerNode=TRUE
beVolunteerNode=TRUE then
6:
C
o
m
p
e
t
e
H
e
a
d
M
s
g
(
I
D
,
R
c
o
m
p
,
R
E
)
\quad CompeteHeadMsg(ID,R_{comp},RE)
CompeteHeadMsg(ID,Rcomp,RE)
7: else
8:
s
l
e
e
p
\quad sleep
sleep
9: end if
For every volunteer node
v
i
v_i
vi
10: on receiving a
C
O
M
P
E
T
E
_
H
E
A
D
_
M
S
G
COMPETE\_HEAD\_MSG
COMPETE_HEAD_MSG from volunteer node
v
j
v_j
vj
11: if
d
(
v
i
,
v
j
)
<
v
j
.
R
c
o
m
p
d(v_i,v_j)<v_j.R_{comp}
d(vi,vj)<vj.Rcomp OR
d
(
v
i
,
v
j
)
<
v
i
.
R
c
o
m
p
d(v_i,v_j)<v_i.R_{comp}
d(vi,vj)<vi.Rcomp then
12:
\quad
add
v
j
v_j
vj to
v
i
v_i
vi neighbor set
N
T
i
NT_i
NTi
13: end if
For every volunteer node
v
i
v_i
vi
14: if
R
E
i
>
=
E
ˉ
N
T
i
RE_i>=\bar{E}_{NTi}
REi>=EˉNTi
15:
\quad
compute
t
i
t_i
ti according to Eq.(3)
16: else
17:
v
i
\quad v_i
vi give up the competition and become an ordinary node
18: end if
For every volunteer node
v
i
v_i
vi
19: while (the timer
T
C
H
T_{CH}
TCH is not expired)
20:
\quad
if (
C
u
r
r
e
n
t
T
i
m
e
<
t
i
CurrentTime<t_i
CurrentTime<ti)
21:
\quad\quad
if (heard
F
I
N
A
L
_
H
E
A
D
_
M
S
G
FINAL\_HEAD\_MSG
FINAL_HEAD_MSG from a neighbor
N
T
i
NT_i
NTi)
22:
\quad\quad\quad
give up the competition and stop the timer
t
i
t_i
ti
23:
\quad\quad
end if
24:
\quad
else if (
C
u
r
r
e
n
t
T
i
m
e
=
t
i
CurrentTime=t_i
CurrentTime=ti)
25:
F
i
n
a
l
H
e
a
d
M
s
g
(
I
D
)
\quad\quad FinalHeadMsg(ID)
FinalHeadMsg(ID)
26:
\quad
end if
27: end while
簇头选择完成后,普通节点退出休眠状态,簇头广播
C
H
_
A
D
V
_
M
S
G
CH\_ADV\_MSG
CH_ADV_MSG消息。普通节点根据接收消息的强度加入最近的簇头,并发送
J
O
I
N
_
C
L
U
S
T
E
R
_
M
S
G
JOIN\_CLUSTER\_MSG
JOIN_CLUSTER_MSG消息通知簇头。网络非均匀分簇完成。图2是DEBUC非均匀分簇的一个例子,基站位于
(
200
,
450
)
(200,450)
(200,450)。从图中可以明显看出,越是靠近基站的簇,其几何尺寸越小。
二、仿真分析
网络环境与参数见表2。
本次实验仿真10轮,其中4轮的分簇结果如图3~6所示。
三、参考文献
[1] 蒋畅江, 石为人, 唐贤伦, 等. 能量均衡的无线传感器网络非均匀分簇路由协议[J]. 软件学报, 2012(5): 1222-1232.