第 26 卷第 7 期
2009 年 7 月
计 算 机 应 用 研 究
Application Research of Computers
求 解 复 杂 函 数 优 化 问 题 的 混 合 蛙 跳 算 法
Vol.26 No.7
Jul.2009
倡
(1.商洛学院 数学与计算科学系, 陕西 商洛 726000; 2.西安电子科技大学 理学院, 西安 710071)
1,2, 刘三阳
2
赵鹏军
摘 要: 针对基本混合蛙跳算法在处理复杂函数优化问题时容易陷入局部最优、收敛速度慢的缺点,提出了一
种改进的混合蛙跳算法。 该算法把生物学中的吸引排斥思想引入到混合蛙跳算法中,修正了其更新策略,从而
维持了子群的多样性。 实验仿真结果表明,改进的混合蛙跳算法提高了算法的收敛速度,有效地避免了 SFLA
的早熟收敛问题,从而改善了对复杂问题的搜索效率,数值实验结果验证了算法的有效性和鲁棒性。
关键词: 混合蛙跳算法; 智能优化; 复杂函数
中图分类号: TP301.6 文献标志码: A 文章编号: 1001唱3695(2009)07唱2435唱03
doi:10.3969/j.issn.1001唱3695.2009.07.009
Shuffled frog leaping algorithm for solving complex functions
ZHAO Peng唱jun1,2, LIU San唱yang2
题的相似性而提出了一种新的基于全局协同搜索的智能优化
(1.Dept.of Mathematics & Computational Science, Shangluo University, Shangluo Shannxi 726000, China; 2.School of Science, Xidian Uni唱
versity, Xi’an 710071, China)
Abstract: Basic shuffled frog leaping algorithm(SFLA) easily trapped into local optima and had a slow convergence speed
when it was used to address complex functions, in order to overcome the shortcomings, this paper proposed an improved SF唱
LA.The proposed algorithm integrated the attraction唱repulsion mechanism in the field of biology into SFLA and modified upda唱
ting strategy, and thus maintains the subpopulation diversity.Experimental results show that the proposed SFLA enhances con唱
vergence velocity and avoids premature convergence effectively, improving the efficiency of search for complex functions.Al唱
so, numerical results demonstrate the effectiveness and robustness of the improved SFLA.
Key words: shuffled frog leaping algorithm(SFLA); intelligent optimization; complex functions
在大自然中,某些物种在它们漫长的进化过程中所形成的
算法的可行性和有效性。
生存方式和觅食行为为人类解决某些问题带来了新的启发。
1 基本SFLA
2000 年,Eusuff 和 Lansey 通过类比青蛙的觅食行为和优化问
基本 SFLA 是一种随机全局优化算法,与 GA 类似,SFLA
方法———混合蛙跳算法(SFLA)。 作为一种全新的仿生优化算
也是先随机从可行域中产生一组初始解( 这里称之为一群青
法,它结合了 Memetic 算法(memetic algorithm,MA) 和粒子群
蛙);然后根据每只青蛙所确定的目标函数值来确定吸引域,
[1],是
优化(particle swarm optimization,PSO) 算法两者的优点
以某种策略更新局部最差青蛙,使得搜索青蛙朝最优解移动。
继 PSO 算法之后的又一种新的群体智能优化算法,具有概念
下面以函数优化为例,介绍算法的基本步骤,将函数优化问题
简单、参数少、计算速度快、全局寻优能力强、易于实现等特点,
转换为求目标函数 f(x)在可行域中的最小值问题。 其中 x 为
并首次成功地解决了组合优化问题。 近年来这种算法不断得
解向量。
[1 ~8], 如函数优化、地下水管网优化
首先从已知可行域中随机选取 F 个点作为初始解( 青
设计、齿轮问题、旅行商问题、下料问题等,进一步证明它在解
蛙),设第 i 只青蛙为 xi =(xi1,xi2,…,xi
n),计算每只青蛙的目标
决优化问题上的优越性。 然而,与其他的智能优化算法一样,
函数值 f(xi),将每只青蛙根据其目标函数值按递减顺序排列。
SFLA 同样存在易收敛到局部最优、在求解部分函数优化问题
然后将整个青蛙群体划分为 S 个子群,每个子群中包含 m 只
时效果不够理想的缺陷。 根据没有免费的午餐(no free lunch,
青蛙。 在迭代过程中,第一个解进入第一个子群,第二个解进
NFL)定理
[9]:从解决实际问题的角度出发,融合不同类型的优
入第二个子群,一直分配下去,直到第 S 个解进入到第 S 个子
化算法,充分发挥它们各自的优势是解决问题的必然发展趋
群。 最后,第 S +1 个解又进入到第一个子群,第 S +2 个解又
势。 为提高算法性能,本文提出了一种高效、易实现的 SFLA
进入第二个子群,这样循环分配下去,直到所有解分配完毕。
在每一个子群中,目标函数值最好的解和目标函数值最差
(记为 ISFLA)。 该方法借鉴文献[10] 中的计算合力的思想,
的解分别记为 xb =(xb1,xb2,…,xb
n);群体
利用青蛙间的吸引与排斥机制,对算法的更新策略作了适当的
n)。 在每次迭代
中目标函数值最好的解记为 xg =(xg1,xg2,…,xg
修正。 函数仿真结果表明,改进后的 SFLA 克服了基本 SFLA
收敛缓慢、易陷入局部最优以及求解质量不高的缺点,验证了
中,对 xw 进行更新操作,其更新策略为
收稿日期: 2008唱10唱06; 修回日期: 2008唱12唱24 基金项目: 国家自然科学基金资助项目(60674108,60574075)
作者 简 介: 赵 鹏 军(1979唱), 男, 陕 西 渭 南 人, 硕 士, 主 要 研 究 方 向 为 最 优 化 理 论 与 方 法、 智 能 计 算 及 其 应 用 等(pengjunzhao@tom.com);
刘三阳(1959唱),男,陕西西安人,教授,博导,博士,主要研究方向为最优化理论及其应用、信息网络的算法与性能优化、非光滑/非线性分析等.
n)和 xw =(xw1,xw2,…,xw
到完善和广泛的工程应用
·6342·
计 算 机 应 用 研 究
代替
Dj =r1 ×(xb -xw)
xw′=xw +Dj( -Dmax≤Dj≤Dmax)
的目标函数值优于 xw 的目标函数值,则用 xw′
(1)
(2)
其中:r1∈U(0,1),j =1,2,…,S;Dmax 表示青蛙的最大移动步
长。 如果 xw′
xw;如果没有改进,则用 xg 替换 xb 重复执行式(1)(2);如果仍
没有改进,则从可行域中随机产生一个新解取代原来的 xw,子
群中最差青蛙的位置就得到了更新,在指定迭代次数内继续执
行以上操作,这样也就完成了 SFLA 的一次迭代。 从式(1) 可
以看出,移动步长的大小直接影响着算法的全局收敛性,当其
较大时,有利于青蛙在全局范围内广泛搜索,但有可能飞过最
优解;当其较小时,青蛙可在在局部区域内精细搜索,但容易陷
入局部最优。
与 GA 类似, 此算法也存在群体的产生、进化、交叉及信
息的传递和交换等操作, 但进化策略更加灵活,在进行局部搜
索的基础上更新全局最优。 即先在子群中进行个体间信息的
传递,当子群进化到一定阶段后,各个子群之间再进行信息交
换以实现子群间的混合操作。 SFLA 既可以从局部最优的陷阱
中跳出, 更有可能求得优化问题的全局最优解,具有全局优化
与局部细致搜索的优点,可以用来优化连续和离散问题,并且
[8]。
2 改进的 SFLA
吸引与排斥反映了自然界物质运动的基本形式,因而在
SFLA 的更新策略中仅仅依靠 xw、xb 和 xg 是不能够充分地反映
群体的智能行为的。 对一个子群而言,周围青蛙的状态对子群
最差青蛙的行为也会产生不同的影响,表现为对最差青蛙的排
斥力。 这些青蛙通过相互之间的竞争和协作,互相促使彼此提
高性能,最差青蛙在信息的引导和推力的作用下进行移动,从
而实现群体的协同进化。
为充分利用群体中的有利信息,新算法在保持原有算法其
他步骤不变的基础上,将 SFLA 中的更新策略作了一些改进,
提出了下面两个改进策略。
策略1 改进后的 SFLA 让每只青蛙带上一定量的电荷,
其所带的电荷由待优化的目标函数值决定,然后通过计算子群
长。 与电磁力的计算相似的是,该力是通过将来自其他青蛙的
力进行矢量叠加而得到的;不同的是力的计算公式中距离的因
素被消除,以加快算法收敛的速度,有助于避免陷入局部最优。
内其他青蛙施加给该子群中最差青蛙的合力来确定其移动步
具有较强的鲁棒性
子群中青蛙 i 所带的电荷 qi 由式(3)计算:
k =1(f(xk) -f(xg))]
qi =exp[ -n(f(xi) -f(xg)) /∑m
(3)
其中:f(xi)为青蛙 i 的当前目标函数值;f(xg) 为当前最优目标
函数值。 因为式(3)中各青蛙的电荷都是没有正负号的,所以
它不同于真正的电荷。 在每一次迭代中,根据群体中相应青蛙
目标函数值的相对大小来计算它所带的电荷,且电荷是随迭代
次数而变化的。 用这种方式表示电荷,目标函数值较小的粒子
将拥有较大的电荷量,具有更强的吸引力。 由于在高维多个体
的情形下,式(3) 中分式的值可能变得很小,进而在计算指数
函数时可能引起溢出问题,故用因子 n 乘分式以免这种情况发
生。 作用在子群最差青蛙上的分力由式(4)计算:
(4)
子群内其他青蛙将排斥最差青蛙,排斥力引导青蛙探索未
j =qjqw(xj -xw)
Fw
Dj =r1 ×(xb -xw) +aw
xw′=xw +Dj( -Dmax≤Dj≤Dmax)
第 26 卷
搜索到的区域。 计算合力的目的就是使青蛙具有恰当的移动
步长,在进化初期,在一定程度上弱化青蛙的全局搜索能力,
以最大化地扩展寻优范围,促使算法快速定位较好的搜索区
域;而在进化的中后期,确保青蛙局部搜索能持续进行,为青蛙
跳出局部最优提供了可能。
计算合力 Fw 后,为确保青蛙移动的可行性,作用在每只
青蛙上的力都被作了归一化处理,于是新的更新策略为
(5)
(6)
其中:aw =r2 ×Fw/‖Fw‖2,r2∈U(0,1),j =1,2,…,S,这样改
进后的 SFLA 既拥有基本 SFLA 的优点,同时它在一定程度上
也充分利用了系统内的有利信息,增强了子群的多样性,防止
了早熟收敛的发生,使得整个群体从中受益。
策略2 为进一步提高算法的寻优性能,在按策略 1 的进
化过程中,如果青蛙忽略了某些搜索区域时,过早收敛就会发
生。 为有效避免过早收敛,对策略1 作了适当的改进,给予子
j 一定的扰动,这样可以使青蛙在搜
群中最差的青蛙的分力 Fw
索范围中移动到易被忽视的区域,增强其全局搜索的能力。 于
是作用在子群中最差青蛙上的分力 Fw
(7)
j =r3qjqw(xj -xw)
Fw
其中:r3∈U(0,1)。 同时,引入一个参数 r4∈U(0,1),给予该
分力的方向一定的扰动,即如果随机数 r5 比 r4 小,那么该分力
将反向。
j 则由式(7)计算:
群内更新次数 It,混合迭代次数 N max。
综上所述,本文所提出的 SFLA 的具体实现过程如下:
a)初始化群体及参数。 青蛙总数 F,子群数 S,初始解,子
b)对每只青蛙,计算其目标函数值 f(xi)。
c)将 F 只青蛙按目标函数值降序排列分为 S 个子群。
d)确定每个子群中目标函数值最好和最差的个体 xb 和
xw,以及群体中最优个体 xg,在指定迭代次数 It 内按式(5)(6)
改进最差解。
e)对各子群,按目标函数值降序排列个体,重新混合构成
新的群体。
f)判断算法的终止条件是否满足,若满足,输出最优目标
函数值的相关信息,算法结束;否则跳转至 b)。
新算法和基本 SFLA 的时间复杂度均为 O(N max ×F2)。
由于基本 SFLA 的更新策略只是针对子群中的最差青蛙,而新
算法也只是对基本 SFLA 的更新策略作了适当的修正,不但不
会对子群中非最差青蛙产生很大影响,反而可以尽可能地避免
青蛙聚集在一起,有助于算法较早地获得最优解。
从上述步骤可以看出,新算法在整个进化过程中,能提高
群体的多样性和青蛙搜索的遍历性,在探测(exploration) 与开
采(exploitation)之间有一个很好的平衡,可以确保群体持续进
化,有利于提高收敛速度,并避免陷入局部最优,提高了算法的
全局搜索能力,但由于新算法在每次迭代过程中都要计算子群
最差青蛙所受的力,运行时间会有所增加。
3 数值实验
优化问题进行仿真研究。 其中 Sphere[6]
数,Rosenbrock[6]
wank[1,6,11]、Ackley[11]
及 Schaffer’s f7[1,6]
为了验证ISFLA 的有效性,本文选取以下六个典型的连续
函数是 简单的多 峰 函 数、Rastrigin[11]、Grie唱
函数是简单的单峰函
函数是复杂的多峰函
赵鹏军,等:求解复杂函数优化问题的混合蛙跳算法
·7342·
大提高,能有效地避免算法陷入局部最优,具有更强的寻优
能力。
第 7 期
数。 并将新算法与基本 SFLA 的优化结果进行比较。 其中 IS唱
FLA1 采用策略1,ISFLA2 采用策略 2。 六个测试函数的表达
式如下:
i ,f2(x) =∑n -1
i =1[100(xi +1 -x2
1/n∑n
i =1x2
i +1)0.25[ sin2(50(x2
f1(x) =∑n
i )2 +(xi -1)2]
i =1x2
i -10 cos(2πxi) +10],f4(x) =1/4000 ∑n
f3(x) =∑n
i -∏n
i =1cos(xi /i) +1
i =1[x2
i =1x2
i =1 cos 2πxi) +20 +1
f5(x) =-20 exp( -0.2
i ) -exp(1/n∑n
f6(x) =∑n -1
i +1)0.1) +1]
i +x2
i +x2
i =1(x2
在算法性能测试中,采用文献[1] 中建议的参数设置,青
蛙总数 F =200,子群数 S =20,子群内更新次数为 It =10,混合
迭代次数为 N max =500,函数变量维数 n =30。 为消除随机性
对算法运行结果的影响,每个算法均连续运行30 次,以平均目
标函数值作为寻优结果。
函数的初始化范围及对比实验结果如表 1 所示。 从表中
数值计算结果的对比可以看出,在相同精度要求的前提下,新
算法对于上述六个典型测试函数的计算结果均优于基本 SF唱
LA,有效地提高了算法的全局收敛性能。
表 1 初始化范围及实验结果
函数
初始化范围
算法
理论
最优值
f1(x)
f2(x)
f3(x)
f4(x)
f5(x)
[ -5
.12,5.12] n
[ -30,30] n
[ -5
.12,5.12] n
[ -600,600] n
[ -32,32] n
SFLA
ISFLA1
ISFLA2
SFLA
ISFLA1
ISFLA2
SFLA
ISFLA1
ISFLA2
SFLA
ISFLA1
ISFLA2
SFLA
ISFLA1
ISFLA2
SFLA
ISFLA1
ISFLA2
从表中的数据和平均进化曲线看,由于使用新的更新策略
式” ,可以使得算法在进化初期能充分遍历搜索空间,搜索到
较好的区域,而在进化中后期有一个较强的精细搜索能力,在
一定程度上避免陷入局部最优。 因而对 SFLA 的这种改进是
可行和有效的,针对函数优化问题表现出了极强的适应性、稳
定性、鲁棒性和极高的全局搜索能力,给大量非线性、不可微和
多峰值复杂优化问题的求解提供了一种新的思路和解决方法。
4 结束语
混合蛙跳算法是一种新的随机智能搜索算法,具有全局搜
索的能力。 本文借鉴类电磁机制算法中计算合力的思想,修正
了其更新策略,在每次迭代中,子群信息得到有效更新,使算法
获得持续搜索的能力,能够对搜索空间进行更有效的搜索。 仿
真优化结果表明了这种算法对函数优化问题的优越性。 随后
将用小生境技术和均匀设计方法进一步改善 SFLA 的性能,并
用之求解实际问题将是进一步的研究工作。
参考文献:
[1] ELBELTAGI E, HEGAZY T, GRIERSON D.Comparison among five
evolutionary唱based optimization algorithms [ J]. Advanced Engi唱
neering Informatics, 2005,19(1):43唱53.
[2] EUSUFF M M, LANSEY K E.Optimization of water distribution net唱
work design using shuffled frog leaping algorithm [J].Journal of
Water Resources Planning and Management, 2003,129(3):
210唱225.
[3] LIONG S Y, ATIQUZZAMAN M.Optimal design of water distribution
network using shuffled complex evolution [J].The Institution of
Engineers, 2004,44(1):93唱107.
[4] EUSUFF M M.Water resources decision making using meta唱heuristic
optimization methods[D].Tucson: University of Arizona, 2004.
[5] ELBEHAIRY H, ELBELTAGI E, HEGAZY T, et al.Comparison of
two evolutionary algorithms for optimization of bridge deck repairs
[J]. Computer唱Aided Civil and Infrastructure Engineering,
2006,21(8):561唱572.
[6] 李英海, 周建中, 杨俊杰, 等.一种基于阈值选择策略的改进混
合蛙跳算法[J].计算机工程与应用, 2007, 43(35):19唱21.
[7] 吴华丽, 汪玉春, 陈坤明, 等.基于混合蛙跳算法的成品油管网
优化设计[J].石油工程建设, 2008, 34(1):14唱16.
[8] 王辉, 钱锋.群体智能优化算法[J].化工自动化及仪表, 2007,
34(5):7唱13.
[9] WOLPERT D H, MACREADY W G.No free lunch theorems for opti唱
mization[J].IEEE Trans on Evolutionary Computation,1997,1
(1):67唱82.
[10] BIRBIL S I, FANG S C.An electromagnetism唱like mechanism for
global optimization[J].Journal of Global Optimization, 2003,25
(3):263唱282.
[11] 贺毅朝, 寇应展, 陈致明.一种基于全局劣汰策略的混合粒子群
优化算法[J].计算机应用研究, 2007, 24(8):75唱78.
0
0
0
0
0
平均
最优值
.012 404
0
.002 670
0
.002 863
0
.612 263
213
.985 116
45
.887 182
43
17
.459 959
10
.229 316
.791 747
8
.867 100
0
.153 619
0
0
.094 099
1
.534 676
0
.042 733
.041 580
0
.801 496
28
19
.372 518
18
.425 624
标准差
.010 513
0
.000 054
0
.000 064
0
74
.344 832
27
.263 672
.577 346
6
7
.57 0295
4
.33 2496
.713 401
3
.211 202
0
.080 542
0
0
.083 272
0
.727 352
0
.004 903
.004 597
0
.090 330
7
7
.815 644
7
.086 324
平均运行
时间/s
9
.9
25
.2
28
.1
.8
10
.1
25
.2
30
10
.0
25
.5
.5
29
.6
9
26
.1
27
.3
9
.9
30
.2
.1
31
.9
14
31
.2
.5
35
0
[ -100,100] n
f6(x)
图1 ~6 分别是上述六个测试函数采用三种算法求解得到
的平均进化曲线。 从图中可以看出,在迭代次数相同的情况
下,由于新算法在每次迭代中都有一个更好的子群信息和较强
的局部搜索能力,收敛性能都好于基本 SFLA。
数值实验结果表明,这样改进之后收敛速度都得到了很