基于MATLAB的TEEN分簇路由算法仿真系统
项目简介
本项目基于MATLAB平台设计并完整实现了一种针对无线传感器网络(WSN)的TEEN(Threshold sensitive Energy Efficient sensor Network protocol)分簇路由协议仿真系统。TEEN是一种响应式(Reactive)网络协议,专门应用于对环境变化响应要求较高且数据传输具有时间关键性的场景(如温度监测、防爆检测等)。
本仿真系统模拟了完整的无线传感器网络生命周期,包括网络初始化、节点分布、簇头选举、分簇形成以及基于双阈值机制的数据传输过程。通过引入硬阈值(Hard Threshold)和软阈值(Soft Threshold),系统实现了按需传输数据,从而大幅降低了网络能耗,延长了网络生存时间。
功能特性
- 网络环境构建:模拟100m x 100m的监测区域,包含100个随机分布的传感器节点和位于区域外部的基站(Sink节点)。
- 动态拓扑仿真:通过MATLAB图形界面动态展示节点分布、簇头位置、簇成员连线及节点死亡状态。
- TEEN核心协议实现:
*
响应式传输:区别于周期性上报,仅在环境参数满足特定剧烈变化条件时才发送数据。
*
双阈值机制:完整实现了硬阈值(HT)和软阈值(Soft Threshold)的逻辑判断。
- 能耗精确建模:采用一阶无线电能耗模型,区分自由空间模型(d^2)和多径衰落模型(d^4),并计算了发送、接收、数据融合及控制包交互的能耗。
- 统计分析:实时追踪并记录每轮的存活节点数、死亡节点数、剩余总能量以及基站接收到的数据包总量。
系统要求
- 开发环境:MATLAB
- 工具箱:基础MATLAB工具箱(无需特殊附加工具箱,主要依赖绘图和矩阵运算功能)
使用方法
- 确保MATLAB环境已安装。
- 打开包含
main.m 的文件夹。 - 运行
main.m 文件。 - 程序将启动图形化窗口,动态显示网络的每一轮运行状态,并在控制台输出当前仿真进度。
- 仿真结束后,系统将保存网络生存周期数据供后续绘图分析(注:代码末尾包含结果可视化的预留部分)。
代码实现逻辑详解
本项目的核心逻辑集中在 main.m 文件中,仿真流程严格遵循TEEN协议规范,具体实现细节如下:
1. 仿真参数与网络模型初始化
- 区域定义:设定监控区域为100x100米,基站(Sink)固定坐标为(50, 150),位于监测区域外部。
- 节点配置:初始化100个传感器节点,每个节点拥有0.5 Joules的初始能量。
- TEEN参数:
*
硬阈值 (HT):设置为100。只有感测数据绝对值大于此值时,节点才尝试发送。
*
软阈值 (ST):设置为2。只有当前感测值与上一次发送值的偏差绝对值超过此值时,才触发发送。
- 能耗参数:定义了ETX(发送)、ERX(接收)、Efs(自由空间放大)、Emp(多径放大)以及EDA(数据融合)的具体能耗数值。
2. 簇头选举阶段 (Cluster Head Election)
- 随机轮转机制:采用类似LEACH协议的概率性簇头选举算法。
- 选举逻辑:每个未在禁止周期内的节点生成一个随机数,若该随机数小于阈值 $T(n)$,则该节点当选为本轮簇头。
- 周期性重置:选为簇头的节点在随后的 $1/p$ 轮内(这里 p=0.1,即10轮)将不能再次当选,保证了网络能耗的均衡性。
3. 簇的形成 (Cluster Formation)
- 节点入簇:普通节点遍历所有当选的簇头,计算欧氏距离,选择距离最近的簇头加入。
- 控制包开销:代码中显式计算了普通节点发送“加入请求”控制包(100 bits)的能耗,以及簇头接收该请求的能耗。
- 可视化:每隔50轮,仿真界面会绘制灰色连线,展示普通节点与归属簇头的连接拓扑。
4. 数据感知与TEEN传输机制 (核心逻辑)
本部分是TEEN协议区别于其他协议的关键实现:
- 环境数据模拟:代码为每个节点模拟生成环境感测数据。为了体现软阈值的效果,数据基于节点上一次发送的值进行微小随机波动,并以5%的概率模拟突发极端数据。
- 双阈值判断逻辑:
节点仅在同时满足以下两个条件时,才会开启射频发送数据包(4000 bits):
1.
硬阈值条件:当前感测模拟值 (current_value) > HT (100)。
2.
软阈值条件:|当前值 - 上一次发送值| >= ST (2)。
*
满足条件:节点消耗发送能耗(根据距离选择自由空间或多径衰落模型),簇头消耗接收能耗,系统更新节点的
last_sent_val 为当前值。
*
不满足条件:节点不发送数据,仅消耗微量基本感知能耗,从而节省能量。
5. 数据融合与上行传输
- 簇头聚合:簇头统计接收到的成员数据包数量。若收到数据,簇头消耗数据融合能耗 (EDA)。
- 基站通信:簇头将聚合后的数据包直接发送至远端基站。此过程距离通常较远,极大概率触发多径衰落模型(Emp),消耗较高能量。
- 特殊处理:代码逻辑包含处理无成员发送数据的“空簇”情况,此时簇头虽处于活动状态但不向基站发送有效载荷。
6. 网络生命周期统计
系统在每一轮仿真结束时执行以下统计:
- 存活/死亡节点:统计能量耗尽(E <= 0)的节点数量。
- 关键指标记录:
*
FND (First Node Dead):首个节点死亡的轮数。
*
HND (Half Node Dead):半数节点死亡的轮数。
*
AND (All Node Dead):全部节点死亡的轮数。
- 流量统计:分别记录每轮发往簇头的数据包数和发往基站的数据包数,用于评估网络吞吐量。