带认知因子的交叉鸽群算法陶国娇李智四川大学电子信息学院doc.docx
《带认知因子的交叉鸽群算法陶国娇李智四川大学电子信息学院doc.docx》由会员分享,可在线阅读,更多相关《带认知因子的交叉鸽群算法陶国娇李智四川大学电子信息学院doc.docx(12页珍藏版)》请在冰豆网上搜索。
带认知因子的交叉鸽群算法陶国娇李智四川大学电子信息学院doc
带认知因子的交叉鸽群算法陶国娇李智四川大学电子信息学院1
带认知因子的交叉鸽群算法
陶国娇,李智
(四川大学电子信息学院,四川成都610064)
摘要:
鸽群优化算法在求解最优问题时易早熟收敛,陷入局部最优,因此本文提出了带认知因子的交叉鸽群算法.首先,将地图指南针算子和地标算子进行联合交叉运行;然后,在地图和指南针算子中引入了非线性递增的认知因子,并将其视为运动权值的三角函数;最后,在地标算子中,引入呈三角函数递增的压缩因子,增加算法的平滑性.仿真结果表明,改进后的算法搜索成功率有很大的提高,能有效地避免早熟收敛,跳出局部极值,具有更好地寻优能力.
关键词:
鸽群算法;联合;交叉;认知因子;压缩因子;统一性中图分类号:
TP301.6文献标识码:
A
ACrossedPigeon-inspiredOptimizationAlgorithmwithCongnitiveFactor
TAOGuojiao,LIZhi
(CollegeofElectronicsandInformationEngineeringSichuanUniversity,Chengdu610064,China)
Abstract:
Insolvingoptimalproblems,pigeon-inspiredoptimizationalgorithm(PIO)iseasytoprematureconvergenceandtrapinlocaloptimum,sothispaperpresentsacrosspigeon-inspiredoptimizationalgorithmwithcognitivefactors.Firstly,mapthecompassoperatorandlandmarkoperatornolongerrunindependently,andthemaremixedtogetherandoperatedcrosswise;Second,inthemapandcompassoperatorthecognitivefactorofnonlinearincrementwasintroduced,andregardastheinertiaweight’strigonometricfunctions;Finally,inthelandmarkoperator,acompressivefactorthatwasincreasinggraduallyintheformoftrigonometricfunctionswasproposedtomakepathsmoother.Simulationresultsshowedthattheimprovedalgorithmsearchsuccessratehadgreatlyimproved,andnotonlyeffectivelyavoidprematureconvergence,butalsojumpoutoflocalminimaandhadbetteroptimizationability.
Keywords:
pigeon-inspiredoptimization;union;crossover;cognitivefactor;compressivefactor;unity
收稿日期:
2017-3-10
基金项目:
四川省科技厅支撑计划项目(2016GZ0091,2016GZ0092)
作者简介:
陶国娇(1991-),女,硕士生.主要研究方向为群体智能和频谱感知.通信作者:
李智,E—mail:
lizhi@
1引言
最优化问题在科学实验、数学规划和工程设计等方面有着广泛地应用.近几十年来,受自然界中生物群体组织行为启发而产生的群体智能算法,由于它在解决复杂问题时的简单易行,对初值不敏感、搜索速度快、效果优良等优点成为解决这类问题的热门途径,比如文献[1]提出了基于人工蜂群算法[2]的WSN故障数据挖掘算法;文献[3]中提出了基于遗传算法[4].的无线网络覆盖机制.在2014年,H.Duan[5]等受到鸽群行为的影响,提出一种的仿生的智能算法--鸽群算法(Pigeon-inspiredoptimization,PIO),该算法在许多优化问题中求解性能全局性良好[6–8].2014年,RanHao等[6]在用鸽群算法解决多无人机任务分配
中,提出了地图和指南针因子在迭代过程中进行非线性变化,且在鸽群算法中引入遗传算法的交叉概念;2014年,CongLi等在文献[7]中用改进的鸽群算法进行多无人机目标的探测;2014年,ZhangB等人在文献[8]中,在了无人机的三维航迹规划时也应用了捕食逃逸的鸽群算法.等等这些都充分地展示了鸽群算法在优化问题中的优良的求解性能.
在学习研究该算法的过程中,发现该算法虽然收敛速度快,但易早熟收敛,陷入局部最优.针对以上缺点本文提出了一种改进的鸽群算法.第一,将地图指南针算子和地标算子,进行联合交叉运行,使算法在全局搜索和局部搜索中进行平衡;第二,在地图和指南针算子中引入呈三角函数递减的运动权值和随
运动权值变化而动态变化的认知因子,让种群的个体之间能进行充分的交流学习,使算法在前期有利于种群多样的增加性,和提高全局搜索能力,后期能细致地进行局部搜索,得到较精确的解;第三,参考文献[8]在地标算子中也引入了一个压缩参数,并以曲线的形式变化,对地标算子进行压缩,增加路径的平滑性,同时通过这种压缩因子的交流,也可以增强算法的全局搜索能力和寻优能力;同时,鸽群不再成半衰减,而是以固定参数衰减,避免后期鸽群数量太少,影响算法的效果.
2带认知因子的交叉鸽群算法
2.1基本鸽群算法原理
鸽子具有惊人的导航能力、奇妙的群体飞行机制和独特的眼睛布局.在导航方面,研究发现鸽群主要依靠磁场、太阳和地标这三个工具进行导航.Guilford[9]证明在不同的飞行阶段它们分别使用不同的导航工具.在离目的地较远的地方,鸽群主要依靠像磁场和指南针这样的工具;当接近目的地时,一般会使用地标来进行方向的判断.Whiten[10]发现太阳高度也会影响鸽子导航.鸽群算法主要是模拟鸽群在导航中使用不同的导航工具的行为.
鸽群优化算法主要由两部分构成,第一部分是地图和指南针算子,鸽群依靠感应地磁场和以太阳的高度作为方向的判断,调节自己的飞行方向;第二部分是地标算子,接近目的地的时会跟随熟悉地标的鸽子直接飞向目的地.
地图和指南针算子中,每只鸽子代表一个求解问题的解.每只鸽子由位置和速度表示.假设在D维空间中有Np只鸽子组成一个群体,即X=X1,X2,…Xi,其中i=1,2,…N,第i只鸽子的位置和速度为X=[xi1,xi2,…xiD]和V=[vi1,vi2,…viD].每次迭代速度和位置都在D搜索空间中进行更新,第i只鸽子在第t次迭代中新的位置Xi(t)和速度Vi(t)计算公式如下:
()
(1)(
(1))
RtiigiVtVterandXXt-=-⨯+⨯--
(1)()
(1)()iiiXtXtVt=-+
(2)
其中R是地图和指南针因数,介于0到1之间;t为当前迭代次数;Xg表示此次迭代中最好的位置.
该部分主要是由随地图和指南针因子呈指数变化的运动权值和向全局最优位置靠近来进行寻优。
运动权值的主要作用是达到对整个空间的搜索,增加鸽群的多样性,是全局搜索能力的体现。
为了更好的分析此部分的收敛情况,令()Rthte-=,此处R=0.3,函
数h(t)的曲线如图1,从图中可以看出当25t≈时,()0ht≈。
也就是说当进行了约25次迭代(若取最大迭代次数Tmc=150,也就是运行最大迭代次数的1/6)之后,不再进行全局搜索,仅在全局最优位置Xg附近小范围地进行局部寻优搜索,鸽群算法的更新公式
(1)将变为:
()(
(1))igiVtrandXXt=⨯--。
过早地聚集在Xg附近,如果Xg=Xlg(局部最优),那么后面最终得到的最优解也将是局部最优解。
NumberofIterationst
FunctionValueh(t)
图1函数h(t)曲线图Fig.1Curveofthefunctionh(t)
地标算子中每经过一次循环,鸽群的总数都减少二分之一,同时对鸽群按照适应度进行排序,舍弃排在后面二分之一远离目的地且不熟悉地标的标鸽子.并在剩下的鸽子中找到中心位置,以此当作地标作为飞行的参考方向,第i只鸽子在第t次迭代中新的位置Xi(t)计算公式如下:
(1)/2ppNNt=-(3)
1
1
()(())
(())
p
p
Ni
i
icNpiiXtfXtXNfXt==⨯=
∑∑
(4)
()
(1)(()
(1))
iiciXtXtrandXtXt=-+⨯--(5)
其中f是适应度值.
该部分主要是通过向每次剩余鸽群(熟悉地标的鸽子)中的中心位置靠近来寻优。
此处初始鸽群数量Np=300,最大迭代次数Tl=250,每次迭代的鸽群数量如表1,由表中可知当迭代10次(最大迭代次数的1/25)之后,鸽群数量为1,公式(5)变为:
11()
(1)XtXt=-。
余下的240次迭代都只有一只鸽子
进行寻优搜索,算法停滞,这样过早地进入早熟收敛。
表1种群数量变化
Tab.1PopulationNumberChange
变
量
名
变量值
t123456789…TlNp30015075381910532112.2带认知因子的交叉鸽群算法
2.2.1地图和指南针算子中的交流因子
鸽群算法的速度更新公式
(1)中,第一部分是由鸽子自身的速度惯性来进行更新,它主要作用是达到对整个空间的搜索,增加鸽群的多样性,是全局搜索能力的体现,但是标准的鸽群算法中在前期有很好的全局搜索能力,但随迭代次数的增加运动权值快速地衰减,在后期几乎接近于零,导致后期算法全局搜索能力很弱,并且对于位于全局最好位置的鸽子将几乎
保持静止,如果该最优位置陷入局部最优,那么整个算法都将早熟收敛;第二部分是所有微粒向全局最优位置Xg靠近,也就是说,微粒群将收缩到当前的全局最好位置,更像一个局部算法,体现的是算法的局部搜索能力.在前期我们更希望算法拥有较强的全局搜索能力,局部搜索对位置的更新影响少一点,避免全局最优位置陷入局部最优时.过早地将这个寻优过程带入早熟收敛中.
通过2.1中对地图和指南针算子的分析,可以发现标准鸽群算法容易早熟收敛。
在进行寻优搜索时,在前期我们更希望算法拥有较强的全局搜索能力,局部搜索影响少一点,而在后期更希望算法能够进行精确的局部搜索,因此希望局部更新对算法的影响大一点,这样避免算法过早地收敛.
针对标准鸽群算法地图和指南针算子的缺陷,该文提出了带认知因子的鸽群算法(PIOS):
首先,让运动权值随迭代次数增加在一定范围内慢慢地非线性衰减,这种变化过程与余弦函数在[0,π]范围内变化一致,因此该文选用了余弦函数模仿运动权值的变化[11];然后,在更新公式中引入了一种信息认知因子,它来调节全局最优位置在整个的过程中影响权重,即算法局部搜索能力的在算法中的平衡.为了使算法在前期有更好的全局搜索能力,后期有更好的局部搜索能力,同时参考文献[12]的整体变化思想,认知因子被视为运动权值的三角函数,在运动权值随时间非线性递减的过程中,认知因子发生相应的递增变化,进而通过增强两者之间的相互作用来平衡算法的全局探索和局部开发能力,更好地引导粒子进行优化搜索变化.整个过程既保证了在前期收敛速度和全局搜索能力,又在某种程度上保证了后期的局部搜索能力,避免了算法的早熟收敛.因此可将公式
(1)改为以下的更新公式:
()
(1)(
(1))
iigi
VtVtgranduXXt
=-⨯+⨯⨯--(6)其中:
cos(/)
mc
gabtT
π
=+⨯⨯(7)
cos()
ucdgπ
=+⨯⨯(8)
g表示运动权值,表示对当前粒子的速度继承的比例,其值介于0到1之间.u是认知因子,a,b,c,d是常数.Tmc为地图和指南针算子中的最大迭代次数.
NumberofIterations
V
a
l
u
e
s
图2g和u的进化曲线
Fig.2Evolutioncurveofgandu
运动权值g和认知因子u的变化曲线如图2,从
图中可以看出在[]
0,
mc
tT
∈期间,g的值一直存在,并逐渐减小,也就是说公式(6)在整个迭代期间都在受运动权值的影响进行全局搜索;u在[]
0,
mc
tT
∈时,一直随着g的减小逐渐增大,也就是说公式(6)随着迭代次数地增加逐渐加大了最优值附近的局部精确搜索。
由上可知公式(6),在整个寻优过程中,都受全局搜索和局部搜索的影响,并且两者相互牵制促进,避免了过早收敛。
2.2.2地标算子中的压缩因子
标准鸽群算法在地标算子中,每次迭代鸽群数量都衰减为上次迭代时数量的二分之一,鸽群数量过快地衰减,在后期由于种群数量过少,导致算法的多样性缺失,影响算法的寻优性能,因此本文采用文献[8]中用一个常数来定义每次迭代中鸽群的数量.将公式
(3)改为以下公式:
()
(1)ppNtnNt=⨯-(9)
其中是n介于0到1之间的常数.
同样参考文献[8],在地标算子中引入一个压缩因子w来对地标算子进行压缩,增加路径的平滑性,同时通过压缩因子的交流,也可以增强算法的进行全局搜索能力,提高算法的寻优能力.因此,公式(5)可用下式替代:
()
(1)(()
(1))iiciXtXtrandwXtXt=-+⨯⨯--(10)
cos(/)lweftTπ=+⨯⨯(11)
其中e,f是常数,Tl是地标算子最大迭代次数.
NumberofIterations
Values
图3种群数量变化曲线
Fig.3ChangecurveofPopulationNumber
NumberofIterations
Values
图4w进化曲线Fig.4Evolutioncurveofw
种群数量Np和压缩因子w的变化曲线如图3、4,种群数量逐渐减少,但是一直保持一定的数量值,不会出现原算法中11()
(1)XtXt=-的情况,保证了种群的多样性;同时压缩因子w逐渐增大,加大了后期中心位置的影响,即公式(10)中Xi(t)的值后期主要
取决于Xc(t),有利于算法的收敛。
2.2.3联合交叉运行
在地图和指南针算子中主要是以自身的速度惯性和全局最优位置两者互相协作作为飞行的参考;而地标算子中主要是以中心鸽子的位置作为飞行的参考方向.两者的评判标准比较单一,如果其参考标准陷入局部最优,则整个鸽群会被引向局部最优区域,导致算法出现早熟收敛现象.因此交叉鸽群算法(CPIO)就是将这两个阶段的算子进行联合交叉运行,即在地图和指南针算子中,在该阶段的后小半部分用地标算子的规则来进行鸽群位置的更新;在地标算子阶段中的前小半部分用地图和指南针算子的标准来进行位置的更新.这样之前独立的两个算子运算中分别融合了另一个运算规则,使两者互相牵制促进,使算法在全局搜索和局部搜索中进行平衡,避免陷入局部最优.
在地图和指南针算子中主要是以自身的运动权值和全局最优位置两者互相协作作为飞行的参考;而地标算子中主要是以中心鸽子的位置作为飞行的参考方向.也就是说原始算法是一个分段函数,如下:
()
(1)
(1))1t()
(1)(()
(1)),1XtXtVtTiiimc
XtXtrandwXtXttTiicil
=-+-≤≤=-+⨯⨯--≤≤,{
两者独立运行,评判标准比较单一,如果其参考标准陷入局部最优,则整个鸽群会被引向局部最优区域,导致算法出现早熟收敛现象.
而交叉鸽群算法(CPIO)就是将这两个阶段的算子进行联合交叉运行:
地图和指南针算子中,在该阶段的后小半部分用地标算子的规则来进行鸽群位置的更新;在地标算子阶段中的前小半部分用地图和指南针算子的标准来进行位置的更新.可以将其理解为两个分段函数,如下:
(1)
(1))1t
(1)(()
(1)),
(1)
(1))1t
(1)(()
(1)),()=()=XtVtTiitm
iXtrand
wX
tXtTtTicitmmc
XtVtTiit
iXtrandwXtXtTtT
icitlXtXt-+-≤≤-+⨯⨯--≤≤-+-≤≤-+⨯⨯--≤≤,,{{{
这样之前独立的两个算子运算中分别融合了另一个运算规则,每一部分都是两种寻优规则,当其中一个陷入局部最优时,另一种运算规则可以跳出局部最优,这样两者互相牵制促进,使算法在全局搜索和局部搜索中进行平衡,避免过早地收敛.
3仿真实验
为了验证改进算法的性能,本文选择以下几个基准测试函数(如表2)用于优化实验.
表2测试函数Tab.2Testfunctions
函数名
表达式
最优解Sphere2
1n
i
ix
=∑
Rosenbrock122211(100*()
(1))niiiixxx-+=-+-∑0Rastrigin
21
(10cos
(2)10)n
i
iix
xπ=-+∑
0Griewank
211
114000n
niiix==-+∑∏0Ackley
1
1cos
(2)
2020*n
iixn
ee
e
π=--
∑+--
Sphere和Rosenbrock是单峰函数,其中Rosenbrock是较为复杂的单峰函数,它的值隐藏在一条很长的狭道里,不易获取.Rastrigin、Griewank和Ackley是复杂的非线性多峰函数,它们拥有很多局部的极值点,一般可以用来检验算法的全局搜索能力.
算法参数设置如下:
种群数量N=300;迭代次数Tmc=150,Tl=250;维数D=5.运行20次取得平均值,其结果如下图所示.图中PIO(标准鸽群算法)、CPIO(交叉鸽群算法)、PIOC(带认知因子的鸽群算法)、CPIOC(带认知因子的交叉鸽群算法).
10
101*********0-5
100
105
Sphere
NumberofIterations
Valueoffunction
图5Sphere函数进化曲线
Fig.5EvolutioncurveofSpherefunction
10
10
10
10
10
10
10
5
Rosenbrock
NumberofIterations
Valueoffunction
图6Rosenbrock函数进化曲线Fig.6EvolutioncurveofRosenbrockfunction
Rastrigin
NumberofIterations
Valueoffunction
图7Rastrigin函数进化曲线Fig.7EvolutioncurveofRastriginfunction
1010
10
10
Griewank
NumberofIterations
Valueoffunction
图8Griewank函数进化曲线Fig.8EvolutioncurveofGriewankfunction