无线传感器网络 LEACH 分层路由协议仿真系统
项目介绍
本项目是一款基于 MATLAB 环境开发的无线传感器网络(WSN)仿真工具,专注于实现经典的 LEACH(Low Energy Adaptive Clustering Hierarchy)分层路由协议。系统通过数学建模和动态演示,模拟了传感器节点在能量受限环境下的集群演化、数据传输以及生命周期损耗过程。该仿真系统能够为研究 WSN 能量效率、网络覆盖质量和协议优化提供直观的数据支持。
主要功能特性
- 动态拓扑可视化:实时展示节点分布状态。存活节点以蓝色圆圈表示,死亡节点以黑色叉号表示,基站(Sink)以红色三角形标识,每一轮迭代均会动态更新节点的存活状态。
- 能量模型精确建模:集成了经典的一阶无线通信能量损耗模型,区分自由空间衰减(d²)与多径衰减(d⁴)两种模式,并详细计算了发射、接收和数据融合(EDA)的能量开销。
- 分层路由机制模拟:完整实现了 LEACH 的分轮运行机制,包括基于阈值函数的簇首竞争选举、非簇首节点就近加入簇、簇内数据汇聚以及簇首至基站的长距离传输。
- 全生命周期指标监控:自动记录并分析网络关键指标,包括第一节点死亡时间(FND)、全节点死亡时间(LND)、每轮剩余总能量以及基站累计接收到的数据包量。
- 参数化仿真设置:支持自定义区域大小、节点总数、预期簇首比例、初始能量及各类感应器能耗系数。
核心实现逻辑
系统运行流程严格遵循 LEACH 协议的标准生命周期,具体实现阶段如下:
- 环境与参数初始化:
在 100m x 100m 的区域内随机布设 100 个初始化能量相同的节点。基站被安置在区域坐标系外侧(50, 150)的位置,以模拟远距离汇聚场景。
- 存活状态与能量评估:
在每一轮仿真开始前,系统会遍历所有节点,检查其剩余能量是否大于零。若能量耗尽,则标记为死亡并更新统计变量。同时,计算当前网络中所有存活节点的能量总和。
- 簇首选举阶段(Setup Phase):
每个节点产生一个 0 到 1 之间的随机数。系统根据当前轮次和预设的簇首比例计算阈值 T(n)。若随机数小于阈值且该节点在当前循环周期内未曾担任簇首,则该节点当选为簇首(CH),其标识属性改为 'C'。
- 分群与关联阶段:
普通节点(Non-CH)根据接收信号强度(在代码中转化为欧几里得距离)寻找距离最近的簇首。随后,普通节点计算将数据包发送至对应簇首所需的能耗。
- 数据传输阶段(Steady-state Phase):
*
普通节点发送:普通节点消耗能量向簇首发送 4000 bits 的数据包。
*
簇首处理:簇首节点消耗接收能耗获取所有成员数据,并叠加数据融合能耗进行信息处理。
*
长距离传输:簇首将融合后的数据直接发送至基站。系统会根据簇首与基站的距离自动切换自由空间或多径衰减模型计算发射能耗。
- 孤立节点降级处理:
若某一轮次未能产生簇首,网络将进入降级模式。此时存活的普通节点会尝试直接与基站通信。系统将此类通信的数据传输效率设定为较低水平,以反映非协同传输的低能效性。
关键算法与实现细节分析
- 动态阈值算法:代码通过 mod 运算实现了 LEACH 的轮转机制,确保每个节点在 1/p 轮内都有机会互斥地成为簇首。这有效平衡了整个网络的能耗压力,避免了个别节点因过度负担而过早死亡。
- 自适应能量损耗计算:
系统通过计算节点间(或节点与基站间)的距离与阈值距离 d0 的关系,自适应应用不同的衰减模型。这种细节处理使得近距离簇内通信(d < d0)与远距离回传(d > d0)的能效差异得以量化。
- 数据融合(Data Aggregation)开销:
代码在簇首节点的能量扣减中引入了 EDA 参数,这反映了由于执行数据去重、压缩等操作所带来的额外计算能耗。
仿真结束后,系统会自动生成四张核心图表(存活节点曲线、总能量曲线、数据包接收总量曲线、网络生命周期柱状图),通过图形化手段直观呈现该协议在当前参数配置下的表现。
使用方法
- 启动 MATLAB 软件,将工作目录切换至本项目文件夹。
- 运行仿真脚本,MATLAB 控制台将开始打印当前轮次和节点存活信息。
- 在仿真过程中,可以通过弹出的 Figure 1 窗口观察网络的拓扑演化路径。
- 仿真结束后,Figure 2 窗口将展示完整的性能评估数据,同时 MATLAB 命令行窗口会输出 FND、LND 和总接收数据包的具体数值。
系统要求
- 环境支持:MATLAB R2016b 或更高版本。
- 硬件要求:建议内存 4GB 以上,以保证动态拓扑渲染的流畅性。
- 依赖库:仅需 MATLAB 标准内置函数库(无需安装额外的工具箱)。