无线传感器网络能量均衡蚁群路由算法
滕志军, 张帆, 宋明辉
东北电力大学 信息工程学院,吉林省 吉林市 132012

作者简介:滕志军(1973-),男,教授,博士.研究方向:无线通信技术.E-mail:tengzhijun@163.com

摘要

针对蚁群路由算法容易形成环路及其能量分布不够均匀等问题,提出改进的蚁群路由算法。改进的算法在Hello包中增加蚂蚁标识组合项,并通过广播的方式存储到其他节点的邻居列表中,有效削弱了环路效应,同时修正信息素更新公式,提升多节点区域信息素更新的准确性,并引入能量差异因子,将能量差异因子作为信息素浓度更新的参考因素,改善了网络节点能量分布不均的问题,获得了更好的平衡。仿真结果表明改进算法可有效削弱环路效应并更好地均衡网络节点能量。

关键词: 信息处理技术; 无线传感器网络; 蚁群算法; 环路效应; 能量均衡
中图分类号:TN92 文献标志码:A 文章编号:1671-5497(2016)01-0327-06
Wireless sensor network energy balance ant colony routing algorithm
TENG Zhi-jun, ZHANG Fan, SONG Ming-hui
College of Information Engineering,Northeast Dianli University,Jilin 132012,China
Abstract

In order to solve the problem of loop and energy-unbalance in ant colony routing algorithm, an improved algorithm is proposed. In the proposed algorithm, the combination items of ant identity are added to the Hello package and stored in the neighbor lists of other nodes by broadcasting, which effectively weakens the routing loops. Simultaneously, the pheromone updating formula is corrected that the accuracy of pheromone updating is improved at multi-node region. An energy-difference factor is introduced to improve the node energy-balance in the network. Simulation results illustrate that the improved algorithm can greatly improve energy-unbalance and weaken the loop effect.

Keyword: informance processing; wireless sensor network; ant colony algorithm; loop effect; energy balance
0 引 言

无线传感器网络(WSN)是在多跳自组织网络的基础上通过加入传感器元件而形成的分布式网络, 这种分布式网络更接近物理世界。但同时传感器节点又受到计算能力和存储空间的限制, 这就要求节点间信息的传输要有效地利用能源, 以扩大无线网络的生存时间, 因此选取传输能量消耗较小的路由算法成为近年来WSN研究的热点[1]

蚁群算法[2]最早被利用来解决旅行商问题。蚁群算法是研究人员从自然界蚂蚁觅食行为中发现的群体行为规律, 大量蚂蚁通过不同的路径去寻找食物, 沿途蚂蚁会不断释放Pheromones(信息素)来标记路径信息, 蚂蚁会优先选取Pheromones较多的路径, 这样蚁穴和食物源之间距离较短的路径由于经过的蚂蚁较多而累积较高浓度的信息素[3]。即经过大量的蚂蚁搜索, 就会从蚁穴到食物源之间优化出一条最佳的路径。蚂蚁种群具备的这样一种单体简单群体智能的特点与无线传感器网络非常类似, 因此近年来引起中外研究人员的广泛兴趣[4, 5, 6, 7, 8]。本文通过研究和比较已有的蚁群优化算法, 并以EEABR(Energy-efficient ant-based routing)算法为基础, 针对其不足之处, 提出一种EEABR改进算法(Energy-efficient improved ant-based routing, EEIABR), 经过仿真验证, 改进算法可以有效地削弱环路效应并更好地均衡网络节点能量。

1 蚁群路由算法

