基于对比机制和算法因子的蜂群优化算法*
2021-12-01陈政张明
陈政 张明
(江苏科技大学计算机学院 镇江 212000)
1 引言
人工蜂群算法[1](Artificial Bee Colony)是一种属于启发类型的群智能算法,Karaboga在2005年首次提出[2],其是模仿蜜蜂采蜜机制,用于最优解的搜索,人工蜂群算法在求解过程中,可以不需要与问题相关的梯度信息,算法具有控制参数少,易于实现等优势,受到越来越多的关注,已被应用于数据挖掘、图像处理、神经网络等领域。但同时,在当复杂的优化问题需要处理的时候,蜂群算法也存在很多问题,例如:收敛速度较慢、容易陷入局部最优等。为此,不少学者研究出了许多关于ABC算法的改进方法[3]。包括,雇佣蜂采取全局最优引导的策略,而且随着实验次数,引导程度相应减小,从而平衡全局和局部的搜索能力;提出在ABC算法中引入反馈机制,直接搜索最优解最有可能的位置,提高搜索效率[4];Alam等在ABC算法中提出了,自适应步长机制,改进了算法性能;Aderhold等研究种群规模和蜜源位置更新公式在算法性能中的重要性,设计了两种ABC算法[5]。
针对上述问题,本文提出了一种对比机制,即当种群初始化时,由于初始化的参数多而复杂,通过采取设置对比的方式[6],可以在保证种群多样性的前提下提高初始解的质量;同时,在蜜蜂搜索到各自的蜜源时,利用引入算法因子的方式,通过增加可以根据进化过程动态变化的因子来平衡蜂群算法的局部搜索和全局搜索能力,从而提高算法效率以及提升算法精度[7]。最后,根据仿真实验和测试函数的数据对算法进行评测。
2 基本蜂群算法
人工蜂群算法,是一种较新的,属于一类智能优化算法,基于模拟蜜蜂的采蜜过程提出,主要三个组成部分进行组成:食物源和雇佣蜂以及非雇佣蜂[8]。
食物源:代表蜜源。食物源下就是待求优化问题的可行解,是需要处理的基本对象[9]。食物源的好坏是通过蜜源大小评价的,即可行解的好坏是通过适应度来评价的。
雇佣蜂:又称引领蜂,和食物源相对应,一个食物源就有一个引领蜂相对应,两者的个数相等[10];它的任务包括:发现食物源信息,一定概率的情况下与跟随蜂分享信息;概率的计算通过人工蜂群算法中的选择策略,通常根据适应度值以轮盘赌的方法计算。
非雇佣蜂:包含跟随蜂与侦査蜂。跟随蜂根据引领蜂提供的相关信息在蜂巢的招募区内选择食物源[11],而侦查蜂则在蜂巢附近寻找新的食物源。在人工蜂群算法中,跟随蜂根据引领蜂传递的食物源信息,在此附近搜索新的食物源。若一个食物源在经过很多次后仍未被更新,则此引领蜂自动成为侦査蜂,寻找新的食物源代替旧的食物源[12]。
蜜蜂搜索操作由式(1)实现。
其中vij代表食物源位置,φij是[-1,1]中的随机数,xij代表食物源第j维,xkj代表随机选择的不同于i的食物源的第j维位置[13]。式中,fiti为第i个食物源的收益率,随着收益率越大,相应的食物源被选择的概率也越大。
0,1内均匀分布的随机数;LB和UB分别为问题解分量取值的下界和上界。故xi为某个食物源[14]。
同时,新解会根据下面式子计算适应度:
具体过程如图1所示。
图1 基本算法流程图
3 改进的蜂群算法
本文针对收敛速度不快、会极大发生局部最优等问题,提出了在种群初始化和个体搜索方面改进之处。
3.1 对比机制
在种群初始化时,由于蜂群算法采取方式的随机性,虽然在一定程度上体现了种群的多样性,但不能够保证初始解的质量[15],对后面解的搜索易造成效率上的下降。所以,本文提出对比机制,即在初始化解的时候,对每个生成的个体进行M次迭代,这样能够达到质量更高的种群[16]。
式子中,x'
ij表示个体前一次通过式(3)获得的第j
3.2 算法因子的引入
在蜂群算法中,个体是通过搜索,然后根据共享的信息选择最优解。但在这过程中,信息量会不断减少,所以要考虑到全局优化和局部优化的作用[17]。因此,本文在优化过程中,引入算法因子,更好的提高了搜索的蜜源质量,即进一步筛选最优解的值,从而提高搜索能力。
其中i为迭代次数,i∈[0 ,M],μij是[- 1,1]之间的随机数,γij是[ ]0,E一个随机数,E是一个正数。yj第j维最优解的适应值。本文通过引入以上因子,在全局和局部两方面[18],都对搜索能力得到了相应的提高,正题优化了算法的性能,从而能够在搜索的不同阶段保证算法最优解。
3.3 CABC算法步骤
Step2:引领蜂根据式(1)搜索新蜜源,然后通过式(6)比较新蜜源,即适应度值。
Step3:之后跟随蜂根据式(2)的概率选择策略来选择蜜源。
Step4:通过贪婪机制选择更好的蜜源。
Step5:对于淘汰的蜜源,引领蜂根据式(3)转换成侦察蜂。
Step6:记录蜜源位置。
Step7:判断能否满足结束条件,如果满足终止则输出最佳解,否则回到Step2,直到达到limit值。
4 仿真分析
4.1 测试函数选择与分析
本文为便于实验仿真,采用以下四个基本函数进行算法性能比较。
表1 测试函数
其中Schwefel为连续单模态函数,Rastrigin和Griewank为多模态非线性全局优化函数[19],峰形呈现高低起伏的不定跳跃性,具有震荡性,因此用来测试算法的搜索能力;Rosenbrock函数较为复杂,用于测试算法综合性能[20]。
4.2 实验评价标准
首先实验设备为一台64位PC机,算法是通过Matlab2014a软件,用M语言实现。相关的实验设置参数如下:种群数大小设为40,引领蜂个数和跟随蜂个数各为20,最大迭代次数为1000次,判断是否停滞的limit=100。
同时,为体现出算法的优化性能,每个测试函数独立运行10次,记录平均值、方差。
从图2的四个测试函数运行结果看,基本ABC算法存在着收敛速度不快、收敛精度会比较低的问题。而改进后的CABC算法,Griewank、Schwefel、Rastrigin函数不仅收敛速度、精度和全局优化能力明显优于ABC算法,即使对于Rosenbrock函数,CABC算法早期收敛速度快,后期趋于停滞,但整体性能明显高于ABC算法。并且,由于CABC算法采取了对比机制,在运行初期阶段,CABC初始解精度方面就明显优于ABC算法,而且与最优值的差距明显缩小,所需要的迭代次数也明显减少。
图2 ABC算法和本文CABC算法的收敛曲线对比
整体而言,从以上的所有实验分析可以得出结论,本文算法在性能上更加具有明显的改进效果,说明改进的算法很好地改善了基本算法的存在会发生局部之最优的问题,也提高了解的精度。
表2 四个函数实验比较结果
5 结语
本文提出了一种改进的算法,通过在种群初始化的时候,加入对比机制,改善了解的质量,同时引入算法因子,更好的保证算法的搜索能力,从这两个方面解决了原ABC算法易早熟的问题,提高了算法的全局搜索能力。由实验的数据对比也说明了提出的算法在寻优精度和寻优效果上更好于原始算法。在今后的研究工作中,要集中于多目标优化问题和实际应用的研究上,更好地改善蜂群算法。