目录
1.算法仿真效果
Matlab2024b测试如下:
2.MATLAB源码
13.............................................................
% 创建一个新的图形窗口,绘制 HEED 和 LEACH 协议下的总能量消耗对比图
figure
% 绘制 HEED 协议下的总能量消耗曲线
plot(T(1:2:end),EHdis(1:2:end),'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
% 保持当前图形,以便在同一图中绘制其他曲线
hold on
% 绘制 LEACH 协议下的总能量消耗曲线
plot(T_L(1:2:end),EHdis_L(1:2:end),'-r>',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.9,0.0]);
% 设置 x 轴标签为时间(秒)
xlabel('Time (s)');
% 设置 y 轴标签为能量(焦耳)
ylabel('Energy (j)')
% 设置图形标题为总能量消耗
title('总能耗')
% 添加图例,区分 HEED 和 LEACH 协议
legend('HEED','LEACH')
grid on
% 创建一个新的图形窗口,绘制 HEED 和 LEACH 协议下的存活节点数量对比图
figure
% 绘制 HEED 协议下的存活节点数量曲线
plot(T(1:2:end),AliveH(1:2:end),'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
% 保持当前图形,以便在同一图中绘制其他曲线
hold on
% 绘制 LEACH 协议下的存活节点数量曲线
plot(T_L(1:2:end),AliveH_L(1:2:end),'-r>',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.9,0.0]);
% 设置 x 轴标签为时间(秒)
xlabel('Time (s)');
% 设置 y 轴标签为存活传感器节点数量
ylabel('No of live Sensors nodes')
% 设置图形标题为传感器节点的生命周期
title('传感器节点寿命')
% 添加图例,区分 HEED 和 LEACH 协议
legend('HEED','LEACH')
grid on
% 创建一个新的图形窗口,绘制 HEED 和 LEACH 协议下的吞吐量对比图
figure
% 绘制 HEED 协议下的吞吐量曲线
plot(T(1:2:end),BitsH(1:2:end),'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
% 保持当前图形,以便在同一图中绘制其他曲线
hold on
% 绘制 LEACH 协议下的吞吐量曲线
plot(T_L(1:2:end),BitsH_L(1:2:end),'-r>',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.9,0.0]);
% 设置 x 轴标签为时间(秒)
xlabel('Time (s)');
% 设置 y 轴标签为吞吐量(数据包数量)
ylabel('Throughput (no of packets)')
% 设置图形标题为吞吐量(N 个传感器节点)
title('吞吐量')
% 添加图例,区分 HEED 和 LEACH 协议
legend('HEED','LEACH')
grid on
% 创建一个新的图形窗口,绘制 HEED 和 LEACH 协议下的存活节点数量对比图
figure
% 绘制 HEED 协议下的存活节点数量曲线
plot(T(1:2:end),N-AliveH(1:2:end),'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
% 保持当前图形,以便在同一图中绘制其他曲线
hold on
% 绘制 LEACH 协议下的存活节点数量曲线
plot(T_L(1:2:end),N-AliveH_L(1:2:end),'-r>',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.9,0.0]);
% 设置 x 轴标签为时间(秒)
xlabel('Time (s)');
% 设置 y 轴标签为存活传感器节点数量
ylabel('No of death Sensors nodes')
% 设置图形标题为传感器节点的生命周期
title('传感器节点寿命')
% 添加图例,区分 HEED 和 LEACH 协议
legend('HEED','LEACH')
grid on
3.算法概述
无线传感器网络(Wireless Sensor Network, WSN)由大量微型传感器节点组成,具有自组织、分布式和多跳通信等特点。由于节点能量有限,如何高效管理能量成为WSN设计的核心问题。聚类路由协议通过将节点划分为簇(Cluster),由簇头(Cluster Head, CH)负责数据聚合与转发,能够显著降低网络能耗。LEACH(Low-Energy Adaptive Clustering Hierarchy)和HEED(Hybrid Energy-Efficient Distributed Clustering)是两种典型的分层路由协议,本文将从数学建模、算法原理和性能分析等方面展开深入探讨。
3.1 LEACH协议原理与数学模型
LEACH协议采用周期性分簇机制,每个周期分为簇建立阶段和稳态数据传输阶段。通过随机轮换簇头,均衡节点能量消耗。其核心思想是:
1.节点以概率p竞选簇头
2.非簇头节点选择最近的簇头加入
3.簇头融合数据后发送至基站
LEACH协议的簇头选举概率公式为:
3.2 HEED协议原理与数学模型
HEED协议通过多轮选举和代价函数优化簇头分布,其创新点包括:
1.基于节点剩余能量的自适应概率调整
2.引入代价函数(如节点度数、距离)优化簇头位置
3.支持非均匀分簇以适应复杂网络环境
簇头选举算法
1.初始概率:
2.代价函数
3.多轮选举机制
第一轮:节点以Piinit概率自荐为临时簇头;
后续轮次:剩余节点以Pinext=min(2⋅Piprev,1)概率重试;
最终阶段:未加入任何簇的节点自荐为簇头;
3.3 性能对比
4.部分参考文献
[1]宋宁博,范敏,王玲.基于HEED的无线传感器网络负载均衡路由算法[J].计算机工程与应用, 2015.DOI:JournalArticle/5b3bb7c3c095d70f008a21c0.
[2]王桐,张永红,赵春晖,等.无线传感器网络中基于HEED算法的错误容忍和多路径优化方法.2014[2025-03-30].
5.程序内容,运行方法和源码获取
5.1 程序包括
matlab程序,程序中文注释,参考文献
5.2 运行方法
1.在matlab的左侧的当前文件夹窗口;
2.按先运行Runme.m
5.3 源码获取
step1.打开博客主页的左侧推广栏查看,或扫博客文章底部信息
step2.然后用电脑打开网页链接,输入文章标题搜索