WSN经典分簇路由协议-DEEC及matlab实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

随手记录一下学习无线传感器网络一些经典路由协议的心得体会~

DEEC是由Li Qing等人于2006年提出的一个异构无线传感器网络分布式节能集群方案(distributed energy-efficient clustering algorithm,DEEC),算是一个比较久远且经典的WSN路由协议。

一、协议内容

DEEC协议受经典分簇协议LEACH所启发,协议主要分为两个阶段:簇建立阶段以及数据传输阶段,与LEACH协议主要不同之处在于,DEEC协议是针对异构WSN提出的路由协议,同时在DEEC中,簇头是根据每个节点的剩余能量与网络平均能量之比的概率来选举的,初始能量和剩余能量较高的节点比能量较低的节点有更多的机会成为簇头。

DEEC在SEP协议考虑两级能量异构的基础上,提出了多级能量异构的概念,对于多级异构网络,传感器的初始能量分布在[E0,E0(1 + amax)]区间,第i个节点的初始能量为E0(1 + ai),多级能量异构网络的初始能量为

上式中,N为节点个数,E0为初始能量,ai可以理解为设置的异构能量系数。

DEEC协议与LEACH协议最主要的区别就是簇头概率公式的不同,第i个节点的簇头概率pi为:

上式中,E_i(r)为第r轮第i个节点的剩余能量,\overline{E}(r)为网络平均剩余能量。p_\text{opt}为LEACH中定义的簇头概率,计算公式为p_\text{opt}=k/N,k为簇头个数。

从式(2)可看出,DEEC协议在簇头概率中引入能量因子,会使得具有较高能量的节点更容易当选簇头,作者在文章中通过推导证明了这种做法可以使的每一轮产生的簇头个数等于预先设置的簇头个数k(但实际上不是,通过后面的仿真结果可以看出来,感觉属于自圆其说)

值得注意的是,对于平均剩余能量\overline{E}(r),原文中提到网络中的节点获取整个网络中的平均能量是很困难的事情,因此作者定义了一种大致计算\overline{E}(r)的方法:

式(3)中,E_{\mathrm{total}}为网络的初始能量,r为当前轮次,R为估算出的最大生命周期:

式(4)中,E_{\mathrm{round}}为估算出的每一轮整个网络所消耗的能量(参考LEACH协议):

式(3)-(5)是作者假设每轮消耗的能量相同所得出的理想化的公式,实际上每一轮消耗的能量肯定是不相同的。

综上所述,在引入能量异构性后,不同能量水平的节点的簇头概率相应为

式(6)为两级能量异构时的不同类型节点的簇头概率,当网络中的节点为多级异构时,其簇头概率为:

节点成为簇头以后,执行与LEACH协议相同的操作:普通节点入簇\rightarrow簇内通信\rightarrow簇间通信。

重复 “挑选簇头节点”\rightarrow“普通节点入簇”\rightarrow“簇内通信”\rightarrow“簇间通信”的过程,以实现协议的运行,直至所有节点死亡。

二、协议matlab实现

1.部分核心代码

定义相关参数

xm=200;
ym=200;
sink.x=xm*0.5;  
sink.y=ym*0.5;  
n=200  
P=0.1; 
Eo=0.5; 
ETX=50*0.000000001;  
ERX=50*0.000000001;  
Efs=10*0.000000000001;  
Emp=0.0013*0.000000000001;   

EDA=5*0.000000001;  
a=1;   
rmax=4000;  
do=sqrt(Efs/Emp);  

定义簇头概率

Et=0;  
A=0;
for i=1:1:n
    S(i).xd=rand(1,1)*xm; 
    XR(i)=S(i).xd;
    S(i).yd=rand(1,1)*ym;  
    YR(i)=S(i).yd;
    S(i).G=0; 
    talha=rand*a;
    S(i).E=Eo*(1+talha);
    E(i)= S(i).E;
    A=A+talha;
    Et=Et+E(i); 
    S(i).type='N';
end
d1=0.765*xm/2;  %distance between cluster head and base station
K=sqrt(0.5*n*do/pi)*xm/d1^2; %optimal no. of cluster heads
d2=xm/sqrt(2*pi*K);  %distance between cluster members and cluster head
Er=4000*(2*n*ETX+n*EDA+K*Emp*d1^4+n*Efs*d2^2);  %energy desipated in a round
R = Et/Er;
Ea=Et*(1-r/R)/n;
p(i)=P*n*(1+a)*E(i)/(n+A)*(Ea); 

2.仿真结果

从第4个子图可看出每一轮产生的簇头个数时不同的,这也是为什么在公式(2)下面会说作者的分析自圆其说。


总结

DEEC协议考虑了节点的能量创新了簇头概率公式,以均衡网络能耗,并在逻辑上证明了算法的有效性,是一个比较值得学习的经典协议,但是这种基于概率的簇头选择方式仍然具有随机性,使得算法的性能提升仍然有限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值