??作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,
代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
智能优化算法?? ? ??神经网络预测?? ? ??雷达通信?? ? ?无线传感器?? ? ? ?电力系统
信号处理?? ? ? ? ? ? ?图像处理?? ? ??? ? ? ??路径规划?? ? ??元胞自动机?? ? ? ?无人机
LEACH(低能耗自适应集群层次路由)和 DEEC(分布式能量高效集群)是两种用于无线传感器网络的层次路由算法。它们都旨在通过在网络中形成簇来减少能量消耗,从而延长网络的寿命。
LEACH 算法是一种基于轮换的簇头选举算法。在每轮选举中,每个节点都有可能被选为簇头。簇头负责收集簇内节点的数据并将其发送到汇聚节点。汇聚节点负责将数据发送到网络的最终目的地。
LEACH 算法的流程如下:
簇头选举:每个节点都会生成一个随机数。如果随机数小于某个阈值,则该节点被选为簇头。
簇形成:簇头向其周围的节点广播一个消息,通知它们加入簇。节点收到簇头消息后,会选择一个信号最强的簇头加入。
数据收集:簇头负责收集簇内节点的数据。簇内节点将数据发送到簇头,簇头将数据聚合后发送到汇聚节点。
数据传输:汇聚节点负责将数据发送到网络的最终目的地。
DEEC 算法是一种基于能量的簇头选举算法。在每轮选举中,能量最高的节点被选为簇头。簇头负责收集簇内节点的数据并将其发送到汇聚节点。汇聚节点负责将数据发送到网络的最终目的地。
DEEC 算法的流程如下:
簇头选举:每个节点都会计算自己的能量。能量最高的节点被选为簇头。
簇形成:簇头向其周围的节点广播一个消息,通知它们加入簇。节点收到簇头消息后,会选择一个能量最高的簇头加入。
数据收集:簇头负责收集簇内节点的数据。簇内节点将数据发送到簇头,簇头将数据聚合后发送到汇聚节点。
数据传输:汇聚节点负责将数据发送到网络的最终目的地。
clear
close all
%1.初始参数设定模块
%.传感器节点区域界限(单位 M)
xm=100;
ym=100;
%(1)汇聚节坐标给定
sink.x=0.5*xm;
sink.y=0.5*ym;
%区域内传器节数
n=100
%簇头优化比例(当选簇头的概率)
p=0.1;
%能量模型(单位 焦)
%初始化能量模型
Eo=0.5;
%Eelec=Etx=Erx
ETX=50*0.000000001;
ERX=50*0.000000001;
%Transmit Amplifier types
Efs=10*0.000000000001;
Emp=0.0013*0.000000000001;
%Data Aggregation Energy
EDA=5*0.000000001;
%高能量节点超出一节点能量的百分比
a=1;
%最大循环次数
rmax=5000
%算出参数 do
do=sqrt(Efs/Emp);
%2.无线传感器网络模型产生模块
%构建无线传感器网络,在区域内均匀投放100个节点,并画出图形
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;
S(i).E=Eo*(1+rand*a);
%initially there are no cluster heads only nodes
S(i).type='N';
end
?
S(n+1).xd=sink.x;
S(n+1).yd=sink.y;
%3.网络运行模块
%簇头节点数
countCHs=0;
cluster=1;%此定义的目的仅仅是给定一个1开始的下标参数,真正的簇头数应该还减去1
flag_first_dead=0;
flag_teenth_dead=0;
flag_all_dead=0;
%死亡节点数
dead=0;
first_dead=0;
teenth_dead=0;
all_dead=0;
%活动节点数
allive=n;
%counter for bit transmitted to Bases Station and to Cluster Heads
packets_TO_BS=0;
packets_TO_CH=0;
%(1)循环模式设定
for r=0:1:rmax %该 for 循环将下面的所有程序包括在内,直到最后一 end 才结束循环
r
%每过一个轮转周期(本程序为10次)使各节点的S(i).G参数(该参数用于后面的簇选举,在该轮转周期内已当选过簇头的节点不能再当选)恢复为零
if(mod(r, round(1/p) )==0)
for i=1:1:n
S(i).G=0;
S(i).cl=0;
end
end
%(2)死亡节点检查模块
dead=0;
for i=1:1:n
%检查有无死亡节点
if (S(i).E<=0)
dead=dead+1;
%(3)第一个死亡节点的产生时间(用轮次表示)
%第一个节点死亡时间
if (dead==1)
if(flag_first_dead==0)
first_dead=r;
flag_first_dead=1;
end
end
%10%的节点死亡时间
if(dead==0.1*n)
if(flag_teenth_dead==0)
teenth_dead=r;
flag_teenth_dead=1;
end
end
if(dead==n)
if(flag_all_dead==0)
all_dead=r;
flag_all_dead=1;
end
end
end
if S(i).E>0
?
?
?
LEACH 和 DEEC 算法都是用于无线传感器网络的层次路由算法。它们都旨在通过在网络中形成簇来减少能量消耗,从而延长网络的寿命。
LEACH 算法是一种基于轮换的簇头选举算法,而 DEEC 算法是一种基于能量的簇头选举算法。LEACH 算法的优点是简单易实现,但缺点是簇头选举的随机性可能会导致某些节点成为簇头过于频繁,从而导致这些节点的能量消耗过快。DEEC 算法的优点是能够选择能量最高的节点作为簇头,从而避免了 LEACH 算法的缺点,但缺点是簇头选举的复杂度较高。
LEACH 和 DEEC 算法都是用于无线传感器网络的层次路由算法。它们都旨在通过在网络中形成簇来减少能量消耗,从而延长网络的寿命。LEACH 算法简单易实现,但缺点是簇头选举的随机性可能会导致某些节点成为簇头过于频繁,从而导致这些节点的能量消耗过快。DEEC 算法能够选择能量最高的节点作为簇头,从而避免了 LEACH 算法的缺点,但缺点是簇头选举的复杂度较高。