万有引力算法(GSA)在2009年首先被Rashedi等人提出来[1],这种算法是基于宇宙间的万有引力定律和运动定律而得出的.对于许多复杂的优化问题如目标控制、模式识别、图像处理以及目标函数优化等万有引力算法都能很好地加以解决.
在GSA的进化过程中,物质向着当前最优值的附近移动,出现了停滞和收敛速度慢等现象. Nihan Kazak和Alpaslan Duysak[2]在研究的过程中,针对标准引力算法收敛速度慢的缺点,给出了一种成员卫星算法,物质群每个物质称为一个成员个体,每个成员都有各自的若干个卫星,成员和卫星一起进化,保证了算法在当前最优值附近进行更加精细的搜索.刘勇和马良[3]提出了一种解决非线性极大极小问题的混沌万有引力算法,利用混沌优化对当前的最优位置进行精细搜索, 为解决早熟收敛现象提供了一个方向.而针对粒子群算法(PSO)的早熟现象以及收敛速度慢的缺点,Natsuki Higashi和Hitoshi Iba[4]提出了一种基于高斯变异的粒子群算法,将应用在遗传算法(GA)的高斯变异引入PSO,提高了PSO算法的性能.在此基础上,Tang Jun和Zhao Xiao-juan[5]提出了一种带有自适应局部搜索算子的PSO,在进化过程中围绕着全局最优个体附近进行局部搜索,提高了最优值附近的寻优能力.Sarafrazi, Nezamabadi-pour以及Saryazdi[6]受天文学中“分裂”思想的启发,提出了一种具有分裂功能的万有引力算法,将满足一定条件的物质分裂,避免了算法在进化过程中出现停滞的状况.
变异是一种跳出局部最优解的有效算子,并且对最有物质变异操作对万有引力算法的效率有重大影响,为此本文提出了一种围绕最优物质变异的万有引力算法,在保持和提高问题解的质量的同时提高引力算法的搜索能力和收敛速度.该算法的主要思想是在进化的过程中在最优物质的附近进行变异.如果变异产生出来的新物质优于当前的最优物质,则替换原有的最优物质继续进化.对8个常用的测试函数的实验结果表明,与标准的引力算法(SGSA)和混沌引力算法(CGSA)的比较,新算法有较强的搜索能力和较高的稳定性.
1 基于变异的万有引力算法优化问题的模型为minf(x), 其中,x∈Rn, R为实数域, x =(x1, x2, …, xn)T, xi∈[ai, bi](i=1, 2, …,n).
1.1 万有引力算法简介万有引力算法是根据宇宙间的引力法则和物质间的相互作用的启发而提出来的新的优化算法.根据牛顿定律任何两个物质之间都是相互吸引的,正是由于引力的存在使得物质向着最优解附近运动,在这种算法里,质量比较大的物质比质量小的物质运动得慢,从而相互作用的物质之间都朝着质量大的运动.物质的位置就是问题的解, 当算法满足结束的条件时,优化问题也就达到了最优解.
假设每个物质被定义在一个n维的搜索空间里,由N个物质组成的一个物质群为X ={x1, x2, …, xn},其中第i个物质的位置是Xi=(xi1, xi2, …, xid, …, xin)T, xid为物质i在空间第d维的位置,i=1, 2, …, N.
万有引力常量定义如下:
| $ G\left( t \right) = {G_0}{{\rm{e}}^{\left( { - \alpha \frac{t}{T}} \right)}}, $ | (1) |
其中,G0为一个初始值,α为一个常数,t为当前代数,T为最大迭代次数.
当前物质的质量是由适应值计算出来的,对于极小值问题,有
| $ \begin{array}{l} {\rm{best}}\left( t \right) = {\min _{j = \left\{ {1, \cdots ,N} \right\}}}{\rm{fi}}{{\rm{t}}_j}\left( t \right),\\ {\rm{worst}}\left( t \right) = {\max _{j = \left\{ {1, \cdots ,N} \right\}}}{\rm{fi}}{{\rm{t}}_j}\left( t \right). \end{array} $ | (2) |
其中best(t),worst(t)分别表示在第t代物质群中最好和最坏的适应值. fitj(t)表示物质j在第t代的适应值,每一个物质在第t代的质量为
| $ \begin{array}{l} {M_{ai}} = {M_{pi}} = {M_{ii}} = {M_i},i = 1,2, \cdots ,N.\\ {m_i}\left( t \right) = \frac{{{\rm{fi}}{{\rm{t}}_i}\left( t \right) - {\rm{worst}}\left( t \right)}}{{{\rm{best}}\left( t \right) - {\rm{worst}}\left( t \right)}}, \end{array} $ | (3) |
| $ {M_i}\left( t \right) = \frac{{{m_i}\left( t \right)}}{{\sum\nolimits_{j = 1}^N {{m_j}\left( t \right)} }}. $ | (4) |
在第t代,第d维定义物质j对物质i作用的万有引力是
| $ F_{ij}^d\left( t \right) = G\left( t \right)\frac{{{M_{pi}}\left( t \right) \times {M_{aj}}\left( t \right)}}{{{R_{ij}}\left( t \right) + \varepsilon }}\left( {X_j^d\left( t \right) - X_i^d\left( t \right)} \right), $ | (5) |
其中,Rij(t)为物质i和物质j之间的欧氏距离,ε为一个很小的值.物质i在第d维所受到的合力为
| $ F_i^d\left( t \right) = \sum\limits_{j \in k{\rm{best}},j \ne i}^N {{\rm{ran}}{{\rm{d}}_j}F_{ij}^d\left( t \right)} , $ | (6) |
randj为介于0和1之间的随机数,kbest从k0到1随着代数t线性地减小,使得算法到最后在搜索空间中只有最好的解的那个物质去作用于其他的物质.
由牛顿运动法则,在第t代物质i在第d维的加速度为
| $ a_i^d\left( t \right) = \frac{{F_i^d\left( t \right)}}{{{M_{ii}}\left( t \right)}}, $ | (7) |
物质的速度更新为
| $ \left. \begin{array}{l} V_i^d\left( {t + 1} \right) = {\rm{ran}}{{\rm{d}}_i}V_i^d\left( t \right) + a_i^d\left( t \right)\\ X_i^d\left( {t + 1} \right) = X_i^d\left( t \right) + V_i^d\left( {t + 1} \right) \end{array} \right\}, $ | (8) |
其中,randj为0和1之间的随机数.当终止条件达到以后,算法结束.
1.2 基于最优变异的引力算法考虑到标准的引力算法在进化的过程中,系统中的物质都向着当前最优物质的位置移动,如果算法达到循环结束条件后输出的解并不是所期望的最优解,则算法陷入了局部最优,一旦陷入了局部最优就很难使其跳出当前的状态[7-9].针对该缺点,本文给出了一种变异算子,该算子根据当前的最优物质进行变异,赋予了算法更强的搜索能力[10-15].
1.2.1 变异算子| $ {\rm{gbes}}{{\rm{t}}_k}\left( {t + 1} \right) = {\rm{gbes}}{{\rm{t}}_k}\left( t \right) + 0.5rn\;{\rm{gbes}}{{\rm{t}}_k}\left( t \right), $ | (9) |
其中,gbestk(t)为第t代全局最优物质在第k维的位置,gbestk(t+1)为经过上式变异后在第k维新生成的位置.高斯分布的概率密度函数为:
|
图 1 高斯分布曲线图 Figure 1 Gaussian distribution |
根据该图像的意义,遵从正态分布的随机变量的概率规律为取0附近的值的概率大,而取距离0越远的值的概率越小.由式(9)可以看出,变异后的取值在当前最优位置上下浮动,并且兼顾了算法所要考虑的探索能力和开发能力.
1.2.2 约束处理考虑到这种变异算子可能产生一些越界的物质,本文将采用下面的方式进行处理,假设变异后的物质i的位置是Xi′=(xi1, xi2, …, xid, …, xin)T, xid代表物质i在空间第d维的位置,i=1, 2, …, N.则有
| $ \begin{array}{l} {\rm{if}}\left( {x_i^d < {x^d}\_\min } \right){\rm{or}}\left( {x_i^d > {x^d}\_\max } \right),\\ x_i^d = {x^d}\_\min + {\rm{rand}} * \left( {{x^d}\_\max - {x^d}\_\min } \right),\\ {\rm{end}}. \end{array} $ |
其中xd_max和xd_min为最优物质在第d维的上下界,rand为介于0和1之间的随机数.
本文算法的主要步骤的流程图如图 2所示.
|
图 2 算法流程图 Figure 2 The framework of OMGSA |
在实验过程中,为了验证本文算法的效果,这里用了8个最小值优化函数来比较3种算法的效果,这8个测试函数中f1~f4为单模测试函数,f5~f8为多模测试函数,维数都取30维.测试函数如表 1所示.
| 表 1 测试函数 Table 1 Test functions |
3种算法分别是标准引力算法(SGSA)[1]、混沌引力算法(CGSA)[3]以及本文设计的改进的引力算法(OMGSA).实验中,种群规模N取100,最大迭代次数为2 000,G0取100,k0取100.每个算法独立运行30次,得出了循环最后的最优值(BSF),最优值的平均值(ABSF)以及最优值的标准差(STDBSF),如表 2所示.
| 表 2 计算结果 Table 2 Computational results |
从表 2中可以看出,在函数f1~f8中,OMGSA的最优值以及最优值的平均值都比SGSA和CGSA好,对于4个单模测试函数,OMGSA明显优于CGSA和SGSA,对于f1, CGSA只是略优于SGSA,而OMGSA将标准遗传算法的最优值提高了多个数量级,无论是对于BSF、ABSF还是STDBSF都是如此.相似的情况也可以从其他的3个单模函数的表现得到体现.f5作为一个容易发生搜索越界的多模函数,算法也会很容易陷入停滞状态,而OMGSA很好地解决了这个问题,得到的最优解明显优于其他两个算法.对于f6本文的算法在搜索后输出的最优解可以达到已知的全局最优值0.另外两个多模函数从表中的数据也可以看出本文算法无论在求解精度和稳定性方面都表现出了很好的性能.表 2的数值结果表明,OMGSA明显优于另外的两个算法.
图 3是各算法的进化曲线.通过收敛曲线图可以发现,OMGSA不仅具有良好的求解精度, 也具有很好的收敛速度.对于f1、f2和f4的进化过程中发现OMGSA在进化的前期就能很快地收敛到最优解,由于单峰函数只有一个极值点,物质之间相互吸引,加上一个变异算子使得算法可以在当前最优解附近探索到更好的解,从而引导物质群向更好的位置进化.对于f5~f8多峰函数,从f5和f8可以看出,没有这种变异算子的标准引力算法在进化的中后期陷入了停滞状态, 无法找到周围更好的解,而加上变异算子后算法在进化过程中总能够探索出更好的解, 使得算法不断地进化.f6和f7的收敛速度比较其他两个都有很大的提升.总体上可以看出改进的算法突破了局部约束探索到周围更好的解.相比于其他的两个算法,本文的算法能够以更短的代数达到精确的解.
|
图 3 f1~f8的进化曲线 Figure 3 f1~f8 convergence curve |
由f4、f6~f8的进化曲线可以看出,本文的算法在进化的前期就以很快的速度达到最优值.由f3和f5的进化曲线可以看出,本文算法在进化过程中可以突破出局部极值,向最优值进化.
3 结论本文提出了一种围绕最优个体附近进行变异的万有引力算法,通过一系列的优化函数对其性能进行了测试.测试的结果表明改进后的OMGSA算法求解精度更高,收敛速度更快,是一种稳健的算法.
| [1] |
Rashedi E, Nezamabadi H, Saryazdi S. GSA:A gravitational search algorithm[J].
Information Sciences, 2009, 179(13): 2232-2248.
DOI: 10.1016/j.ins.2009.03.004. |
| [2] |
Nihan Kazak, Alpaslan Duysak. Modified gravitational search algorithm[EB/OL]. (2012-07-04)[2012-12-11]. http://ieeexplore.ieee.org/Xplore/guesthome.jsp.
|
| [3] |
刘勇, 马良. 非线性极大极小问题的混沌万有引力搜索算法求解[J].
计算机应用研究, 2012, 29(1): 47-48.
Liu Y, Ma L. Solving nonlinear minimax problems based on chaos gravitational search algorithm[J]. Application Research of Computers, 2012, 29(1): 47-48. |
| [4] |
Higashi N, Iba H, Particle swarm optimization with Gaussian mutation[EB/OL]. (2003-07-26)[2012-12-10]. http://ieeexplore.ieee.org/Xplore/guesthome.jsp.
|
| [5] |
Tang J, Zhao X J. A hybrid particle swarm optimization with adaptive local search[J].
Journal of Networks, 2010, 5(4): 411-418.
|
| [6] |
Sarafrazi S, Nezamabadi-pour H, Saryazdi S. Disruption: a new operator in gravitational search algorithm[J].
Scientia Iranica, 2011, 8(3): 539-548.
|
| [7] |
Soleimanpour-moghadam M, Nezamabadi-pour H. An improved quantum behaved gravitational search algorithm[EB/OL]. (2012-05-17)[2012-12-13]. http://ieeexplore.ieee.org/Xplore/guesthome.jsp.
|
| [8] |
Seyedali Mirjalili, Siti Zaiton Mohd Hashim. A new hybrid PSOGSA algorithm for function optimization[EB/OL]. (2010-12-05)[2012-12-13]. http://ieeexplore.ieee.org/Xplore/guesthome.jsp.
|
| [9] |
徐遥, 安亚静, 王士同. 基于三角范数的引力搜索算法分析[J].
计算机科学, 2011, 38(11): 224-230.
Xu Y, An Y J, Wang S T. Analyzing of gravitational search algorithm based on triangular norms[J]. Computer Science, 2011, 38(11): 224-230. |
| [10] |
王晓慧, 刘雪英, 白梅花. 引入高斯变异和最速下降算子的人口迁移算法[J].
计算机工程与应用, 2009, 45(20): 57-60.
Wang X H, Liu X Y, Bai M H. Population migration algorithm the Gaussian mutation and the steepest descent operator[J]. Computer Engineering and Applications, 2009, 45(20): 57-60. DOI: 10.3778/j.issn.1002-8331.2009.20.017. |
| [11] |
张晓伟. 基于混沌局部搜索的双种群遗传算法[J].
计算机工程, 2011, 37(22): 185-190.
Zhang X W. Dual population genetic algorithm based on chaotic local search[J]. Computer Engineering, 2011, 37(22): 185-190. DOI: 10.3969/j.issn.1000-3428.2011.22.061. |
| [12] |
潘伟, 刁华宗, 井元伟. 一种改进的实数自适应遗传算法[J].
控制与决策, 2006, 21(7): 792-800.
Pan W, Diao H Z, Jing Y W. An improved real-value adaptive genetic algorithm[J]. Control and Decision, 2006, 21(7): 792-800. |
| [13] |
Zhao W. Adaptive image enhancement based on gravitational search algorithm[J].
Procedia Engineering, 2011, 15: 3288-3292.
DOI: 10.1016/j.proeng.2011.08.617. |
| [14] |
Rashedi E, Nezamabadi-Pour H, Saryazdi S. Filter modeling using gravitational search algorithm[J].
Engineering Applications of Artificial Intelligence, 2011, 24(1): 117-122.
DOI: 10.1016/j.engappai.2010.05.007. |
| [15] |
Caponetto R, Fortuna L, Fazziono S, et al. Chaotic sequences to improve the performance of evolutionary algorithms[J].
IEEE Trans on Evolutionary Computation, 2003, 7(3): 289-304.
DOI: 10.1109/TEVC.2003.810069. |
2014, Vol. 31