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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 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

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天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
103 80
|
7天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
53 31
|
3天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
25 1
|
14天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
20小时前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
2天前
|
机器学习/深度学习 人工智能 算法
基于GRNN广义回归网络和MFCC的语音情绪识别matlab仿真,对比SVM和KNN
该语音情绪识别算法基于MATLAB 2022a开发,可识别如悲伤等情绪,置信度高达0.9559。核心程序含中文注释及操作视频。算法采用MFCC特征提取与GRNN广义回归网络,通过预加重、分帧、加窗、FFT、梅尔滤波器组、对数运算和DCT等步骤处理语音信号,实现高效的情绪分类。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
226 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
142 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
111 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
7月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度