【LEACH协议】基于matlab实现无线传感器网络LEACH与DEEC协议

简介: 【LEACH协议】基于matlab实现无线传感器网络LEACH与DEEC协议

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

⛄ 内容介绍

无线传感器网络(Wireless Sensor Network, WSN)技术是一门新兴的网络技术,它将成千上万颗传感器节点布置到需要监控的区域,通过其自身的自组网能力,组成一个可以在较大范围内进行数据采集和处理的自组织网络。无线传感器网络在民用与军用方面有非常高的价值,它已经应用到军事领域、生物医学领域、环境的监控等多种实际应用领域中,并具有很好的实用性和先进性。目前,国内外科研领域都非常重视无线传感器网络的发展并进行了重点研究。无线传感器网络包含多项相关技术,其中主要包括路由协议、时间同步、数据融合、定位技术等等。由于无线传感器网络节点的能量有限,如果节点能量耗尽,其就成为死亡节点影响网络功能。因此,一个具有较好节能效果的路由协议就显得至关重要。无线传感器网络路由协议的分类很多,本文主要针对分层次的路由协议进行研究。低功耗自适应集簇分层型协议(Low-Energy Adaptive Clustering Hierarchy, LEACH)路由协议就是典型的分层路由协议,它有节能和鲁棒性好优点,但是也有着分布不均匀,分簇阶段并未考虑节点剩余能量和距离等因素,不适应现代应用环境。

⛄ 部分代码

 

clc;

clear all;

close all;

%1.初始参数设定模块

%.传感器节点区域界限(单位 M)

xm=100;

ym=100;

%(1)汇聚节坐标给定

sink.x=0.5*xm;

sink.y=0.5*ym;

%区域内传器节数

n=100

%簇头优化比例(当选簇头的概率)

p=0.05;

P=0.05;

%能量模型(单位 焦)

%初始化能量模型

Eo=0.5;

%Eelec=Etx=Erx

ETX=50*0.000000001;

ERX=50*0.000000001;

%Transmit Amplifier types

Efs=10*0.000000000001;

Emp=0.0013*0.000000000001;

%Data Aggregation Energy

EDA=5*0.000000001;

%高能量节点超出一节点能量的百分比

a=1;

%最大循环次数

rmax=5000

%算出参数 do

do=sqrt(Efs/Emp);

Et=0;

%2.无线传感器网络模型产生模块

%构建无线传感器网络,在区域内均匀投放100个节点,并画出图形

for i=1:1:n

   S1(i).xd=rand(1,1)*xm;

   S2(i).xd=S1(i).xd;

   S3(i).xd=S1(i).xd;

   S4(i).xd=S3(i).xd;

   XR4(i)=S4(i).xd;

   XR3(i)=S3(i).xd;

   XR2(i)=S2(i).xd;

   XR1(i)=S1(i).xd;

   S1(i).yd=rand(1,1)*ym;

   S2(i).yd=S1(i).yd;

   S3(i).yd=S1(i).yd;

   S4(i).yd=S3(i).yd;

   YR4(i)=S4(i).yd;

   S4(i).G=0;

   YR3(i)=S3(i).yd;

   S3(i).G=0;

   YR2(i)=S2(i).yd;

   YR1(i)=S1(i).yd;

   S1(i).G=0;

   S2(i).G=0;

   S1(i).E=Eo*(1+rand*a);

   S2(i).E=S1(i).E;

   S3(i).E=S1(i).E;

   S4(i).E=S3(i).E;

   E3(i)= S3(i).E;

   E4(i)= S4(i).E;

   Et=Et+E3(i);

 

   %initially there are no cluster heads only nodes

   S1(i).type='N';

   S2(i).type='N';

   S3(i).type='N';

   S4(i).type='N';

end

 

S1(n+1).xd=sink.x;

S1(n+1).yd=sink.y;

S2(n+1).xd=sink.x;

S2(n+1).yd=sink.y;

%3.网络运行模块

%簇头节点数

countCHs1=0;

