基于LEACH路由协议的网络性能matlab仿真,包括数据量,能耗,存活节点

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: - **LEACH协议**在WSN中通过分簇减少能耗,普通节点向最近簇头发送数据,簇头融合后发送给基站。本项目研究LEACH在不同初始能量、数据包及控制包长度条件下的网络性能,如剩余节点、能量、接收数据量和累计接收量。

1.程序功能描述
LEACH的原理在于它将传感器节点分为两类:簇头节点和普通节点。普通节点将数据发送给距离自己最近的簇头节点,然后簇头节点将收集到的数据融合后发送给基站。这种机制可以减少网络中节点的能耗,并且能够提高数据融合比例,减少传输数据量。本课题将分别对比leach协议在不同初始能量,不同数据包长度,以及不同控制包长度的条件下,网络的剩余节点数目,剩余能量,网络接收到的数据量以及网络累计接收数据量。

2.测试软件版本以及运行结果展示
MATLAB2022a版本运行

1.jpeg
2.jpeg
3.jpeg
4.jpeg
5.jpeg
6.jpeg
7.jpeg
8.jpeg
9.jpeg
10.jpeg
11.jpeg
12.jpeg

3.核心程序

clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')

x_area           = 100; %仿真场地大小  
y_area           = 100;
Num_sink         = 200; %节点数目
packet_Length    = 4000;%数据包长度    
ctrPacket_Length = 100; %控制包长度
rmax             = 2000;
Eo               = 0.3;%初始能量

%运行leach代码
[least_sink_number1,least_engry1,get_data_per_sink1,get_data_all1] = func_Leach(x_area,y_area,Num_sink,packet_Length,ctrPacket_Length,rmax,Eo);
Eo               = 0.4;%初始能量
[least_sink_number2,least_engry2,get_data_per_sink2,get_data_all2] = func_Leach(x_area,y_area,Num_sink,packet_Length,ctrPacket_Length,rmax,Eo);
Eo               = 0.5;%初始能量
[least_sink_number3,least_engry3,get_data_per_sink3,get_data_all3] = func_Leach(x_area,y_area,Num_sink,packet_Length,ctrPacket_Length,rmax,Eo);