文献[4]最早提出AntNet路由协议。节点每隔一段时间会向Sink节点发送前向蚂蚁, 并将访问过的节点地址存储在蚂蚁包k的包头, 即Mk中。前向蚂蚁到达Sink节点时, 随即转变成后向蚂蚁沿着Mk中存储的路径信息返回到Sink节点, 并更新该路径上的信息素。该算法的优点在于Mk中存储蚂蚁访问过的所有节点地址, 可以在下一跳节点的选择时防止环路的发生。但由于WSN中节点数目众多, 需要Mk具有较大的空间, 这对无线传输是不可取的。针对AntNet协议的不足, 国内外研究人员提出了相应的改进措施。文献[5]提出了一种蚁群路由算法— — ARA(Ant-based routing algorithm), 该算法通过蚂蚁的收发维护路由表, 减少数据包的类型, 并在节点信息素低于某个阈值时进入到休眠模式以节约能量。ARA的缺点在于节点过早地进入休眠, 容易形成局部最优, 同时优化路径上的节点会因为频繁传输而消耗更多的能量, 不利于全网能量的平衡。为了提高蚂蚁搜寻的效率, 王小明等[6]提出了一种基于能量与位置意识的ACO算法, 该算法利用定位技术(如GPS)来获得自身节点、邻居节点和Sink节点的位置信息。节点利用位置信息进行路由发现, 防止蚂蚁在优化路径时进行盲目探测。但该算法需要为节点配备定位装置, 增加了成本, 文献[7, 8]中虽然提出了可以通过位置已知的节点来计算其他节点位置的算法, 却仍在一定程度上增加了协议的复杂度, 而且对于移动节点, 该算法需要经常更新位置信息, 也一定程度地消耗了节点能量。文献[9]提出了EEABR路由算法, 该算法将蚂蚁中存储的节点ID减小到两条, 即最近一次访问的节点(蚂蚁上一跳地址)和将要访问的节点(蚂蚁下一跳地址), 同时信息素更新公式中引入路径平均能量和跳数作为信息素更新因子, 使路径优化进一步精确。但同时, 该算法也存在着一定的不足, 在信息素更新公式中, 将路由跳数与路径能量进行加减运算会使信息素的更新在节点较为密集的区域不够准确, 同时路径上的节点因为分布位置的不同会导致不均匀的能量消耗, 尤其是在靠近Sink节点的位置, 节点会因为频繁地转发数据包而消耗更多的能量, 而单纯地引入路径平均能量有可能导致优化路径中的节点过早死亡, 不利于全网生存周期的延长。由于蚂蚁包中只存放两条节点的ID信息, 容易形成蚂蚁环路。因此本文在EEABR协议的基础上提出改进的算法— — EEIABR, 通过在蚂蚁包中增加蚂蚁包序列号sq_num, 有效削弱蚂蚁环路效应, 同时修正信息素更新公式, 将路由跳数修正为多跳消耗的能量值, 进一步提升信息素更新的准确性, 并在信息素更新公式中引入节点能量与路径平均能量的偏离值, 使全网节点的能量消耗更加平均, 延长网络的生存周期。

2 改进的路由算法— — EEIABR

EEIABR算法采用EEABR算法的蚂蚁包分类, 分为Hello包和蚂蚁包两类。节点通过广播Hello包来维护邻居列表, 通过发送蚂蚁包来优化路径和传输信息。针对EEABR算法中容易形成环路和节点能量分布不均的缺点, 在Hello包、蚂蚁包、节点邻居表中增添pkt_src(发送蚂蚁包的源地址)和sq_num(蚂蚁包序列号)的组合项, 用以改善蚂蚁的环路效应, 同时重新定义了信息素更新公式, 提升节点能量分布均匀性。

2.1 改善蚂蚁环路效应

节点6向节点0发送前向蚂蚁包, 如图1所示。各节点的邻居节点如下, 6:(5), 5:(3, 4, 6), 4:(2, 3, 5), 3:(1, 2, 4, 5), 2:(1, 3, 4), 1:(0, 2, 3), 0:(1)。由于EEABR算法蚂蚁包头中存放的已访问节点只记录蚂蚁上一跳地址, 例如节点3记录的上一跳地址为节点5, 其只能保证蚂蚁包无法“ 回传” , 但如果节点3的下一跳节点为4或2, 就有可能形成像5-3-4-5或5-3-2-4-5等环路, 造成能量的浪费和传输的延迟。

图1 节点环路效应Fig.1 Node loop effect

为了改善上述的环路效应, 本文在节点邻居列表中添加pkt_src和sq_num的组合项(下文用< pkt_src, sq_num> 表示), 在发送蚂蚁包时, 在蚂蚁包头中添加下一跳节点地址naddr以及< pkt_src, sq_num> 。节点在广播Hello包时, 除了要广播自己节点地址和能量, 还应该广播邻居列表中的< pkt_src, sq_num> , 这样接收节点就会“ 知道” 自己的邻居节点转发过的蚂蚁包, 避免不必要的回传。假如节点6发送的蚂蚁包的标识为< 6, 1> , 按照假设路径6-5-3-4, 由于4的邻节点5和3都转发过标识为< 6, 1> 的蚂蚁包, 因此4就会优先选择节点2作为下一跳节点, 完成由路径6-5-3-4-2-1转发的蚂蚁包传输过程。

2.2 提升网络节点能量消耗的均衡性

