当前位置: 首页 > news >正文

【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代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

相关文章:

  • 最新 MySQL 面试笔记解析直接爆砍 39K 月薪,拿走不谢
  • Jenkins实战中的一些技巧
  • webpack定制化 加载与插件[css加载器、html插件、image打包配置、babel代码兼容、vue加载器及配置]
  • 线程与进程的关联
  • Linux环境下fastdfs部署
  • 解锁新技能《Redis SETBIT用法》
  • STL应用 —— queue(队列)
  • 【计算机网络】OSI七层网络参考模型
  • 第二十章 控制进程(一)
  • 移动Web第四天 1 移动适配
  • JavaFx 实现按钮防抖和软件重启(Kotlin)
  • 2022年全国最新消防设施操作员(高级消防设施操作员)真题题库及答案
  • Rest学习环境搭建笔记
  • JavaScript-DOM节点的相关操作
  • 猿创征文|HCIE-Security Day49:AC准入控制SACG
  • 【5+】跨webview多页面 触发事件(二)
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 2019年如何成为全栈工程师?
  • AWS实战 - 利用IAM对S3做访问控制
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • HTTP 简介
  • JavaScript类型识别
  • scrapy学习之路4(itemloder的使用)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpringBoot几种定时任务的实现方式
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 动态魔术使用DBMS_SQL
  • 记录:CentOS7.2配置LNMP环境记录
  • 京东美团研发面经
  • 坑!为什么View.startAnimation不起作用?
  • 码农张的Bug人生 - 初来乍到
  • 如何设计一个微型分布式架构?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 思否第一天
  • 王永庆:技术创新改变教育未来
  • 赢得Docker挑战最佳实践
  • 原生Ajax
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • # Java NIO(一)FileChannel
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #define用法
  • #NOIP 2014# day.2 T2 寻找道路
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十)T检验-第一部分
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Sql Server 保留几位小数的两种做法