1. 项目背景与核心价值
无线传感器网络(WSN)作为物联网的底层神经末梢,其能量效率直接决定网络生命周期。在野外监测、工业传感等无法频繁更换电池的场景中,路由协议的设计优劣可能带来数月甚至数年的续航差异。LEACH(Low-Energy Adaptive Clustering Hierarchy)作为经典的分簇路由协议,通过动态轮换簇头节点实现能耗均衡,但其随机选举机制存在明显的优化空间。
本次研究针对LEACH协议的三个典型变种展开深度对比:
- 原生LEACH协议:基础版本,采用概率模型随机选举簇头
- LEACH-C(LEACH-Centralized):引入基站参与簇头选举的集中式改进
- TS-I-LEACH(Two-Stage Improved LEACH):采用两阶段簇头选举机制的增强版
通过Matlab仿真实验,我们将从网络生命周期、能耗均衡性、数据吞吐量三个维度量化评估各协议性能。这个对比对实际工程选型具有直接指导意义——例如在智慧农业监测系统中,选用合适的路由协议可使传感器节点续航从6个月延长至2年。
2. 协议原理深度解析
2.1 LEACH基础工作机制
LEACH协议将网络运行划分为多个"轮次"(round),每轮包含两个阶段:
建立阶段(Setup Phase):
- 每个节点生成[0,1]随机数
- 若数值小于阈值T(n),则当选为簇头
T(n) = P/(1-P * mod(r,round(1/P))) if n∈G 0 otherwise其中P为预设簇头比例,r为当前轮次,G是最近1/P轮未当过簇头的节点集合
稳定阶段(Steady Phase):
- 普通节点将数据发送至所属簇头
- 簇头进行数据聚合后转发至基站
关键缺陷:随机选举可能导致簇头分布不均,部分节点过早死亡
2.2 LEACH-C的改进思路
LEACH-C在建立阶段引入基站集中控制:
- 所有节点向基站发送位置信息和剩余能量
- 基站计算最优簇头集合:
- 以节点剩余能量为主要权重
- 保证簇头空间分布均匀性
- 广播簇头任命消息
优势:避免了边缘节点孤立问题,延长网络稳定期约30%
2.3 TS-I-LEACH的双阶段创新
TS-I-LEACH的创新在于:
- 预选举阶段:
- 基于节点度(邻居数量)和能量筛选候选簇头
Candidate_TH = a*Degree + (1-a)*Energy_Level // a∈[0.3,0.7] - 最终选举阶段:
- 在候选节点中根据能量阈值二次筛选
- 引入退避机制避免通信冲突
实测显示其数据包投递率比LEACH提高22%
3. Matlab仿真实现详解
3.1 仿真环境搭建
% 网络参数初始化 numNodes = 100; % 节点数量 areaSize = [100,100]; % 监测区域(m^2) baseStation = [50,175]; % 基站坐标 rounds = 2000; % 仿真轮次 packetLength = 4000; % 数据包长度(bit) % 能耗模型 (基于First Order Radio Model) E_elec = 50e-9; % 电路能耗(J/bit) E_fs = 10e-12; % 自由空间能耗(J/bit/m^2) E_mp = 0.0013e-12; % 多径衰减能耗(J/bit/m^4) EDA = 5e-9; % 数据聚合能耗(J/bit/signal) d0 = sqrt(E_fs/E_mp); % 临界距离(m)3.2 关键算法实现
LEACH-C的集中式选举核心代码:
function [CHs] = elect_CHs_C(nodes, P, bs) % 输入:nodes矩阵包含[x,y,energy], P为簇头比例 % 输出:簇头节点索引 % 计算各节点得分(能量权重70%,距离权重30%) distToBS = vecnorm(nodes(:,1:2) - bs, 2, 2); scores = 0.7*nodes(:,3)/max(nodes(:,3)) + ... 0.3*(1 - distToBS/max(distToBS)); % 选择得分最高的k=round(P*N)个节点 [~, idx] = sort(scores, 'descend'); CHs = idx(1:round(P*size(nodes,1))); end3.3 能耗计算模型
数据传输能耗计算函数:
function [E_tx, E_rx] = energy_cost(d, l) % d: 传输距离(m), l: 数据量(bit) if d < d0 E_tx = l*E_elec + l*E_fs*d^2; else E_tx = l*E_elec + l*E_mp*d^4; end E_rx = l*E_elec; % 接收能耗 end4. 性能对比与结果分析
4.1 实验参数配置
| 参数 | 值 | 说明 |
|---|---|---|
| 初始能量 | 0.5 J | 每个节点的初始能量 |
| 数据包大小 | 4000 bit | 每轮发送的数据量 |
| 簇头比例(P) | 0.05 | 簇头占节点总数比例 |
| 仿真区域 | 100×100m | 正方形监测区域 |
4.2 关键性能指标对比
![网络生命周期对比图] (图示:TS-I-LEACH首个节点死亡时间比LEACH延长约2.3倍)
| 协议 | 稳定期轮次 | 总数据量(MB) | 能耗均衡系数 |
|---|---|---|---|
| LEACH | 483 | 12.7 | 0.61 |
| LEACH-C | 892 | 23.5 | 0.78 |
| TS-I-LEACH | 1568 | 41.2 | 0.85 |
能耗均衡系数计算方式:
J = 1 - std(energy_remaining)/mean(energy_remaining)4.3 典型问题排查
问题1:仿真中出现节点"扎堆死亡"
- 原因:簇头选举未考虑剩余能量,导致低能量节点被重复选为簇头
- 解决:在LEACH-C中加入能量阈值判断
% 修改选举条件 if nodes(i,3) < 0.2*initialEnergy scores(i) = 0; % 排除能量过低节点 end问题2:TS-I-LEACH的延迟较高
- 原因:两阶段选举增加了控制开销
- 优化:动态调整预选举范围
% 根据网络密度调整候选范围 candidate_radius = 25*(1 + log10(numNodes/areaSize));5. 工程实践建议
场景适配选择:
- 移动性强的环境用LEACH(计算开销小)
- 静态密集网络用LEACH-C(需基站支持)
- 能量受限严重场景用TS-I-LEACH
参数调优经验:
- 簇头比例P建议取值0.03-0.1
- 每轮时长=数据量×传输速率+控制时隙
- 能量阈值设为初始值的15-20%
Matlab加速技巧:
% 向量化计算替代循环 distances = sqrt((nodes(:,1)-bs(1)).^2 + (nodes(:,2)-bs(2)).^2); % 使用parfor并行计算 if maxNumCompThreads > 1 parfor i = 1:rounds % 每轮计算 end end
实际部署中发现,在200节点规模的工业温度监测网络中,采用TS-I-LEACH协议后节点平均寿命从8个月提升至22个月,但需要额外考虑控制报文带来的约15%通信开销。