当前向蚂蚁包到达Sink节点时, Sink节点会根据前向蚂蚁包携带的信息计算信息素更新公式, 并发送后向蚂蚁包。当后向蚂蚁包到达发送前向蚂蚁包的源节点时, 从源节点到Sink节点的路径信息素更新完成, 标志着一次完整的蚂蚁包收发过程结束。本文对信息素增量公式进行重新定义, 同时引入节点能量与平均能量的偏离值作为信息素增量公式的参考因子, 用以平衡网络节点的能量。

EEABR算法中路径信息素更新公式如式(1)所示[9]:

ΔTk=1C-EMink-FdkEAvgk-Fdk1

式中:C为节点的初始能量; EMink为蚂蚁包k访问路径上节点的最小能量; Fdk为前向蚂蚁访问过的节点数; EAvgk为路径上的节点平均能量。

通过公式推导, 可以得出当EMink< EAvgk时, Δ Tk随着Fdk的增加而减小, 同时引入EAvgkEMink可以起到一定的平衡网络节点能量的作用, 但却无法体现该条路径上节点能量是否均匀, 而且Fdk的增加不意味着路径能量消耗的增加, 尤其在节点分布较为密集的区域更加明显, 因此在路由跳数较多、节点间隔较小的路径会影响Δ Tk更新的准确性。

本文在公式(1)的基础上, 引入节点能量与路径能量的偏离值, 并重新定义信息素增量公式, 如(2)式所示:

ΔTk=1C-EMink-EFdkEAvgk-EFdk+1σk(r)2

式(2)将式(1)中的Fdk修改为EFdk, 即前向路径上的能量消耗EFdk=Fdk* e* Ant_length, 其中e为发送1比特信息所消耗的能量, Ant_length为蚂蚁包的长度。对式(2)分析得出, EFdk作为前向路径节点发送蚂蚁包所消耗的能量, σ k(r)为标识为k的后向蚂蚁从节点s返回到节点r时, 节点r的能量er与路径平均能量EAvgk的偏离值, 由式(3)求得:

σk(r)=(er-EAvgk)23

引入σ k(r)的意义在于:当erEAvgk相差过大时, 增加的信息素会相应地减少, 在发送下轮蚂蚁包时, 会避开能量相差过大的路径, 同时1k(r)作为单跳的更新与前半部分路径上的更新相互补充, 更能体现蚂蚁的学习性。

3 算法步骤与流程
3.1 路由算法步骤

步骤1 节点周期广播Hello包

节点通过广播Hello包的方式维护邻居列表, Hello包的结构如图2所示, 其中type为数据包类型, Hello_pkt_src为Hello包的源地址, < pkt_src, sq_num> 为本文添加的蚂蚁包标识组合项, 表明地址为pkt_src的节点所有转发过的蚂蚁包。energy为节点的能量, Phero为该路径上的信息素浓度。

图2 Hello包结构Fig.2 Structure of Hello package

步骤2 节点向Sink节点发送前向蚂蚁包

节点通过发送前向蚂蚁包来传输信息和优化路径。当节点与邻节点通过收发Hello包的方式建立联系后, 节点会从邻居列表中通过式(4)选取一个节点作为发送前向蚂蚁包的下一跳节点。

Pk(r, s)=T(r, s)αE(s)βuMkT(r, u)αE(u)β, ifsMk0, otherwise4

式中:Pk(r, s)为节点r下一跳选择节点s的概率; T(r, s)为路径(r, s)上的信息素浓度; E(s)为剩余能量函数, 定义为1/(C-es), 其中C为节点的初始能量, es为节点s的实际能量; Mk为邻居列表中转发过< pkt_src, sq_num> 蚂蚁包的节点集合; u为节点r的邻居列表中所有节点的集合; α β 分别表征信息素和能量的影响程度。节点邻居列表的结构如表1所示, 其中NeighbourAddr为邻居节点的地址, NeighbourEng为邻居节点的能量, Pheromone为本节点与邻节点路径信息素浓度, 需要说明的是, 当在接收方的邻居列表中没有发送方的记录时, 需要赋给Pheromone一个初始值。

表1 邻居节点列表结构 Table 1 Neighbor list structure

前向蚂蚁包的结构如图3所示。其中Type为数据包类型, pkt_src为数据包源地址, daddr为蚂蚁包下一跳地址, saddr为蚂蚁包上一跳的节点地址。Energy_sum为蚂蚁到达该节点时, 经过所有节点的能量总和, Energy_min为该条路径上节点的最小能量, toSintNode为布尔型变量, 表明蚂蚁包方向, hops为蚂蚁经过的节点数。