steps=40;
figure;
plot(1:steps:length(least_sink_number1),least_sink_number1(1:steps:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on;
plot(1:steps:length(least_sink_number2),least_sink_number2(1:steps:end),'-mo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.5,0.9,0.0]);
hold on;
plot(1:steps:length(least_sink_number3),least_sink_number3(1:steps:end),'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
hold on;

grid on;
title('剩余节点数目个数');
legend('初始能量0.3','初始能量0.4','初始能量0.5');


figure;
plot(1:steps:length(least_engry1),least_engry1(1:steps:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on;
plot(1:steps:length(least_engry2),least_engry2(1:steps:end),'-mo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.5,0.9,0.0]);
hold on;
plot(1:steps:length(least_engry3),least_engry3(1:steps:end),'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
hold on;
grid on;
title('剩余能量');
legend('初始能量0.3','初始能量0.4','初始能量0.5');



figure;
plot(1:steps:length(get_data_per_sink1),get_data_per_sink1(1:steps:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on;
plot(1:steps:length(get_data_per_sink2),get_data_per_sink2(1:steps:end),'-mo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.5,0.9,0.0]);
hold on;
plot(1:steps:length(get_data_per_sink3),get_data_per_sink3(1:steps:end),'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
hold on;

grid on;
title('节点接收到的数据');
legend('初始能量0.3','初始能量0.4','初始能量0.5');



figure;
plot(1:steps:length(get_data_all1),get_data_all1(1:steps:end),'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on;
plot(1:steps:length(get_data_all2),get_data_all2(1:steps:end),'-mo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.5,0.9,0.0]);
hold on;
plot(1:steps:length(get_data_all3),get_data_all3(1:steps:end),'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
hold on;


grid on;
title('累计接收到的数据');
legend('初始能量0.3','初始能量0.4','初始能量0.5');
12_003m
AI 代码解读

4.本算法原理
LEACH(Low Energy Adaptive Clustering Hierarchy)是一种应用于无线传感器网络的分层路由协议。它的主要目标是通过自适应地创建和调整集群来延长网络的生命周期。LEACH的实现基于以下原理和数学公式。

    LEACH的原理在于它将传感器节点分为两类:簇头节点和普通节点。普通节点将数据发送给距离自己最近的簇头节点,然后簇头节点将收集到的数据融合后发送给基站。这种机制可以减少网络中节点的能耗,并且能够提高数据融合比例,减少传输数据量。

   在LEACH中,每个节点都有一个阈值,当节点的能量低于这个阈值时,该节点就会停止作为簇头节点的工作,转为普通节点。这个阈值是通过以下公式计算的:
AI 代码解读

Threshold = P * num_of_cluster_heads

其中,P是一个预先设定的常量,num_of_cluster_heads是网络中簇头节点的数量。

   在LEACH中,节点首先随机选择是否成为簇头节点。如果它选择成为簇头节点,那么它会向网络中所有其他节点广播一个包含自己ID和成为簇头节点意愿的消息。当消息收到时,普通节点会根据距离簇头节点的远近,以及节点的剩余能量来选择加入哪个簇。
AI 代码解读

在仿真过程中,我们需要考虑以下几个性能指标:

1.数据量

    在LEACH中,每个簇头节点收集并融合其所属簇内所有节点的数据,然后发送给基站。因此,数据量的大小与簇内节点的数量以及每个节点发送的数据量有关。我们可以使用以下公式来计算数据量:
AI 代码解读

Data = num_of_cluster_heads num_of_nodes_per_cluster data_per_node

其中,num_of_cluster_heads是簇头节点的数量,num_of_nodes_per_cluster是每个簇内的节点数量,data_per_node是每个节点发送的数据量。

  1. 能耗

    在LEACH中,节点的能耗主要来自于发送和接收数据,以及进行数据融合的能耗。我们可以使用以下公式来计算网络的总能耗:
    
    AI 代码解读

    Total_Energy = Energy_Transmit + Energy_Receive + Energy_Fusion

其中,Energy_Transmit是发送数据的能耗,Energy_Receive是接收数据的能耗,Energy_Fusion是进行数据融合的能耗。这些能耗可以通过每个节点的传输距离、传输速率、处理能力等因素计算得出。

  1. 存活节点

     在仿真过程中,我们需要追踪网络中存活节点的数量。存活节点是指其能量仍高于阈值的节点。在LEACH中,如果节点的能量低于阈值,它会停止作为簇头节点的工作,转为普通节点。我们可以通过以下公式来计算存活节点的数量:
    
    AI 代码解读

    Num_Alive_Nodes = num_of_nodes - num_of_dead_nodes

     其中,num_of_nodes是网络中总节点的数量,num_of_dead_nodes是网络中已经死亡的节点的数量。
    
     以上就是基于LEACH路由协议的网络性能的matlab仿真的基本原理、数学公式以及性能指标的详细介绍。在实际仿真过程中,还需要考虑其他许多因素,例如节点的分布、传输模型的选取、数据融合算法的优化等。这些因素都会对仿真结果产生影响,因此需要根据实际应用场景进行合理的设定和分析。
    
    AI 代码解读
目录
打赏
0
0
0
0
213
分享
相关文章
基于GA遗传优化的三维空间WSN网络最优节点部署算法matlab仿真
本程序基于遗传算法(GA)优化三维空间无线传感网络(WSN)的节点部署,通过MATLAB2022A实现仿真。算法旨在以最少的节点实现最大覆盖度,综合考虑空间覆盖、连通性、能耗管理及成本控制等关键问题。核心思想包括染色体编码节点位置、适应度函数评估性能,并采用网格填充法近似计算覆盖率。该方法可显著提升WSN在三维空间中的部署效率与经济性,为实际应用提供有力支持。
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
141 12
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。
248 16
基于GA遗传优化的WSN网络最优节点部署算法matlab仿真
本项目基于遗传算法(GA)优化无线传感器网络(WSN)的节点部署,旨在通过最少的节点数量实现最大覆盖。使用MATLAB2022A进行仿真,展示了不同初始节点数量(15、25、40)下的优化结果。核心程序实现了最佳解获取、节点部署绘制及适应度变化曲线展示。遗传算法通过初始化、选择、交叉和变异步骤,逐步优化节点位置配置,最终达到最优覆盖率。
OSPF在大型网络中的应用:高效路由与可扩展性
OSPF在大型网络中的应用:高效路由与可扩展性
637 1
OSPF路由汇总:优化网络的强大工具
OSPF路由汇总:优化网络的强大工具
243 1
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
141 4
数据结构之数据中心网络路由(BFS)
本文介绍了数据中心网络路由中使用广度优先搜索(BFS)算法的重要性及其应用。随着数据中心从集中式大型机系统发展到分布式架构,高效的数据路由成为确保低延迟、高吞吐量和网络可靠性的关键。BFS通过系统地探索网络层次,从源节点开始向外遍历,确保发现最短路径,特别适合于数据中心网络环境。文中还提供了BFS算法的具体实现代码,展示了如何在数据中心网络中应用该算法来查找节点间的最短路径,并讨论了BFS的优缺点。
130 0
数据结构之数据中心网络路由(BFS)
IP 路由:网络世界的导航仪
IP 路由:网络世界的导航仪
105 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等