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

本文涉及的产品
大数据开发治理平台 DataWorks,不限时长
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: 基于LEACH路由协议的网络性能matlab仿真,包括数据量,能耗,存活节点

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

12.jpg
13.jpg
14.jpg
3.核心程序
clc;
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
4.本算法原理
LEACH(Low Energy Adaptive Clustering Hierarchy)是一种应用于无线传感器网络的分层路由协议。它的主要目标是通过自适应地创建和调整集群来延长网络的生命周期。LEACH的实现基于以下原理和数学公式。

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

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

Threshold = P * num_of_cluster_heads

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

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

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

1.数据量

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

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中,节点的能耗主要来自于发送和接收数据,以及进行数据融合的能耗。我们可以使用以下公式来计算网络的总能耗:
    Total_Energy = Energy_Transmit + Energy_Receive + Energy_Fusion

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

  1. 存活节点

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

    其中,num_of_nodes是网络中总节点的数量,num_of_dead_nodes是网络中已经死亡的节点的数量。

    以上就是基于LEACH路由协议的网络性能的matlab仿真的基本原理、数学公式以及性能指标的详细介绍。在实际仿真过程中,还需要考虑其他许多因素,例如节点的分布、传输模型的选取、数据融合算法的优化等。这些因素都会对仿真结果产生影响,因此需要根据实际应用场景进行合理的设定和分析。

相关文章
|
1天前
|
监控
基于偏微分方程离散化计算的地下换热器建模与温度检测matlab仿真
**摘要:** 探索地下换热器的建模与温度检测,使用MATLAB2022a进行系统仿真,关注传热过程的热传导、对流和辐射。通过离散化偏微分方程建立数值模型,模拟温度场,考虑地质特性和水流影响。建模以网格单元描述温度变化,采用热电偶、红外和光纤测温技术验证模型并监控温度,各具优缺点。光纤测温法提供高精度和抗干扰的分布式监测。
|
1天前
|
算法 数据安全/隐私保护
基于GA遗传优化算法的Okumura-Hata信道参数估计算法matlab仿真
在MATLAB 2022a中应用遗传算法进行无线通信优化,无水印仿真展示了算法性能。遗传算法源于Holland的理论,用于全局优化,常见于参数估计,如Okumura-Hata模型的传播损耗参数。该模型适用于150 MHz至1500 MHz的频段。算法流程包括选择、交叉、变异等步骤。MATLAB代码执行迭代,计算目标值,更新种群,并计算均方根误差(RMSE)以评估拟合质量。最终结果比较了优化前后的RMSE并显示了SNR估计值。
15 7
|
1天前
|
算法 物联网
机会路由MORE协议的matlab性能仿真
摘要: 本研究关注无线Mesh网络中的机会路由与网络编码融合技术,特别是MORE协议。机会路由利用无线特性提高网络效率,而网络编码提升网络吞吐量。在分析这两项技术的基础上,提出改进MORE的方案,优化节点选择和路径测量,以增强网络性能。使用MATLAB2022a进行仿真验证。尽管MORE独立于MAC层并应用线性网络编码,但其ETX测量可能存在不准确问题,该问题成为改进的重点。
|
2天前
|
存储 传感器 算法
基于ACO蚁群优化算法的WSN网络路由优化matlab仿真
摘要(Markdown格式): - 📈 ACO算法应用于WSN路由优化,MATLAB2022a中实现,动态显示迭代过程,输出最短路径。 - 🐜 算法模拟蚂蚁寻找食物,信息素更新与蚂蚁选择策略确定路径。信息素增量Δτ += α*τ*η,节点吸引力P ∝ τ / d^α。 - 🔁 算法流程:初始化→蚂蚁路径选择→信息素更新→判断结束条件→输出最优路由。优化WSN能量消耗,降低传输成本。
|
1月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
48 1
|
3天前
|
Linux
linux网络统计信息和端口占用情况基本语法
linux网络统计信息和端口占用情况基本语法
|
10天前
|
网络协议 安全 Ubuntu
7 个有用的免费 Linux 网络隧道
【7月更文挑战第4天】
46 0
7 个有用的免费 Linux 网络隧道
|
23天前
|
安全 物联网 Linux
学习Linux对网络安全的重要性
**学习Linux对网络安全至关重要:** 1. 开源操作系统广泛应用于服务器、网络设备,掌握Linux是安全专家必备技能。 2. Linux内置安全特性,如最小权限和防火墙,加上丰富的安全工具,提供强大保障。 3. 可定制性允许灵活配置,满足安全需求,开源社区提供持续更新和教育资源。 4. 学习Linux能提升攻防能力,用于系统加固和渗透测试,适应跨平台安全场景。 5. 随着云计算和物联网发展,Linux在网络安全中的角色日益关键。
47 3
|
10天前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
10天前
|
算法 网络协议 Shell
掌握Linux网络:深入理解TC —— 你的流量控制利器
目前需要做一款关于Linux下对于某IP限制的一个工具(QOS),在网上寻找了许多关于TC的教程,大多数都是一些比较基础的教学,且多数都是对网口的一些限制,然后自己研究了一段时间,最后有一些小小的了解,故在此分享给大家。