图3 前向蚂蚁包结构Fig.3 Structure of forward ant package

步骤3 Sink节点向源节点发送后向蚂蚁包

当前向蚂蚁包到达Sink节点后, 会生成后向蚂蚁包, 同时按照式(5)计算更新后的信息素。其中T(r, s)为路径(r, s)上的信息素浓度, ρ 为信息素蒸发系数, Δ Tk为信息素增量公式, 由式(2)得出。

T(r, s)=(1-ρ)Tk(r, s)+ΔTk5

后向蚂蚁包的结构如图4所示, 其中, Energy_avg为路径上节点的平均能量, 结合节点能量er, 通过式(3)求得能量差异σ k

图4 后向蚂蚁包结构图Fig.4 Structure of backward ant package

当后向蚂蚁包到达发送前向蚂蚁包的源节点时, 蚂蚁包随即被丢弃, 本轮蚂蚁包收发结束, 下一轮蚂蚁包收发开始。

3.2 蚂蚁包收发流程

图5为源节点向Sink节点发送前向蚂蚁包的流程图, 图6为Sink节点向源节点发送后向蚂蚁包的流程图。

图5 前向蚂蚁包发送流程Fig.5 Flow chat of forward ant package transmit

图6 后向蚂蚁包发送流程Fig.6 Flow chart of backward ant package transmit

4 EEIABR算法仿真
4.1 实验平台和协议添加过程

本论文的实验环境采用的是虚拟机Vmware9.0+Ubuntu10.04+NS2.34, 协议文件包括:eeiabr/eeiabr.cc、eeiabr/eeiabr.h、eeiabr/eeiabr_pkt.h、eeiabr/eeiabr_table.h、eeiabr/eeiabr_table.cc、eeiabr/eeiabr_queue.h、eeiabr/eeiabr_queue.cc。将eeiabr文件夹拷贝在ns-allinone-2.34/ns-2.34下, 并对ns-2.34文件夹下的common/packet.h、trace/cmu-trace.h、trace/cmu-trace.cc、tcl/lib/ns-packet.tcl、tcl/lib/ns-lib.tcl、queue/priqueue.cc进行修改, 并在Makefile文件中添加该协议的可执行文件。保存完成后打开terminal, 进入到ns-allinone-2.34/ns-2.34目录下依次运行make clean和make命令, 编译添加的.cc文件, 生成.o文件[10]。EEABR协议的添加过程与之相同。实验通过gawk脚本提取trace文件中的节点能量数据, 并通过Matlab进行绘图。

4.2 仿真实验及结果对比

设定该仿真环境为50 m× 50 m, 节点数量为25, 节点的初始能量(InitialEnergy)为20 J, 节点的发送功率(txPower)为0.6 W, 节点的接收功率(rxPower)为0.3 W, 节点空闲能量消耗(idlePower)为0.06 W, 节点通信距离为20 m, 仿真时间为100 s, 图7为节点的平均剩余能量随节点数目变化情况, 图8为节点最小剩余能量随节点数目的变化情况。

图7 节点平均剩余能量随节点数目变化Fig.7 Node average residual energy vs.node number

图8 节点最小剩余能量随节点数目变化Fig.8 Node minimum residual energy vs.node number

图7中, 当节点数目小于35时, 由于节点数目较少, EEABR算法环路效应不明显, 而EEIABR算法在Hello包中增加了< pkt_src, sq_num> 组合项, 增加了发送负担。因此EEIABR算法性能低于EEABR算法, 当节点数目大于40时, EEIABR算法由于削弱了环路效应, 性能开始高于EEABR算法。图8中, 由于EEIABR算法在信息素更新公式中引入了能量差异因子, 节点最小能量提升较为明显, 节点能量分布更为平均。因此EEIABR算法在节点数目较多、分布较为密集的场合对节点能量的平衡具有一定的优势。

为了进一步验证EEIABR算法在多节点时的性能, 保持50 m× 50 m的范围不变, 节点数目为65, 仿真时间范围为50~100 s, 其他设置不变。图9为节点平均剩余能量随时间的变化, 图10为节点最小剩余能量随时间的变化。

图9 节点平均剩余能量随时间的变化Fig.9 Node average residual energy vs.time

图10 节点最小剩余能量随时间的变化Fig.10 Node minimum residual energy vs. time

图9图10中可以看出, 当节点较多时, EEIABR算法的性能要优于EEABR算法。仿真说明, 蚂蚁包标识组合项和能量差异因子的引入可以更好地避免由于蚂蚁环路而消耗过多的发送能量, 在此基础上提升信息素更新的准确性, 使节点的能量分布更为平均, 说明适用于节点较多的无线传感器网络。

