基于菌群觅食优化算法的无线传感网层次化路由方法
技术领域
本发明涉及一种基于在无线传感网中的路由选择方法,主要利用菌群觅食优化算法来解决传感器节点的路由选择问题,属于无线传感网、群智能算法和人工智能应用领域。
背景技术
无线传感网是由部署在监测区域内大量的廉价微型传感器节点通过无线通信方式形成的一个多跳自组织网络系统,其目的是协作地感知、采集和处理网络覆盖区域中感知对象的信息,并发送给观察者。无线传感网节点的分布式分布、自适应性和智能性使得传感器网络具有很强的信息获取、处理能力,并广泛应用于环境预测与预报系统、医疗护理和军事战场情报的获取等众多领域。在这些特定领域中,这些网络节点可以看作是具有一定信念、期望、意图和能力的智能节点。每个节点部署后的行为和工作状态主要取决于自身或与其他节点、覆盖环境的交互。无线传感网节点工作状态的转换是网络自组织运行的重要基础。
在无线传感网中,智能节点按一定路径访问网络节点进行数据的本地收集和处理并携带处理结果访问其它节点,一旦所携带数据满足应用所需精度将终止访问返回观测节点,智能节点路由解决访问网络节点的顺序和路径,是无线传感网中节点路由选择的核心问题之一。
无线传感网是集成了监测、控制以及无线通信的网络系统,节点数目众多,节点分布密集,同时单个节点具有的能量、处理能力、存储能力和通信能力都十分有限。在无线传感网中,节点的能量受限的特性是制约网络生命周期的关键因素,有效、均衡利用传感网中的有限能量是延长网络生存时间的有效方法。当前无线传感网中基于查询的路由机制在通信过程中利用一条路径进行数据的传输,这种机制在面对网络攻击或者其它灾害时往往不能够及时反馈。在传感器网络中,路由选择的设计不仅要关心单个节点的能量消耗,同时更关心整个网络能量的均衡消耗,这样才能延长整个网络的生命周期。符合这种特征的算法就有菌群觅食优化算法。细菌觅食优化算法(Bacterial Foraging Optimization Algorithm,BFOA)由K.M.Passino于2002年基于Ecoli大肠杆菌在人体肠道内吞噬食物的行为,提出的一种新型仿生类算法。该算法因具有群体智能算法并行搜索、易跳出局部极小值等优点,成为生物启发式计算研究领域的又一热点。菌群觅食优化算法是模拟大肠杆菌在复杂环境下的觅食行为而提出的一种优化算法,细菌觅食优化算法在步骤上主要可以分为下面几个步骤:(1)问题可行解的空问映射成菌群集合的搜索空间(2)确定适应值函数(3)进行趋化、聚集、繁殖和迁徙等操作(4)在新旧个体中选择优胜者形成新的种群,然后判断这些细菌是否满足要求,若没有则利用 刚产生的菌群进行新一轮的趋化、聚集、繁殖和迁徙等操作,在这些操作进行完之后将种群中的最优菌群还原成为一个可行解作为问题的最优解。
在细菌觅食优化算法中,主要的优化操作有四个,分别是趋化、聚合、繁殖和迁徙,它们的作用和特点为:(1)趋化操作:趋化是指细菌向富养区域聚集的行为,在趋化过程中,细菌运动模式包括前进、翻转。细菌向任意方向移动单位步长定义为前进,而翻转是取一个新的方向。当细菌完成一次前进后,若适应值得到改善,将沿同一方向继续移动若干步,直至适应值不再改善,或达到预定的移动步数临界值,否则通过翻转寻找新的方向。(2)聚集操作:在菌群寻找食物的过程中,细菌之间通过相互作用来完成聚集行为。细菌之间既存在引力也存在斥力,引力使得细菌聚集在一起,斥力使得细菌有一些独立的行为。(3)繁殖操作:当细菌达到临界趋化次数,细菌将进行繁殖。根据健康指数排序,淘汰较差的一半,保留较好的一半,并将较好的一半一分为二,子细菌拥有和母细菌相同的位置及步长特征;(4)迁徙操作:细菌在繁殖操作结束后,进行迁徙操作,以特定的概率选取部分细菌随机迁徙到其他位置,剩余细菌的位置不变。该操作增加了细菌跳出局部最优解的可能性,使菌群算法具有较好的收敛性。
在无线传感网中,需要布置大量节点,且每个节点都受到能量的限制,具有较短的生命周期,这些特性和培养液中的细菌数量大,生命周期短的特点具有很大的相似性,同时细菌优化算法具有操作简单、收敛速度快、易跳出局部解等特性,所以利用该算法研究节点间的路由问题具有较好的优势。
发明内容
技术问题:本发明的目的是为无线传感网设计一条低耗能的基于菌群觅食优化算法的无线传感网层次化路由方法,首先对节点进行自适应分簇,再通过细菌觅食优化算法整合出整体路由的最佳方案,解决无线传感网优化求解问题。
技术方案:本发明将菌群优化算法和无线传感网的层次化路由将结合,综合考虑了传感网节点的剩余能量和传输耗能等因素,提出一种新的路由方法实现无线传感网信息传输路径的优化。
一、体系结构
本发明所述的路由选择设计的结构包括自适应分簇方法和在此基础上的基于细菌优化算法的路由算法。
自适应分簇方法包括两个部分:簇的建立和簇的重构。
(1)簇的建立。针对于能量分布不均匀的网络,在局部范围内对节点的能量进行排序, 保存能量较高的两个节点,一个做簇头,一个做备用簇头。各区域选定簇头节点后,参与排序的节点则直接从属于选出的簇节点,完成簇的建立。然后在稳定阶段通过相关路由算法完成到目的节点的数据传输。
(2)簇的自适应重构过程。簇的重构具有自适应性,算法根据整体节点能量的分布情况,决定下一次簇的重构的时间点。
基于细菌优化算法的路由算法主要包括:趋化操作、聚集、繁殖操作和迁徙操作。
(1)趋化操作
在趋化操作中,细菌根据周围细菌的密度来计算的自己的趋化步长,即取以它为中心的邻居节点的平均距离,细菌的旋转角度不再是个随机值,而是根据周围节点的剩余能量等因素来决定细菌将要旋转的方向。
(2)聚集操作
聚集操作体现了菌群算法的群智能特性,它表示菌群群体在当前细菌所处的位置处所产生的作用力之和。聚集行为可以看成对细菌适应值的修正,来使细菌达到聚集的目的。
(3)繁殖操作
在执行完趋化行为、聚集行为之后,进行繁殖操作。健康度定义为单个细菌在趋化操作中所经历位置的适应值的代数和。根据健康度的定义对整个菌群按照健康度排序。细菌健康度高一半直接丢弃。细菌健康度较低的一半通过二分裂分裂成两个子细菌。
(4)迁徙操作。
细菌在繁殖操作结束后,进行迁徙操作,以特定的概率选取部分细菌随机迁徙到其他位置,剩余细菌的位置不变。该操作增加了细菌跳出局部最优解的可能性。
二、方法流程
第一阶段:用自适应分簇方法对节点分簇
步骤1:簇建立阶段:针对于能量分布不均匀的网络,在局部范围内对节点的能量进行排序,保存能量最高的两个节点,一个作为簇头节点,另一个为备用簇头节点,两簇头节点交替工作;各区域选定簇头节点后,参与排序的节点则直接从属于选出的簇节点,完成簇的建立;当簇内能量值低于平均能量值30%时,簇将开始重建;
步骤2:数据通信阶段:通过细菌优化算法完成到目的节点的数据传输;
第二阶段:基于细菌优化算法选择路由路径
在分簇完成后,利用菌群群体智能的特性,通过趋化、聚集、繁殖、迁徙的迭代操作完成最优路径的选择,
步骤21.趋化操作
对细菌觅食优化算法来说,步长越小越有助于进行更精密的搜索,但会减缓算法的收敛速度;而步长越大越能加快算法的收敛速度,但会增加降低算法的求解精度;采用自适应变步长的方法,根据该细菌到邻居的细菌的平均距离来动态改变步长,使算法更加适应环境变化,加快源目节点间路由优化的过程;细菌在翻转操作时,翻转角度不再是随机值,而是根据周围节点的剩余能量和传输耗能,更新引诱度表,选择引诱度最高的节点作为细菌将要前进的方向。
步骤22.聚集操作
聚集行为可以是趋化操作的一部分,它主要的作用是对细菌的自适应值进行修正,通过细菌间的作用力加快菌群的聚集;
步骤23.繁殖操作
对S个细菌的健康度按从小到大进行排序,并按排列顺序分成长度相等的两个子序列Slow和Shigh,丢弃子序列Shigh中的S/2个细菌及其搜索路径;保留Slow子序列中的S/2个细菌及其搜索路径,同时生成S/2个子细菌,子细菌和母细菌具有相同的位置参数,但是步长减少为原来的10%。
步骤24.迁徙操作
先对菌群健康度按升序排序,对健康度值排在Shigh子序列中的细菌,以概率Pm迁徙到一个随机位置,剩余细菌的位置不变,这样在不破坏当前最优解结构的情况下,增加了细菌到达最优解的概率;
步骤25.选择最优路径
重复步骤21-23,直到前向包到达目的节点,并且向该路发送回溯细菌,按照路径节点方向顺序到达源节点接收到回溯细菌开始发送数据,沿着上述最优路径,完成信息传输。
有益效果:本发明所述的细菌觅食优化算法的节点路由选择设计,首先通过自适应分簇方法对随机部署的节点进行分簇管理,然后通过细菌觅食优化算法的迭代规则,找出一条全局最优的传输路径。具体来说,本发明所述的方法具有如下的有益效果:
(1)在簇的建立过程中,引进了自适应机制,减少了周期性簇的重建所带来的较大的能量消耗,从而可以有效延长网络的生存期。
(2)由于细菌菌群本身的群智能特性,使得众多的节点以一种协作方式有效的结合起来,并对算法进行了优化,从而使算法具有快速的收敛能力,能在较短的时间内得到最优路径解。
(3)充分考虑了路径传输能耗和节点剩余能量等因素,使得本发明所提出的路由方法能够均衡的消耗网络中的能量,延长了网络的生命周期。
附图说明
图1是基于细菌觅食优化算法的无线传感网路由流程图。
具体实施方式
1、构建自适应分簇的结构
在无线传感网中对节点进行分簇:首先对局部范围内节点的能量按从大到小进行排序,保存能量较高的两个节点,一个做簇头,一个做备用簇头。各区域选定簇头节点后,参与排序的节点则直接从属于选出的簇节点。当局部区域能量值低于平均能量值30%时,簇将开始重建。
2、构建基于细菌觅食优化算法的路径选择
分簇完成后,任选一节点为源节点,汇聚节点为目标节点,由源节点广播一个前行细菌,每个前行细菌包含种群ID,代数,当前位置,源节点,目的节点信息,以及记录前行路径的栈。当中间节点接受到一个前行细菌时,它首先把节点ID加入到栈中,同时估算细菌感知范围内节点的剩余能量和到达此节点的能量消耗,生成引诱度表,在保证细菌适应度值增加的前提下,找到引诱度最高的那个节点作为细菌前进的方向,菌群通过趋化、聚集、繁殖、迁徙等迭代操作,从不同路径向目标节点汇聚,在设定的迭代次数结束后,选择健康度最大的细菌的路径作为路由的最优路径,并且向源节点发送回溯细菌,源节点接收到回溯细菌后,开始沿着最优路径发送数据,完成信息传输。
该方法的具体实现过程如下:
(1)编码
编码实现了算法到解空间的映射,是群智能算法中首要的问题。假设经过分簇算法后,产生簇头节点m个,从簇头节点到sink节点的路径集为{V源,V1,V2,…,Vm…,Vk,…,sink},每个路径集可用T(s,d)表示,存储在细菌的栈里。
第i个细菌的位置Xi。
(2)适应度函数
适应度函数反映了群体趋化最优解的能力,适应度越小,表明细菌越接近最优解。无线传感网的路由问题是最优化问题,适应度函数应以算法能快速收敛最优解为度量标准,适当考虑节点的剩余能量和传输耗能,使细菌觅食算法以较为均衡的耗能方式较快的完成路由路径的选择,记细菌i在Xi处的适应度值J(Xi)。
(3)趋化
对细菌觅食优化算法来说,较小的步长有助于进行更精密的搜索,而较大的步长能加快计算 速度,使算法在更短时间内收敛。本发明采用自适应变步长来动态改变步长大小以使算法更加适应环境变化。自适应步长公式为:
其中n(i)表示第i个细菌最近的邻居节点数,
为细菌i的第m个分量,x
m为菌群中其他细菌的第m个分量。同时细菌在翻转操作中,旋转的角度不再是一个随机值,而是根据公式(3),计算在它感知范围内的个体中使取得最大值的那个节点,作为下一步到达的位置。它充分考虑了节点的剩余能量和传输能耗,将使菌群以更均衡的能量消耗向目标节点移动。我们用剩余能量和传输能耗的比值作为节点的引诱度值,引诱度越大,节点被选择作为下一跳的可能就越大。算法根据公式(2)、(3),实现对细菌i位置和旋转角度的更新。
式中:X(i,j+1,k,l)表示在细菌在第j次趋化、第k次繁殖、第l次变异,第i个细菌翻转后的位置。
其中:
式中:φ(i,j)表示节点i与节点j之间的旋转角度,s为节点i感知范围内的节点集合j∈s。
(4)聚集
聚集行为可以是趋化操作的一部分,它主要的作用是对细菌的自适应值进行修正,通过细菌间的作用力加快菌群的聚集,用Jcc(Xi)表示。此时细菌的适应值为:
J(Xi)=J(Xi)+Jcc(Xi) (4)
(5)繁殖
对所有节点的健康度进行排序,淘汰健康度较高的一半细菌的搜索路径,保留健康度较低的一半细菌的搜索路径,同时生成相同数量的子细菌,子细菌的搜索步长减少10%,以增加搜索精度。
(6)迁徙
以Pm的概率选取部分健康度较高的细菌随机迁徙到其他位置,剩余细菌的位置不变。该操作增加了细菌跳出局部最优解的可能性,使算法获得一定的全局搜索能力。
(7)生成最优路径
经过趋化、繁殖、迁徙等迭代操作,找到目标节点,并比较各路径上消耗能量的大小,能耗最小的路径作为最优路径,并且向该路径发送回溯细菌,按照路径上节点次序到达源节点。
(8)完成数据传输
源节点接收到回溯细菌开始发送数据,沿着上述最优路径,完成信息传输。
假设无线传感网拓扑结构为一张无向图G<V,E>,其中节点集合V={sink,V1,V2,V3,…,Vn},Vi为传感器节点,sink为汇聚节点。种群规模为S,细菌i位置信息表示为Xi=(x1,x2,…,xp}。其中p为搜索空间的维度。每个细菌的最大限制步数为Nstep,细菌最大趋化行为Nc,繁殖操作中最大次数为Nre,迁徙数目为Ned,消散概率Ped,每个细菌维护一张路径树和引诱度表,路径树用于记录细菌经过的节点,引诱度表用于记录细菌感知范围内节点的剩余能量分布情况。细菌觅食优化路由方法流程如下:
(1)用自适应分簇方法对节点分簇。
在上面定义的无线传感网的拓扑结构G<V,E>中,令N=50,在局部范围内对节点的能量进行排序,保存能量较高的两个节点,选择能量高的节点作为簇头节点,选择能量次高的节点的备用簇头节点,两簇头节点交替工作,各区域选定簇头节点后,参与排序的节点则直接从属于选出的簇节点,完成簇的建立。当局部区域能量值低于平均能量值30%时,簇将开始重建。
(2)使用细菌觅食优化算法对层次化的节点进行路由选择
具体的方法流程如下:
1、生成初始种群。
初始化菌群的参数S=40,Nc=50,Nstep=4,Nre=8,Ned=2,Ped=0.3。
2、令l=0,进行迭代次数Ned的迁徙循环,每次迭代完成后,参数l增加1,迁徙循环的作用范围2~5。
3、令k=0,进行迭代次数Nre的繁殖循环,每次迭代完成后,参数k增加1,繁殖循环的作用范围3~6。
4、令j=0,进行迭代次数Nc的趋化循环,在每次迭代过程中,对于细菌Xi(i∈S)执行如下趋化操作。
4.1计算细菌Xi的适应度值J(Xi)和菌群对当前细菌的作用值Jcc(Xi)。
同时计算细菌感知范围内节点的剩余能量,更新诱度表。
4.2根据公式(2)计算细菌Xi的游动步长。
4.3细菌根据引诱度表选择引诱度高的节点作为将要前进的方向,并按照式(2)中指定的步长,走出试探性的一步,得到细菌的新位置
计算新位置的适应度值
如果
则确认试探位置为新的位置,并检查是否为节点位置,如是,记录节点编号,否则不处理。同理,继续前进最多N
step次的游动,否则,丢弃该试探位置,并重新选择引诱度次高的节点作为将要前进的方向。
5、把S个细菌按健康度按从小到大排序,丢弃值较大的一半细菌,保留值较小的一半细菌,复制它们,产生S/2个子细菌,并使子细菌的步长减少原来10%。
6、先对细菌的健康度进行评估,在健康度较大的细菌集合中,随即选出若干个细菌,进行迁徙。对每个待迁徙的细菌,在(0,1)之间产生一个随机数θ,若θ<Ped,则丢弃该细菌,并随机生成一个细菌。
7、通过1~6的操作,得到最优位置细菌,若细菌的路径树的末端包含目的节点(汇聚节点),则路由搜索成功,沿路径树记录的节点次序完成数据传输,否则,重新搜索。