首页 > 其他分享 >LEACH网络协议性能仿真包括能耗,死亡节点,剩余存活节点

LEACH网络协议性能仿真包括能耗,死亡节点,剩余存活节点

时间:2023-05-09 23:44:52浏览次数:38  
标签:... LEACH 簇头 end 0.0 网络协议 节点

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

 

2.算法涉及理论知识概要

         LEACH协议,全称是“低功耗自适应集簇分层型协议” (Low Energy Adaptive Clustering Hierarchy),是一种无线传感器网络路由协议。基于LEACH协议的算法,称为LEACH算法。LEACH算法是一种无线传感器网络路由协议,来源于Wendi Rabiner Heinzelman, Anantha Chandrakasan, 和Hari Balakrishnan三人在2000年Proceedings of the 33rd Hawaii International Conference on System Sciences上的一篇文章Energy-Efficient Communication Protocol for Wireless Microsensor Networks。 该算法基本思想是:以循环的方式随机选择簇头节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。仿真表明,与一般的平面多跳路由协议和静态分层算法相比,LEACH分簇协议可以将网络生命周期延长15%。

 

 

 

       LEACH在运行过程中不断的循环执行簇的重构过程,每个簇重构过程可以用回合的概念来描述。每个回合可以分成两个阶段:簇的建立阶段和传输数据的稳定阶段。为了节省资源开销,稳定阶段的持续时间要大于建立阶段的持续时间。簇的建立过程可分成4个阶段:簇头节点的选择、簇头节点的广播、簇头节点的建立和调度机制的生成。

        簇头节点的选择依据网络中所需要的簇头节点总数和迄今为止每个节点已成为簇头节点的次数来决定。具体的选择办法是:每个传感器节点随机选择0-1之间的一个值。如果选定的值小于某一个阈值,那么这个节点成为簇头节点。

       选定簇头节点后,通过广播告知整个网络。网络中的其他节点根据接收信息的信号强度决定从属的簇,并通知相应的簇头节点,完成簇的建立。最后,簇头节点采用TDMA方式为簇中每个节点分配向其传递数据的时间点。

       稳定阶段中,传感器节点将采集的数据传送到簇头节点。簇头节点对簇中所有节点所采集的数据进行信息融合后再传送给汇聚节点,这是一种较少通信业务量的合理工作模型。稳定阶段持续一段时间后,网络重新进入簇的建立阶段,进行下一回合的簇重构,不断循环,每个簇采用不同的CDMA代码进行通信来减少其他簇内节点的干扰。

       LEACH路由协议主要分为两个阶段:即簇建立阶段(setup phase)和稳定运行阶段(ready phase)。簇建立阶段和稳定运行阶段所持续的时间总和为一轮(round)。为减少协议开销,稳定运行阶段的持续时间要长于簇建立阶段。

      在簇建立阶段,传感器节点随机生成一个0,1之间的随机数,并且与阈值T(n)做比较,如果小于该阈值,则该节点就会当选为簇头。T(n)按照下列公式计算:式中:P为节点成为簇头节点的百分数,r为当前轮数,G为在最近的1/p轮中未当选簇头的节点集合。簇头节点选定后,广播自己成为簇头的消息,节点根据接收到的消息的强度决定加入哪个簇,并告知相应的簇头,完成簇的建立过程。然后,簇头节点采用TDMA的方式,为簇内成员分配传送数据的时隙。

       在稳定阶段,传感器节点将采集的数据传送到簇头节点。簇头节点对采集的数据进行数据融合后再将信息传送给汇聚节点,汇聚节点将数据传送给监控中心来进行数据的处理。稳定阶段持续一段时间后,网络重新进入簇的建立阶段,进行下一轮的簇重建,不断循环。

 

 

 

 

3.MATLAB核心程序

 

IniEng=1;
NetSize=200; % Network Size
NoOfNode=200; % Number of Node
Iteration=2400; 
[R1,FD1,TD1,AD1]=leach(IniEng,NetSize,NoOfNode,Iteration,0.1);%% Leach
[R2,FD5,TD5,AD5]=Leach_Centralized(IniEng,NetSize,NoOfNode,Iteration,0.1); %% Centralized Leach
[R3,FD2,TD2,AD2]=Improved1_leach(IniEng,NetSize,NoOfNode,Iteration,0.1); %% Improved Leach 1
r=0:Iteration;
 
