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.