5 结束语

本文在深入研究EEABR算法的基础上, 针对容易形成环路和全网节点能量分布不够均匀的问题, 通过在邻居列表和Hello包中增加了< pkt_src, sq_num> 组合项, 削弱了蚂蚁环路效应。同时修正了后向蚂蚁包的信息素更新公式, 并引入了能量差异因子, 平衡了全网能量。为了验证改进的算法, 使用NS2开源网络仿真软件平台对EEABR和EEIABR分别进行仿真, 通过实验结果的比对和分析, 可以看出相比于EEABR算法, EEIABR算法在多节点情况下对削弱蚂蚁环路效应和平衡网络节点能耗方面优势明显, 对后续的研究有一定的参考价值。

The authors have declared that no competing interests exist.

参考文献
[1] 李超良, 胡春华. 无线传感器网络中面向动态多跳的非均匀分簇路由[J]. 中南大学学报: 自然科学版, 2011, 42(7): 2048-2053.
Li Chao-liang, Hu Chun-hua. A dynamic multihop non-uniform clustering routing protocol in wireless sensor networks[J]. Journal of Central South University (Science and Technology), 2011, 42(7): 2048-2053. [本文引用:1]
[2] 吴俊杰, 纪卓尚, 常会青. 船体装配线划线路径规划的蚁群算法[J]. 哈尔滨工程大学学报, 2012, 33(10): 1205-1210.
Wu Jun-jie, Ji Zhuo-shang, Chang Hui-qing. Ant colony algorithm for mark-line path planning[J]. Journal of Harbin Engineering University, 2012, 33(10): 1205-1210. [本文引用:1]
[3] 任秀丽, 梁红伟, 汪宇. 基于多路径蚁群算法的无线传感器网络的路由[J]. 计算机科学, 2009, 36(4): 116-118.
Ren Xiu-li, Liang Hong-wei, Wang Yu. Multipath routing of ant colony system in wireless sensor networks[J]. Computer Science, 2009, 36(4): 116-118. [本文引用:1]
[4] Di Caro G, Dorigo M. AntNet: distributed stigmergetic control for communication networks[J]. Journal of Artificial Intelligence Research, 1998, 9(1): 317-365. [本文引用:1]
[5] Mesut Gunes, Udo Sorges, Imed Bouazizi. ARA: the ant-colony based routing algorithm for MANETs[C]∥Proceedings of the International Conference on Parallel Processing Workshops, Aachen, 2002: 79-85. [本文引用:1]
[6] 王小明, 安小明. 具有能量和位置意识基于ACO的WSN路由算法[J]. 电子学报, 2010, 38(8): 1763-1769.
Wang Xiao-ming, An Xiao-ming. An energy and location aware ACO based routing algorithm for wireless sensor networks[J]. Acta Electronica Sinica, 2010, 38(8): 1763-1769. [本文引用:2]
[7] 叶蓉, 赵灵锴. 基于蚁群粒子群混合的无线传感器网络定位算法[J]. 计算机测量与控制, 2011, 19(3): 732-735.
Ye Rong, Zhao Ling-kai. Localization algorithm for wireless sensor network based on ACO-PSO[J]. Computer Measurement and Control, 2011, 19(3): 732-735. [本文引用:1]
[8] 马润泽, 余志军, 刘海涛. 一种距离无关的无线传感器网络定位算法[J]. 传感器与微系统, 2011, 30(11): 131-134.
Ma Run-ze, Yu Zhi-jun, Liu Hai-tao. A range-free localization algorithm for wireless sensor networks[J]. Transducer and Microsystem Technologies, 2011, 30(11): 131-134. [本文引用:1]
[9] Camilo T, Carreto C, Silva J S, et al. An energy-efficient ant-based routing algorithm for wireless sensor networks[C]∥The Fifth International Workshop on Ant Colony Optimization and Swarm Intelligence, Brussels, Bélgica, 2006: 49-59. [本文引用:1]
[10] 童孟军, 俞立, 郑立静, . 基于蚁群算法的无线传感器网络能量有效路由算法研究[J]. 传感技术学报, 2011, 24(11): 1632-1638.
Tong Meng-jun, Yu Li, Zheng Li-jing, et al. A study on the energy balance ant-based multi-path routing algorithm[J]. Chinese Journal of Sensors and Actuators, 2011, 24(11): 1632-1638. [本文引用:1]