figure
plot(r(1:50:end),R1.DEAD(1:50:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on
plot(r(1:50:end),R2.DEAD(1:50:end),'-bo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.9,0.0]);
hold on
plot(r(1:50:end),R3.DEAD(1:50:end),'-b^',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.0,0.9]);
legend('LEACH','LEACH-C','E-LEACH');
xlabel('x(time)');
ylabel('死亡节点');
 
 
 
figure
plot(r(1:50:end),R1.ALLIVE(1:50:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on
plot(r(1:50:end),R2.ALLIVE(1:50:end),'-bo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.9,0.0]);
hold on
plot(r(1:50:end),R3.ALLIVE(1:50:end),'-b^',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.0,0.9]);
legend('LEACH','LEACH-C','E-LEACH');
xlabel('x(time)');
ylabel('存活节点');

 

  

 

标签:...,LEACH,簇头,end,0.0,网络协议,节点
From: https://www.cnblogs.com/51matlab/p/17386694.html

相关文章

  • el-tree如何拿到所有节点,以及如何控制收起所有节点?
    取所有节点:this.$refs...root.childeNodes收起节点:expanded=false收起全部节点思路将所有节点的expanded设置为false即可。实例html <el-tree ref="myTree" ... ></el-tree>jsfor(letnodeofthis.$refs.myTree.root.childeNodes){ node.expanded=false}......
  • 带中继节点的蜂窝小区通信系统matlab仿真,输出吞吐量,功耗以及能效等
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要        早期的移动通信是大区制,也就是在一个区域内建一个基站,且尽可能地提高该基站的信号覆盖范围,这种方法的好处是实现容易,设备简单,但由于受功率和频谱资源限制,系统容量有限,而且扩大......
  • Win32 SDK TreeView 控件的基本用法,节点的编辑,拖动,添加,删除,弹出菜单
    TreeView控件老是用的稀里糊涂的,写个测试程序总结一下基本用法要注意的是控件是发通知给父窗口处理,因此消息中鼠标的坐标不是相对控件的,要从屏幕坐标转换来。程序是WIN32SDK向导生成的C语言框架。树的操作定义成一个类。 微软网站上TreeView_XXX宏的说明文档好多错误,应该是......
  • 关于Kubernetes-v1.23.6-master节点的初始化操作
    当我们在master节点、安装部署完docker与Kubernetes/k8s相关的软件后,并启动(docker,kubelet)后,接下来就是需要对master节点进行初始化操作了如下,这里笔者使用的版本的为Kubernetes-v1.23.6,初始化是使用kubeadminit命令,详细的参数如下所示:[root@k8s-masterqq-5201351]#kubea......
  • k8s 节点压力驱逐
    节点压力驱逐节点压力驱逐是 kubelet 主动终止Pod以回收节点上资源的过程。kubelet 监控集群节点的内存、磁盘空间和文件系统的inode等资源。当这些资源中的一个或者多个达到特定的消耗水平,kubelet可以主动地使节点上一个或者多个Pod失效,以回收资源防止饥饿。在节......
  • hdu 1599 find the mincost route(无向图的最小环:求从一个点遍历所有节点以后回到原点
    题目:findthemincostrouteTimeLimit:1000/2000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):2801    AcceptedSubmission(s):1115ProblemDescription杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游......
  • 还原k8s控制节点
    0、基础环境配置参照节点建立搭建配置1、从旧控制节点拷贝/opt/kubernets/usr/local/bin/kubectl/usr/lib/systemd/system/etcd.service/usr/lib/systemd/system/kube-apiserver.service/usr/lib/systemd/system/kube-controller-manager.service/usr/lib/systemd/system/ku......
  • abaqus导出节点应力
    1主菜单Tools-->Query2点击Probevalues3选择要导出的数据4点击writetofile5选择导出位数和形式我这里保留六位,没用科学计数法......
  • BM3 链表中的节点每k个一组翻转
    描述将给出的链表中的节点每k 个一组翻转,返回翻转后的链表如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。 数据范围:0≤n≤2000 ,1≤k≤2000 ,链表中每个元素都满足 0≤val≤1000要求空间复杂度 O(1),时间复杂度 O(n)......
  • Jenkins 添加节点
    SSHLauncher{host='192.168.19.92',port=22,credentialsId='a19f38a2-6fb5-404b-9a18-84f8db88cd60',jvmOptions='',javaPath='',prefixStartSlaveCmd='',suffixStartSlaveCmd='',launchTimeoutSeconds=6......