人工蜂群算法(ABC)是新近提出的一种基于群智能的优化方法,它比其他基于种群的智能算法更优异,但蜂群的搜索更新公式在算法的局部寻优能力上存在缺陷。因此本文致力于将擅长局部寻优的搜索机制引入人工蜂群算法,提出了一种基于Hooke-Jeeves的改进人工蜂群算法(IHABC)。IHABC算法改进了采蜜蜂和跟随蜂的搜索公式,期望保留全局搜索能力的同时能更大限度地增加算法的局部寻优能力;采用质量中上的个体优化Hooke-Jeeves搜索法的初始基点以确保局部寻优的有效性;改进Hooke-Jeeves方法的探索移动的步长公式。为了检测新算法的性能,将其与人工蜂群算法、Hooke-Jeeves人工蜂群算法(HABC)进行比较分析,30个基准函数上的数值实验结果表明,IHABC算法在求解无约束优化问题时得到的近似解有更高的精度。 Artificial bee colony algorithm (ABC) is a relatively new swarm intelligence optimization method, which is superior to other population-based intelligent algorithms. However, ABC algorithm also has certain limitation because its updating formula is not good at exploitation. In order to enhance the exploitation capacity of ABC, this paper presents a new algorithm called an improved artificial bee colony algorithm based on Hooke-Jeeves method (IHABC). The altered formulas of employed bees and onlooker bees in IHABC not only keep exploration ability but also increase exploitation to a great extent. In addition, the algorithm optimizes initial base point selection in Hooke-Jeeves search phase by upper-middle individual and modifies step size formula of exploratory move, so that the whole population evolves spontaneously in the right direction. To test the effectiveness of the proposed algorithm, we compare IHABC with ABC and Hooke-Jeeves artificial bee colony algorithm (HABC). The numerical experimental results of 30 benchmark functions clearly indicate that IHABC gets higher approximate solution precision in solving unconstrained optimization problems.
孙越泓1,2,丁亚英2
1江苏省大规模复杂系统数值模拟重点实验室,江苏 南京
2南京师范大学数学科学学院, 江苏 南京
收稿日期:2017年2月4日;录用日期:2017年2月25日;发布日期:2017年2月28日
人工蜂群算法(ABC)是新近提出的一种基于群智能的优化方法,它比其他基于种群的智能算法更优异,但蜂群的搜索更新公式在算法的局部寻优能力上存在缺陷。因此本文致力于将擅长局部寻优的搜索机制引入人工蜂群算法,提出了一种基于Hooke-Jeeves的改进人工蜂群算法(IHABC)。IHABC算法改进了采蜜蜂和跟随蜂的搜索公式,期望保留全局搜索能力的同时能更大限度地增加算法的局部寻优能力;采用质量中上的个体优化Hooke-Jeeves搜索法的初始基点以确保局部寻优的有效性;改进Hooke-Jeeves方法的探索移动的步长公式。为了检测新算法的性能,将其与人工蜂群算法、Hooke-Jeeves人工蜂群算法(HABC)进行比较分析,30个基准函数上的数值实验结果表明,IHABC算法在求解无约束优化问题时得到的近似解有更高的精度。
关键词 :群智能,人工蜂群算法,Hooke-Jeeves搜索,局部寻优能力,无约束优化问题
Copyright © 2017 by authors and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
人工蜂群算法(Artificial Bee Colony algorithm, ABC) [
2011年Kang等 [
本文在HABC基础上,对采蜜蜂和跟随蜂的候选解产生公式做了改动,期望保留全局搜索能力的同时能更大程度地增加算法的局部寻优能力,从而加快算法的收敛速度。另外,对Hooke-Jeeves方法的初始基点进行优化,提高局部寻优的有效性并避免其陷入局部最优。数值实验表明提出的新算法在求解无约束优化问题时具有一定的优越性。
为了便于描述新算法,首先对人工蜂群算法和改进的Hooke-Jeeves方法进行简要说明。
人工蜂群算法用于求解无约束优化问题
其中自变量
步骤一:初始化。
初始化种群大小NP,食物源数目
式中
将这些向量随机分配给NS只采蜜蜂,用公式(3)计算每只采蜜蜂对应食物源的适应度值,同时用变量Xbest记录适应度值最大的食物源。
步骤二:重复地对食物源进行更新,直到终止条件满足。
① 采蜜蜂阶段
基于旧的食物源
式中
计算并比较候选解
② 跟随蜂阶段
跟随蜂根据每个食物源
③ 侦查蜂阶段
如果有食物源
④ 更新gbest
找出当前种群中的最大适应度值,与原来的Fitbest比较,适应度值更高的作为新的Fitbest,同时将Fitbest对应的食物源存入
步骤三:输出最终的
Hooke-Jeeves方法包含两种类型的移动:探测移动(exploratory move)和模式移动(pattern move)。在确定了一个初始基点之后,探测移动依次沿n个坐标轴进行,用以确定新的基点和有利于函数数值下降的方向;模式移动沿相邻两个基点连线方向进行,试图顺着“山谷”使函数值更快地减小。这两种移动交替地进行直到终止条件满足,如图1所示,带箭头的实线为探测移动,不带箭头的实线为模式移动。
探测移动的主要步骤描述在算法1中(见图2)。假定x0是基点,
图1. Hooke-Jeeves方法的一个例子
图2. 探测移动主要步骤
图3. Hooke-Jeeves方法主要步骤
为了加快基于Hooke-Jeeves的人工蜂群算法HABC [
在采蜜蜂阶段,根据文献 [
式中,指标r1和r2是从
另外蜂群个体的适应度值计算公式如下:
式中,
在跟随蜂阶段,根据文献 [
式中,
在Hooke-Jeeves方法中,每Nc次循环后以最好个体
本文对Hooke-Jeeves方法进行的局部搜索做了改动,一个很自然的想法就是折中处理,即取目标函数值处于中间的个体,再往最好个体方向稍做移动得到新的个体U,以U为基点进行Hooke-Jeeves搜索。U的生成公式如下:
式中,
式中,
U与
我们提出的新算法称为基于Hooke-Jeeves的改进人工蜂群算法,简记为IHABC。算法的大体框架同HABC一致,主要有两个阶段:
第一阶段是全局搜索阶段,用人工蜂群算法ABC搜索较优质的解,采蜜蜂阶段改用公式(6),跟随蜂阶段改用公式(8),其它地方与ABC算法相同。
第二阶段是局部寻优阶段,每NC次循环调用一次Hooke-Jeeves方法对公式(9)得到的新解U进行局部寻优,对应的步长用公式(10)计算。接着进行如1.2节所述的两种移动:探测移动和模式移动,探测移动一次只考虑一个分量用以确定合适的寻优方向,而下一步的模式移动是为了在探测移动得到的方向上进行加速寻优。这两种移动交替进行不断重复直到开采阶段的终止条件满足,得到的结果记为
搜索阶段和开采阶段重复进行直到终止条件满足,终止条件可以是最大函数计算次数、最大循环次数或者与理论最优值之间的差异很小等。为了表述更清晰,图4给出了IHABC算法(算法3)的整个过程。
本实验是在Windows XP系统,Intel Core13(2.4GHz CPU/2G)的环境下运行的,使用Matlab 2012b软件编写的程序。本节将ABC算法、HABC算法以及IHABC算法在30个基准函数 [
图4. IHABC主要步骤
基准函数是从检验全局优化算法表现的函数库中选出的有代表性的函数,涵盖了不同的维数、不同的特点(单峰U/多峰M、可分S/不可分N),基本信息见表1,具体的表达式详见参考文献 [
为了便于比较,三个算法中ABC阶段的参数设置均取相同的值:种群数NP = 50;食物源数目
每个算法在基准函数C01-C30上独立运行50次得到函数最小值的平均值和标准差总结在表2中,较好的实验结果用黑色粗体标出。
在单峰可分Sphere (SP)函数C27上,新算法IHABC算法在50次实验中均取得了全局最小值0,标准差也为零,求解精度和算法的稳定性都超过了ABC和HABC算法;在单峰可分离Quartic (QU)函数
Fun | Name | Dim | Search range | Min | feature |
---|---|---|---|---|---|
C01 | Beale (BE) | 2 | [−4.5,4.5] | 0 | UN |
C02 | Goldstein and Price (GP) | 2 | [−2,2] | 3 | MN |
C03 | Matyas(MA) | 2 | [−10,10] | 0 | UN |
C04 | Shekel’s Foxholes (SF) | 2 | [−65.536,65.536] | 0.998004 | MN |
C05 | Shubert (SH) | 2 | [−10,10] | −186.7309 | MN |
C06 | Hartman 3 | 3 | [0,1] | −3.86278 | MN |
C07 | Helical valley problem (HV) | 3 | [−10,10] | 0 | UN |
C08 | Colville (CO) | 4 | [−10,10] | 0 | UN |
C09 | Perm (PE) | 4 | [−4,4] | 0 | MN |
C10 | Power Sum (PS) | 4 | [0,4] | 0 | MN |
C11 | Shekel's Problem Family | 4 | [0,10] | −10.53641 | MN |
C12 | Fletcher-Powell (FP) | 2 | 0 | MN | |
C13 | Modified langerman (ML) | 5 | [0,10] | −0.965 | MN |
C14 | Modified langerman (ML) | 2 | [0,10] | −1.08094 | MN |
C15 | Hartman 6 | 6 | [0,1] | −3.32237 | MN |
C16 | Modified langerman (ML) | 10 | [0,10] | −0.965 | MN |
C17 | Michalewicz (MI) | 5 | −4.687658 | MS | |
C18 | Whitley (WI) | 10 | [−100,100] | 0 | MN |
C19 | Powell (PO) | 24 | [−4,5] | 0 | UN |
C20 | Quartic function (QU) | 30 | [−1.28,1.28] | 0 | US |
C21 | Schwefel’s Problem 2.21 (S21) | 30 | [−100,100] | 0 | UN |
C22 | Weierstrass (WE) | 60 | [−0.5,0.5] | 0 | MN |
C23 | Ackley (AC) | 30 | [−32,32] | 0 | MN |
C24 | Griewank (GR) | 30 | [−600,600] | 0 | MN |
C25 | Rosenbrock (RO) | 30 | [−30,30] | 0 | UN |
C26 | Schwefel’s Ridge or Schwefel’s problem 1.2 (SR) | 30 | [−100,100] | 0 | UN |
C27 | Sphere (SP) | 30 | [−100,100] | 0 | US |
C28 | Schwefel’s problem 2.22 (S22) | 30 | [−10,10] | 0 | UN |
C29 | Zakharov (ZA) | 30 | [−5,10] | 0 | UN |
C30 | Ackley (AC) | 100 | [−32,32] | 0 | MN |
表1. 函数基本信息
Fun | Dim | ABC | HABC | IHABC | |
---|---|---|---|---|---|
C01 | 2 | MeanVal StdVal | 5.02262e−13 2.33684e−12 | 3.31089e−17 8.56149e−17 | 0 0 |
C02 | 2 | MeanVal StdVal | 3.00001 4.50637e−05 | 3 2.54873e−15 | 3 2.29381e−14 |
C03 | 2 | MeanVal StdVal | 1.88342e−14 9.19506e−14 | 1.85964e−16 9.49337e−16 | 0 0 |
C04 | 2 | MeanVal StdVal | 0.998004 0 | 0.998004 1.05206e−16 | 0.998004 1.18688e−16 |
C05 | 2 | MeanVal StdVal | −186.731 1.05556e−14 | −186.731 1.46394e−14 | −186.731 3.2482e−14 |
C06 | 3 | MeanVal StdVal | −3.86278 2.40284e−15 | −3.86278 3.09825e−15 | −3.86278 4.90882e−15 |
C07 | 3 | MeanVal StdVal | 0.002556 0.00243314 | 1.33466e−07 4.87096e−07 | 1.08073e−13 2.87356e−13 |
C08 | 4 | MeanVal StdVal | 0.169419 0.118691 | 1.4811e−06 3.50147e−06 | 0 0 |
C09 | 4 | MeanVal StdVal | 0.0417135 0.0395745 | 0.0050728 0.018772 | 8.2582e−06 1.26267e−05 |
C10 | 4 | MeanVal StdVal | 0.00565621 0.00456532 | 0.000670047 0.00139635 | 4.95624e−07 6.84974e−07 |
C11 | 4 | MeanVal StdVal | −10.5364 9.32393e−15 | −10.5364 5.663e−15 | −10.5364 1.31248e−14 |
C12 | 2 | MeanVal StdVal | 2.54012e−19 2.20575e−19 | 0 0 | 0 0 |
C13 | 5 | MeanVal StdVal | −0.964908 4.69291e−04 | −0.965 3.22144e−13 | −0.950218 0.0185058 |
C14 | 2 | MeanVal StdVal | −1.08094 1.64121e−06 | −1.08094 1.56413e−15 | −1.08094 1.34579e−15 |
C15 | 6 | MeanVal StdVal | −3.322 1.35504e−15 | −3.322 2.2349e−16 | −3.322 8.97196e−17 |
C16 | 10 | MeanVal StdVal | −0.533924 0.084979 | −0.569837 0.143236 | −0.6077 0.221634 |
C17 | 5 | MeanVal StdVal | −4.68766 2.75367e−15 | −4.68766 2.75367e−15 | −4.68766 2.54399e−15 |
C18 | 10 | MeanVal StdVal | 0.374182 1.07672 | 0.0394587 0.19527 | 0.138105 0.345766 |
C19 | 24 | MeanVal StdVal | 0.00096315 0.00012072 | 6.18214e−08 9.73955e−08 | 2.29692e−64 1.62417e−63 |
C20 | 30 | MeanVal StdVal | 0.0370203 0.00797128 | 0.0351516 0.00822433 | 1.76447e−05 1.42544e−05 |
C21 | 30 | MeanVal StdVal | 0.0972994 0.0398698 | 3.39613e−05 1.48887e−05 | 7.06268e−29 4.9921e−28 |
C22 | 60 | MeanVal StdVal | 1.42109e−14 8.3449e−15 | 1.33582e−14 8.80708e−15 | 0 0 |
C23 | 30 | MeanVal StdVal | 3.49942e−14 4.8119e−15 | 3.48166e−14 4.76106e−15 | 0 0 |
C24 | 30 | MeanVal StdVal | 1.1168e−12 6.1165e−12 | 0 0 | 0 0 |
---|---|---|---|---|---|
C25 | 30 | MeanVal StdVal | 0.213231 0.472143 | 5.04318e−06 1.44344e−05 | 0 0 |
C26 | 30 | MeanVal StdVal | 2180.6 1076.14 | 1.85287e−08 1.31017e−07 | 0 0 |
C27 | 30 | MeanVal StdVal | 4.64308e−16 6.48251e−17 | 6.13319e−97 1.48311e−96 | 0 0 |
C28 | 30 | MeanVal StdVal | 1.16608e−15 1.40688e−16 | 1.3805e−35 9.76164e−35 | 0 0 |
C29 | 30 | MeanVal StdVal | 172.588 30.6762 | 1.81761e−15 4.69437e−15 | 0 0 |
C30 | 100 | MeanVal StdVal | 2.39054e−11 9.57251e−12 | 1.79625e−13 2.66457e−14 | 0 0 |
表2. ABC、HABC和IHABC算法在函数C01-C30上的结果
C20上,ABC和HABC的性能相当,其平均最优值为0.0370203和0.0351516,标准差为0.00797128和0.00822433,而IHABC的平均最优值为1.76447e−05,标准差为1.42544e−05,比ABC和HABC算法提高了3个数量级。多峰可分Michalewicz (MI)函数C17,取参数m = 10和维数n = 5时,它有5!个局部最优点,三种算法的平均最优值均达到全局最小值−4.68766,HABC和ABC算法的标准差均为2.75367e−15,IHABC的标准差为2.54399e−15,IHABC算法标准差最小。
对于单峰不可分Beale (BE)函数C01、Matyas (MA)函数C03、Colville (CO)函数C08、Rosenbrock (RO)函数C25、Schwefel’s Ridge (SR)函数C26、Schwefel’s problem 2.22 (S22)函数C28和Zakharov (ZA)函数C29,均无局部最小值,只有一个全局最小值,IHABC算法在50次试验中均找到了全局最小值0,标准差是0,寻优性能高于ABC和HABC算法。其中Colville函数在唯一最小值点
对于单峰不可分函数Helical valley problem (HV) C07、Powell (PO)函数C19和Schwefel’s Problem 2.21 (S21)函数C21,多峰不可分函数Perm (PE) C09和Power Sum (PS) C10,IHABC算法的寻优精度和稳定性要优于HABC和ABC算法,HABC算法则优于ABC算法。
对于多峰不可分函数Shekel’s Foxholes (SF)函数C04、Shubert (SH)函数C05、Hartman 3 (H3,4)函数C06,Shekel’s Problem Family (S4,10)函数C11和Hartman 6 (H6,4)函数C15,三种算法的平均最优值均能达到全局最小值,分别为0.998004、−186.731、−3.86278、−10.5364和−3.322;Goldstein and Price (GP)函数C02、Fletcher-Powell (FP)函数C12和Griewank (GR)函数C24,IHABC算法和HABC算法性能相当,平均最优值都取到了全局最小值,寻优性能和稳定性都超过了ABC算法;对于Weierstrass (WE)函数C22、Ackley (AC)函数C23 (n = 30维)和Ackley (AC)函数C30 (n = 100维),HABC算法和ABC算法性能相当,IHABC算法优于IHABC和ABC,能够得到全局最小值0,标准差也为0,对于Ackley函数,30维和100维时IHABC算法的寻优结果一样,表明了该算法的稳健性。
对于多峰不可分函数Whitley (WI) C18,维数n = 10时,全局最小值点为
Modified Langerman函数C13,C14,C16是非对称的复杂多模态函数,其局部最优解个数未知且随机分布,随着维数的增加,搜索难度增大。当维数n = 2时,三种算法在50次实验中均取得了全局最小值−1.08094,IHABC算法的标准差最小,算法最稳定;当维数n = 5时,50次实验中ABC、HABC、IHABC算法的平均最优值分别为−0.964959,−0.963356和−0.954508,标准差分别为0.000142,0.008745和0.016397,50次实验中三种算法分别42次、48次和33次得到全局最小值−0.965,IHABC算法10次得到局部最小值−0.9398,ABC算法在n = 5时,性能最好;当维数n = 10时,ABC、HABC、IHABC算法的平均最优值分别为−0.533924、−0.569837和−0.6077,标准差分别为0.084979、0.143236和0.221634,50次实验中,ABC、HABC和IHABC算法分别有0、3和4次达到全局最小值−0.9605,分别有47、43和24次寻优得到局部最小值−0.5132,意味着该函数在多个点处取得局部极小值−0.5132,ABC算法另外三次的寻优结果为−0.8057,−0.8059和−0.9649,HABC算法还得到局部最优值−0.9080三次,−0.8060一次,IHABC算法得到局部最优值−0.2749四次,−0.4286三次,−0.4829和−0.9645各两次,−0.5164、−0.5168、−0.5170、−0.8019、−0.80306、−0.9585、−0.9614、−0.9637、−0.9640、−0.9641和−0.9644各一次。与ABC、HABC算法相比,IHABC算法的通用性和局部寻优能力更强,在得到全局最小值的同时,能搜索到更多的局部最优值。
总体来说,新算法IHABC的性能在23个函数上优于HABC算法,在5个函数上与HABC相当,在2个函数上略逊于HABC算法。实验结果证明了IHABC算法比HABC以及ABC算法在寻优精度上有了相当程度的提高。
基于Hooke-Jeeves的人工蜂群算法HABC,其全局搜索能力与局部寻优能力不均衡,局部寻优阶段初始解的选择易导致算法陷入局部最优,为解决这些问题本文提出基于Hooke-Jeeves的改进人工蜂群算法IHABC。新算法通过三个改进策略分别对蜂群的采蜜蜂更新公式、跟随蜂更新公式和局部寻优阶段的初始基点的选择以及局部寻优的步长进行了调整,最后将算法在30个测试函数上进行了数值实验。实验结果表明,新算法与HABC和ABC算法相比,在大部分测试函数上得到的全局最优解的精度更高,算法更稳定。
教育部人文社会科学青年基金项目(12YJCZH179),江苏省大规模复杂系统数值模拟重点实验室开放基金项目(201601)。
孙越泓,丁亚英. 基于Hooke-Jeeves的改进人工蜂群算法 An Improved Artificial Bee Colony Algorithm Based on Hooke-Jeeves Method[J]. 计算机科学与应用, 2017, 07(02): 134-145. http://dx.doi.org/10.12677/CSA.2017.72017