cluster1=1;%此定义的目的仅仅是给定一个1开始的下标参数,真正的簇头数应该还减去1

flag_first_dead1=0;

flag_teenth_dead1=0;

flag_all_dead1=0;

%死亡节点数

dead1=0;

first_dead1=0;

teenth_dead1=0;

all_dead1=0;

%活动节点数

allive1=n;

%counter for bit transmitted to Bases Station and to Cluster Heads

packets_TO_BS1=0;

packets_TO_CH1=0;

%(1)循环模式设定

for r=0:1:rmax     %该 for 循环将下面的所有程序包括在内,直到最后一 end 才结束循环

   r

 %每过一个轮转周期(本程序为10次)使各节点的S(i).G参数(该参数用于后面的簇选举,在该轮转周期内已当选过簇头的节点不能再当选)恢复为零

 if(mod(r, round(1/p) )==0)

   for i=1:1:n

       S1(i).G=0;

       S1(i).cl=0;

   end

 end

%(2)死亡节点检查模块

dead1=0;

for i=1:1:n

   %检查有无死亡节点

   if (S1(i).E<=0)

       dead1=dead1+1;  

       %(3)第一个死亡节点的产生时间(用轮次表示)

       %第一个节点死亡时间

       if (dead1==1)

          if(flag_first_dead1==0)

             first_dead1=r;

             flag_first_dead1=1;

          end

       end

       %10%的节点死亡时间

       if(dead1==0.1*n)

          if(flag_teenth_dead1==0)

             teenth_dead1=r;

             flag_teenth_dead1=1;

          end

       end

       if(dead1==n)

          if(flag_all_dead1==0)

             all_dead1=r;

             flag_all_dead1=1;

          end

       end

   end

   if S1(i).E>0

       S1(i).type='N';

   end

end

STATISTICS.DEAD1(r+1)=dead1;

STATISTICS.ALLIVE1(r+1)=allive1-dead1;

%(4)簇头选举模块

countCHs1=0;

cluster1=1;

for i=1:1:n

  if(S1(i).E>0)

  temp_rand=rand;      

  if ( (S1(i).G)<=0)  

      %簇头的选举,当选的簇头会把各种相关信存入下面程序所给定的变量中

       if(temp_rand<= (p/(1-p*mod(r,round(1/p)))))

           countCHs1=countCHs1+1;

           packets_TO_BS1=packets_TO_BS1+1;

           PACKETS_TO_BS1(r+1)=packets_TO_BS1;

            S1(i).type='C';

           S1(i).G=round(1/p)-1;

           C1(cluster1).xd=S1(i).xd;

           C1(cluster1).yd=S1(i).yd;

⛄ 运行结果

⛄ 参考文献

[1]张子辰. 基于LEACH协议的无线传感器网络路由协议的研究[D]. 太原理工大学, 2015.

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
4月前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
139 0
|
4月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
413 0
|
4月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
271 2
|
3月前
|
机器学习/深度学习 数据采集 存储
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
概率神经网络的分类预测--基于PNN的变压器故障诊断(Matlab代码实现)
358 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
169 0
|
4月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
101 8
|
4月前
|
算法 数据挖掘 区块链
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
基于遗传算法的多式联运车辆路径网络优优化研究(Matlab代码实现)
138 2
|
3月前
|
传感器 机器学习/深度学习 数据采集
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
【航空发动机寿命预测】基于SE-ResNet网络的发动机寿命预测,C-MAPSS航空发动机寿命预测研究(Matlab代码实现)
239 0
|
4月前
|
传感器 数据采集 存储
【无线传感器】使用 MATLAB和 XBee连续监控温度传感器无线网络研究(Matlab代码实现)
【无线传感器】使用 MATLAB和 XBee连续监控温度传感器无线网络研究(Matlab代码实现)
|
4月前
|
机器学习/深度学习 编解码 并行计算
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
【创新未发表!】基于BKA算法优化-BP、HO算法优化-BP、CP算法优化-BP、GOOSE算法优化-BP、NRBO算法优化-BP神经网络回归预测比较研究(Matlab代码)
215 0