💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
改进的LEACH协议基于圆形区域聚类增加网络寿命研究
摘要:无线传感器网络(WSN)在现代世界中扮演着重要角色。它是一种有用的技术,可以利用分布在广泛区域的小型传感器节点从系统的多个部分发送和接收数据。这些节点能够执行多种数据操作,如环境感知、数据收集、处理和其他操作。它们从嵌入在节点中的电池获取必要的能量来执行这些过程。在许多应用中,传感器节点往往体积小,配备了能量有限的小型电池。因此,减少能量消耗并尽可能延长网络的寿命非常重要。为此,开发了低能耗自适应聚类层次(LEACH)路由协议。本文中,开发了LEACH协议的改进模型,以进一步降低能量消耗,从而延长网络的寿命。
关键词:无线传感器网络(WSN)、传感器节点、LEACH协议、能量消耗、传感器寿命
无线传感器网络(WSN)是一种分散式网络,因其广泛的应用范围而受到重视,包括健康、智能建筑、安防和农业监测等领域[1]。WSN由大量微型、廉价且电池容量有限的节点组成,这些节点共同执行多项任务[2]。传感器节点在网络中相互通信,收集并发送有关监测对象的各种信息到汇聚点(基站),汇聚点进一步处理信息并将其报告给最终用户[3]。
为了完成这些任务,文献中提出了大量的协议。然而,WSN协议面临的主要问题是网络中的每个节点都有限的电池能量。增加网络寿命是设计网络时需要研究的重要挑战之一。由于传感器节点在感知、处理、传输数据和通信等活动中耗尽能量,其中通信是最大的能耗者,因此应制定管理计划以改善网络寿命[2]。
网络寿命是指第一个传感器节点耗尽所有电力并变为死节点的时间[3]。目前有许多种低能耗的协议可以增加网络的寿命,它们分为两组,即平坦型和分层型[4]。本文将讨论分层聚类类型。基于聚类的分层通过根据WSN应用的目的增加分层级别来延长寿命[5]。基于聚类的路由协议可以分为两大类:分布式和集中式。在分布式聚类中,节点是负责元素,而在集中式聚类中,基站是负责元素来执行数据传输过程[1]。
在早期研究中,对LEACH的许多类型进行了研究,在[6]中研究了经典的LEACH,并将其与非聚类算法进行了比较,其中第一个死节点的时间比非聚类算法长八倍。之后,对LEACH进行了许多修改以增加网络寿命或减少能耗,例如在[7]中,通过将聚类层次(CH)节点分布在整个网络中,开发了一种集中式LEACH。然而,它的问题在于需要全球定位系统(GPS)与基站通信,这将增加能耗。
一、LEACH协议的基本原理与局限性
1. 基本原理
LEACH(低功耗自适应集簇分层型协议)是无线传感器网络(WSN)中首个分簇路由协议,通过随机轮换簇头节点(Cluster Head, CH)实现能量均衡。其核心流程分为两阶段:
- 簇建立阶段:节点通过阈值公式 T(n)=p1−p⋅(rmod 1/p)T(n)=1−p⋅(rmod1/p)p 决定是否成为簇头(pp 为簇头比例,rr 为当前轮次)。当选簇头广播消息,其他节点根据信号强度加入最近簇头,形成簇结构。
- 稳定阶段:普通节点通过TDMA时隙向簇头发送数据,簇头进行数据融合后直接或通过多跳传输至基站(Base Station, BS)。
关键特性包括:
- 数据融合:减少冗余数据,降低通信开销。
- 动态分簇:每轮重新选举簇头,避免单节点能量快速耗尽。
2. 局限性
尽管LEACH显著延长了网络寿命(较传统协议提升约15%),其仍存在以下问题:
- 簇头分布不均:随机选举导致簇头可能集中或远离基站,引发“热区”(Hotspot)现象,加速节点死亡。
- 单跳通信能耗高:簇头与基站远距离直接通信能耗过大。
- 能量不均衡:未考虑节点剩余能量和位置差异,低能量节点可能被选为簇头。
- 静态网络假设:假设所有节点可直达基站,不适用于大规模或动态拓扑网络。
二、基于圆形区域聚类的改进策略
1. 簇头选择优化
改进方案通过引入圆形区域聚类和能量参数,优化簇头分布:
-
区域划分:将网络划分为多个同心圆区域,每区域独立选举簇头,避免簇头集中。例如,LEACH-KPPE协议利用K-means++算法按节点位置聚类,确保簇头均匀分布。
-
能量权重因子:簇头选举公式中加入剩余能量(EresEres)、与基站距离(dtoBSdtoBS)、区域密度(ρρ)等参数,例如改进阈值公式:
高能量、近基站、高密度区域的节点更可能当选簇头。
2. 多跳数据传输
- 簇间多跳路由:簇头通过链式或树状结构转发数据至基站,降低远距离传输能耗。例如,LEACH-COMR协议引入中继节点选择机制,优先选择剩余能量高且距离近的节点作为转发节点。
- 动态路径优化:结合Dijkstra算法生成最短路径树,实时调整路由以应对拓扑变化。
3. 能量均衡策略
- 动态簇规模控制:限制每簇成员数量,避免“极大簇”或“极小簇”。例如,LEACH-ZMH协议通过区域密度参数调整簇规模,平衡簇内能耗。
- 簇头轮换机制:当簇头能量低于阈值(如 Eres<0.5EavgEres<0.5Eavg)时触发簇内轮换,选择距离质心近且高能量的节点为新簇头。
三、实验数据与性能提升
1. 网络寿命延长
- O-LEACH协议:在100节点网络中,首个节点死亡时间(FND)较LEACH延迟62%,网络总寿命延长92%;200节点时寿命延长70%。
- LEACH-M协议:在100×100m²区域中,网络寿命延长33%,基站接收数据量增加68%。
- 分布式改进模型:通过均匀分布簇头,网络寿命提升50%以上,吞吐量同步增加。
2. 能耗均衡性
- LEACH-COMR协议:通过分簇优化和多跳传输,网络剩余能量分布方差降低46%,避免过早死亡。
- 基于区域密度的改进算法:能耗均衡性较LEACH提升54%,节点存活率显著提高。
3. 适用场景分析
- 小规模网络(节点数≤100):改进协议寿命延长效果更显著(如O-LEACH的92%)。
- 基站位置优化:当基站位于网络中心时,圆形区域聚类策略可最大化能耗均衡。
四、现有评价与不足分析
1. 优势
- 能耗均衡性:通过区域划分和能量参数优化,有效缓解“热区”问题。
- 扩展性:多跳机制支持大规模网络部署。
- 灵活性:动态簇头轮换和路径优化适应节点移动性。
2. 不足
- 计算复杂度:K-means++等聚类算法增加簇建立阶段的能耗。
- 依赖位置信息:需GPS或定位技术支持,增加硬件成本。
- 动态适应性有限:多跳路由表更新延迟可能影响实时性。
- 异质性支持不足:未充分融合高能节点与普通节点的差异。
五、未来研究方向
- 轻量级聚类算法:开发低复杂度的实时聚类方法,减少计算开销。
- 混合通信模式:结合单跳与多跳优势,动态选择最优传输路径。
- 跨层优化:整合MAC层与路由层协议,提升整体能效。
- 机器学习驱动:利用强化学习或深度信念网络预测节点状态,优化簇头选举。
📚2 运行结果
2.1 I-LEACH
2.2 LEACH
部分代码:
%% Create sensor nodes, Set Parameters and Create Energy Model
%%%%%%%%%%%%%%%%%%%%%%%%% Initial Parameters %%%%%%%%%%%%%%%%%%%%%%%
n=200; %Number of Nodes in the field
[Area,Model]=ILEACH_setParameters(n); %Set Parameters Sensors and Network
%%%%%%%%%%%%%%%%%%%%%%%%% configuration Sensors %%%%%%%%%%%%%%%%%%%%
createRandomSen(Model,Area); %Create a random scenario
load Locations %Load sensor Location
Sensors=ILEACH_configureSensors(Model,n,X,Y);
% ploter(Sensors,Model); %Plot sensors
deadNum=0; %Number of dead nodes
[deadNum,circlex,circley] =ILEACH_plotter(Sensors,Model);
%%%%%%%%%%%%%%%%%%%%%%%%%% Parameters initialization %%%%%%%%%%%%%%%%
countCHs=0; %counter for CHs
flag_first_dead=0; %flag_first_dead
initEnergy=0; %Initial Energy
for i=1:n
initEnergy=Sensors(i).E+initEnergy;
end
SRP=zeros(1,Model.rmax); %number of sent routing packets
RRP=zeros(1,Model.rmax); %number of receive routing packets
SDP=zeros(1,Model.rmax); %number of sent data packets
RDP=zeros(1,Model.rmax); %number of receive data packets
%total_energy_disipated=zeros(1,Model.rmax);
Sum_DEAD=zeros(1,Model.rmax);
CLUSTERHS=zeros(1,Model.rmax);
AllSensorEnergy=zeros(1,Model.rmax);
%%%%%%%%%%%%%%%%%%%%%%%%% Start Simulation %%%%%%%%%%%%%%%%%%%%%%%%%
global srp rrp sdp rdp
srp=0; %counter number of sent routing packets
rrp=0; %counter number of receive routing packets
sdp=0; %counter number of sent data packets
rdp=0; %counter number of receive data packets
%Sink broadcast start message to all nodes
Sender=n+1; %Sink
Receiver=1:n; %All nodes
Sensors=sendReceivePackets(Sensors,Model,Sender,'Hello',Receiver);
% All sensor send location information to Sink .
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。