【WSN通信】基于最佳簇半径的无线传感器网络分簇路由算法附matlab代码
1 内容介绍
无线传感器网络(WirelessSensorNetwork,WSN)是由若干个分布在被监控范围内的传感器节点构成的网络,这些节点以随机或者确定位置分布的形式布置在被监测范围内,可以收集温度、湿度、光照条件、地震活动等方面的数据,在军事和民用环境中有着非常广泛的应用。由于传感器节点数量较多,计算能力、内存和传感器的电源功率有限,能量问题就成了无线传感网络需要解决的关键技术之一[1]。为了解决上述问题,无线传感器网络中的路由算法的设计极为重要。无线传感器网络中,路由协议技术主要有两种:平面型路由协议以及分层型路由协议[2]。在第一种平面型路由技术中,所有节点都被平等对待,比较有利于相互协作。在网络中,一些协议要求部分节点不仅仅只是要收集、存储周围的数据,还需要作为中继节点转发来自其他节点的数据,使得这类传感器节点的能量消耗过快而提前失去工作能力,从而致使网络的瘫痪失效[3]。在第二种分层型路由算法中,通过分层的形式将整个大网络分成多个互不相关的集群,将这个集群称为簇[4]。每个簇由簇内成员节点和簇头组成,其中,簇头承担数据转发的功能,负责收集节点收集的信息,并将其传送给基站,而且可以缩短传输距离,进而降低能耗。本文提出一种基于最佳簇半径的分簇路由算法LEACH⁃OR(LowEnergyAdaptiveClusteringHierarchybasedonOptimalclusterRadius)算法。该算法主要思想是根据网络范围大小和簇头数目初步划分网络,首先计算出每个小网络的最优半径,按照该半径对网络进行划分,使簇的分布更加均匀。其次在进行簇头选取时,加入节点当前剩余能量和距离的控制因子。优化簇头的选举阈值公式,使簇头选举更加均衡合理,簇与基站之间的数据传输采用多跳的方式,以减小通信间的能耗。对比仿真验证了该路由算法的优越性,其可以有效地平衡网络的能量损耗,提高能量利用效率,最终实现增加网络寿命的目标。
文献[5]提出的LEACH(LowEnergyAdaptiveClusteringHierarchy)算法是一种最具代表性的分层型路由算法。通过设计好的分层算法和节点轮流当选簇头的工作方式来平衡网络的能量损耗,但是在LEACH算法中簇头的选取和分布具有随机性,当能量小或者位置较为偏远的节点被选择为簇头时会加快节点的失效。韩广辉等人提出了一种节能路由协议LEACH⁃improved算法[6]。LEACH⁃improved算法通过增加间距算子、剩余能量算子和节点密度算子对阈值公式进行优化,解决了随机选择簇头造成网络能耗过快的问题。黄利晓等人提出了LEACH⁃E(LEACHbasedonEnergy)算法[7]。该算法在簇头选择的阈值公式里引入了节点的剩余能量和网络当前平均能量,使得节点能量比平均能量多的成员节点具有更大概率被选作簇头。普通节点的数据包中含有节点的能量数据,将其转发给基站以获取当前整个网络的能量平均值,使基站也可当作簇头以降低网络的能耗。LEACH⁃improved与LEACH⁃E两种算法通过改进阈值的计算公式,一定程度上可以减小能耗,但其没有解决簇头分布不均匀以及单跳传送能耗过大的问题。
1.1网络模型
1.假设在一个设定范围大小的监测范围内,随机布置多个传感器节点,并且这些节点持续对该区域进行监测。这些传感器节点具有以下性质[8]:
1)监测范围大小已知,传感器节点在监测范围内随机布置。
2)传感器节点的电量是有限的,放置后每个节点的ID固定不变,且坐标公开。
3)网络中传感器和基站的位置确定后均不会产生变动。
4)每个节点拥有的功能一样,具有同样的计算和数据融合能力。
5)节点布置完成后将不能修复,即传感器不能进行二次充电。
6)所有节点的传输功率可以依据传输的距离自动调整。
1.2能耗模型
本文采用一阶无线电模型作为能量消耗模型。节点在发送数据时,采用发送电路发送数据,并且使用放大电路对信号进行放大;接收端接收数据时,采用接收电路解析数据[9]。节点与节点间产生数据通信时,节点的能量消耗与发送端和接收端的距离大小有关。当发送端节点向间距为d的接收端节点传送数据时,发送端消耗的能量大小为:
2 仿真代码
clc;
clear;
%% 1.初始参数设定模块
%.传感器节点区域界限(单位 m)
xm = 200;
ym = 200;
% (1)汇聚节坐标给定
sink.x = 0;
sink.y = 0;
% 区域内传器节数
n = 200;
% 簇头优化比例(当选簇头的概率)
p = 0.1;
% 能量模型(单位 J)
% 初始化能量模型
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;
% 最大循环次数
rmax = 2000;
% 算出参数 do
do = sqrt(Efs/Emp);
% 包大小(单位 bit)
packetLength = 4000; % 数据包大小
%% 绘图比较
r = 0:rmax;
figure;
plot(r, STATISTICS.DEAD, 'r', 'linewidth', 2);
xlabel 'Time(Round)'; ylabel 'Number of nodes dead';
figure;
plot(r, STATISTICS.ALIVE, 'r', 'linewidth', 2);
xlabel 'Time(Round)'; ylabel 'Number of nodes alive';
figure;
plot(r, STATISTICS.PACKETS_TO_BS, 'r', 'linewidth', 2);
xlabel 'Time(Round)'; ylabel 'Total number of packets received by base station';
figure;
plot(r, STATISTICS.COUNTCHS, 'r', 'linewidth', 2);
xlabel 'Time(Round)'; ylabel 'Number of cluster heads selected';
%STATISTICS,结构体数组,包括下面的5个变量;
%countCHs(r+1),每一轮所选出的簇头数目;
%packets_TO_BS(r+1),基站收到的数据包总数;
%PACKETS_TO_CH(r+1),簇头收到的数据包总数;
%first_dead,第一个节点死亡的时间;
%teenth_dead=r,10%的节点死亡的时间;
%dead(r+1),每一轮的死亡节点数;
%alive(r+1),每一轮的活动节点数。
3 运行结果
4 参考文献
[1]武一, 李家兴, 范书瑞,等. 基于最佳簇半径的无线传感器网络分簇路由算法[J]. 现代电子技术, 2021, 44(4):4.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
【WSN通信】基于最佳簇半径的无线传感器网络分簇路由算法附matlab代码相关推荐
- 基于最佳簇半径的无线传感器网络分簇路由算法
文章目录 一.理论基础 1.能耗模型 2.基于最佳簇半径的分簇路由算法 (1)分簇优化 (2)簇间通信 二.仿真实验 三.参考文献 一.理论基础 1.能耗模型 本文采用一阶无线电模型作为能量消耗模型. ...
- 【LEACH协议】基于matlab最佳簇半径的无线传感器网络分簇路由算法【含Matlab源码 2087期】
⛄一. 数据融合的LEACH协议简介 1 基于自适应数据融合的LEACH协议 1.1 基本定义和概念 无线传感器网络中的一个簇可以用一个无向加权全连通图G=(V,E)来表示,V是簇中所有传感器节点的集 ...
- 【机械】基于简化几何解法的六轴机械臂位置规划附matlab代码
1 内容介绍 基于简化几何解法的六轴机械臂位置规划附matlab代码 2 部分代码 clc; clear; %载入数据 importfile('shuiping.mat'); theta_shuipi ...
- 情感识别:基于ELM、SOM分类器实现心率变异性信号情感识别,附matlab代码
情感识别:基于ELM.SOM分类器实现心率变异性信号情感识别,附matlab代码 情感识别是一项有趣而又具有挑战性的任务.它可以用于识别人类的情绪状态,从而在许多领域中产生影响,例如医疗保健.人工智能 ...
- 无线传感器网络--分簇或者不分簇
我的硕士研究方向是"无线传感器网络",不过,一直没在这里说过,正好昨晚实验室开会,轮到我汇报工作,然后就讲了篇论文,那么,纪念下我的方向,把昨天晚上讲的PPT贴出来吧.
- 【语音识别】基于MFCC和MEL倒频系数实现声纹识别附matlab代码
1 内容介绍 提出了以Mel频率倒谱系数(Mel Frequency Cepstrum Coefficients,MFCC)和MEL倒频系数作为特征提取技术,以KNN作为分类器的语音识别方法,实验结果 ...
- 【预测模型-GRNN预测】基于有限增量进化广义回归神经网络LIEV-GRNN实现数据回归预测附matlab代码
1 内容介绍 在本文中,基于有限增量进化和基于距离的剪枝对在线模型动态系统开发了一种进化一般回归神经网络.此外,建议使用基于方差的方法来调整 GRNN 中的平滑参数以适应在线应用.将所提出的模型与不 ...
- 【滤波跟踪】基于EKF、时差和频差定位实现目标跟踪附matlab代码
1 内容介绍 三星时差无源定位系统多采用基于高程约束下时差测量值转换为距离差进行 定位,若卫星相对于辐射源存在运动,则截获到同一辐射源信号频率存在多普勒 频移.由于卫星间一直都处在运动状态,各观测站接 ...
- 【图像检测】基于计算机视觉实现地质断层结构的自动增强和识别附matlab代码
1 内容介绍 在本文中,我们提出了一个用于自动增强和识别活动海断层的框架,通常使用测深图像与地震活动相关联. 据我们所知,基于图像分析方法的海断层自动识别问题尚属首次. 首先,我们计算 Slope 和 ...
最新文章
- Xamarin.Forms的相对布局RelativeLayout
- 20180315 代码错题(1)
- 软件测试用python一般用来做什么-做软件测试的, python应该掌握成怎么样 ?
- openfeign 负载均衡_再谈openfeign,聊聊它的源代码
- SharePoint里如何设置People picker值为当前登录用户值
- python父亲节符号_菲菲用python编程绘制的父亲节礼物
- DaDa英语宣布12月31日起全面停止所有外教服务
- Play静态文件调用
- rkmedia 中的行人检测
- mysql schemata_SCHEMATA · xiaoboluo768/mysql-system-schema Wiki · GitHub
- java.lang.UnsupportedOperationException: Required method instantiateItem was not overridden
- Cors跨域(三):Access-Control-Allow-Origin多域名?
- VLIW Microprocessor Hardware Design
- novipnoad电影网站分析
- Navicat Premium 15 注册出现 No All Pattern Found! File Already Patched?
- Umi3.5配置全局路由及菜单
- 笔记本的麦克风录不了音说不了话
- oracle数据库 dmp文件,数据库DMP文件损坏怎么修复
- 计算机读不了硬盘分区,对移动硬盘分区失败计算机不识别的修复
- 使用GitHub、Gitee作为图片仓库,CSDN文档引入