粒子群优化算法 (particle swarm optimization, PSO) 是Kennedy和Eberhart于1995年提出的一种模拟鸟群社会行为的群体搜索算法。该算法简洁明了,具有良好的寻优性能,至今已广泛应用于科学、工程等许多领域。
随着对PSO算法及应用的不断深入研究,发现该算法和其他智能优化算法一样也存在着容易陷入局部最优问题。为提高其寻优性能,PSO算法不断改进,主要围绕三个方面:1) 增加控制参数,通过引入惯性权重因子[1]、收缩因子[2]、被动聚集项[3]来防止粒子陷入局部最优;通过引入时变加速因子[4]来提高算法的效率和收敛速度。2) 引入多种群协作[5]和动态种群概念[6],通过多种群协作和种群的动态调整来提高算法的寻优能力。3) 寻找有效的寻优策略,其研究主要集中在两条途径,一是引入随机进化[7-8],二是对寻优策略进行自适应调整。至今PSO算法已得到深入研究,但陷入局部最优的问题仍然没能完全解决,还有进一步改进的空间。
鉴于工程实际中的优化问题往往需要满足各种要求和约束,如何处理约束也是优化研究的一个重要方向。不过由于利用罚函数法可以将约束问题转化为无约束问题,使得人们的研究更多地集中于无约束问题。后来发现,将无约束优化算法直接应用于约束问题时,寻优效果往往并不十分理想。为此,近年来人们提出了一些针对复杂约束的优化算法[9-10, 15-20],仿真结果表明这些算法对于很多复杂约束问题的寻优效果相当突出,得到了广泛认可。但是进一步研究可以发现,这些算法往往不能很好地解决多极值点的约束优化问题。因此,寻找一个能够很好地处理带有复杂约束的多极值点问题的算法具有一定理论意义和实际需求。
本文将多种群并行寻优与随机进化思想相结合,提出一种基于种群随机分组和随机差分策略的改进粒子群优化算法,同时给出了一种新的约束处理方法,并将该算法应用于焊接梁设计问题。
1 粒子群优化算法一个由M粒子组成的群体在D维搜索空间中以一定的速度飞行,每个粒子在搜索时,根据自己搜索到的历史最好点和群体内其他粒子的历史最好点进行位置的变化。粒子的位置和速度更新公式:
| $ \eqalign{ & \;\;\;\;\;\;\;{\mathit{\boldsymbol{x}}_{ij}}\left( {t + 1} \right) = {\mathit{\boldsymbol{x}}_{ij}}\left( t \right) + {\mathit{\boldsymbol{v}}_{ij}}\left( {t + 1} \right) \cr & {\nu _{ij}}\left( {t + 1} \right)w{v_{ij}}\left( t \right) + {c_1}{r_{1j}}\left( t \right)\left[{x_{ij}^*\left( t \right)-{x_{ij}}\left( t \right)} \right] + \cr & \;\;\;\;\;\;\;\;\;\;{c_2}{r_{2j}}\left( t \right)\left[{{x_{bj}}\left( t \right)-{x_{ij}}\left( t \right)} \right], \cr} $ | (1) |
| $ i = 1, 2, \cdots, M;j = 1, 2, \cdots, D $ | (2) |
式中:xi(t) 和vi(t) 分别表示粒子i在t时刻的位置和速度,xi*(t)=(xi,1*(t),xi,2*(t),…,xi,D*(t))T和xb(t)=(xb,1(t),xb,2(t),…,xb,D(t))T分别表示粒子i到第t时刻时的自己最好位置和所有粒子的全局最好位置,c1和c2为学习因子,r1j(t) 和r2j(t) 是[0,1]区间上的随机数。
2 多种群随机差分粒子群算法人们在PSO算法研究中发现,通过两种途径可以克服算法陷入局部最优。一种途径是引入多种群协作[5]和动态种群概念[6],可以使得粒子在寻优中不是单一以全局最好粒子作为寻优引导方向,而以一定概率分别向多个方向引导。寻优方向的多样性增加了寻优路径的多样性。另一种途径是不以某一个或几个确定的方向来引导粒子寻优,而是以一定概率在某些较好方向进行随机引导,增加了寻优路径的随机性,文献[11]提出了一种基于动态拓扑的粒子群算法。在算法前期,采用概率选择机制弱化全局最优粒子的影响力,以增强解的多样性,而在算法后期,强化全局最优粒子的影响力,最终能够收敛到一个最优解。本文将上述两种改进思想加以融合提出一种多种群随机差分粒子群算法,简记为MPPSO算法。
2.1 MPPSO算法的基本步骤1) 初始化。
根据实际确定问题维数D,算法中的学习因子c1、c2,最大迭代次数N,子种群个数K及每一子种群内粒子个数。为简单起见,可取子种群中粒子个数均为m,则粒子总数为M=m×K。随机产生m×K个初始粒子xij(0),i=1,2,…,m,j=1,2,…,K。计算粒子适应度值,针对每个粒子计算出相应的适应度函数值f(xij(0))。
2) 计算吸引概率。
在每组中基于目标函数值找出组内最优值和最优粒子以及全局目标函数最大值fmax。计算每个粒子受到各个小组最优粒子的吸引概率:
| $ \eqalign{ &{p_{ij}}\left( t \right) = {{{f_{\max }}\left( t \right) - f\left( {x_j^*\left( t \right)} \right)} \over {\sum\limits_{j = 1}^{j = K} {\left( {{f_{\max }}\left( t \right) - f\left( {x_j^*\left( t \right)} \right)} \right)} }} \cr &i = 1, 2, \cdots, m \times K;\;\;j = 1, 2, \cdots, K; \cr &\;\;\;\;\;\;\;\;\;\;t = 1, 2, \cdots, N \cr} $ | (3) |
式中:xj*为第j组中的最优的粒子。
3) 产生新的粒子。
① 对于每个粒子,基于受到各个小组最优粒子的吸引的概率pij(t),利用轮盘赌的方法确定其可能搜索方向j,即可能向第j组的最优粒子方向搜索。
② b为变异参数,取随机数b=rand (0,1),基于选择的搜索方向j,利用式 (4)~(6) 产生新的粒子的第s维分量。
| $ \eqalign{ & \;\;\;\;\;\;\;\;\;\;\;\;\;\mathit{\boldsymbol{\tilde x}}_{ij}^s\left( {t + 1} \right)\mathit{\boldsymbol{x}}_{ij}^s\left( t \right) + \mathit{\boldsymbol{v}}_{ij}^s\left( {t + 1} \right) \cr & \mathit{\boldsymbol{v}}_{ij}^s\left( {t + 1} \right)\left\{ \matrix{ {c_1}{r_1}\left[{x_{ij}^s\left( t \right)-x_{ij}^{s*}\left( t \right)} \right], {p_{ij}}\left( t \right) > b \hfill \cr {c_2}{r_2}\left[{x_{ij}^s\left( t \right)-x_{ij}^s\left( t \right)} \right], {p_{ij}}\left( t \right) \le b, r \ne i \hfill \cr} \right. \cr} $ | (4) |
| $ s = 1, 2, \cdots, D $ | (5) |
式中:r1=rand (0,1),r2=rand (-0.5,0.5),c1、c2为学习因子,xrj为任意一个不等于xij的粒子。
③ 根据贪婪原则确定新的粒子:
| $ {x_{ij}}\left( {t + 1} \right) = \left\{ \matrix{ {{\tilde x}_{ij}}\left( {t + 1} \right), \;\;\;f\left( {{{\tilde x}_{ij}}\left( {t + 1} \right)} \right) \le f\left( {{x_{ij}}\left( t \right)} \right. \hfill \cr {x_{ij}}\left( t \right), \;\;\;\;\;\;\;\;\;其他 \hfill \cr} \right. $ | (6) |
4) 判断运算是否到达指定的最大迭代次数N,如果没有达到,则转向步骤2);
5) 输出结果,程序结束。
2.2 MPPSO算法中的改进和特点MPPSO算法对现有粒子群算法进行了改进,其改进和特点主要表现在以下几方面:
1) 通过分组和吸引概率的引入增加粒子的寻优搜索方向。由于引导方向的多样性,可以增加粒子跳出局部最优的可能性,有利于解决多极值点问题。
2) 在式 (5) 中引入变异参数b。取随机数b=rand (0,1)。因此在式 (5) 中,当pij(t)>b时,取vi(t+1)=c1r1[xij(t)-xj*(t)],使得粒子向某一子种群的最优粒子引导,具有最优方向的引导作用。当pij(t) < b,即通过轮盘赌所选取的寻优方向的寻优效果预期不明显时,进行子种群内部随机差分进化寻优,取vi(t+1)=c2r2[xrj(t)-xij(t)]。其中变异参数b的取值对算法搜索性能有较大影响,如果b取值较大,子种群内部随机差分进化寻优概率较大,虽然增加了寻优方向的随机性和多样性但是收敛速度较慢,如果b取值较小,使得粒子向某一子种群的最优粒子引导概率增大,容易陷入局部最优。因此取随机数b=rand (0,1),既增加了寻优方向的随机性和多样性,又有助于解决陷入局部最优问题,后面的仿真实验很好地验证了这一点。
3) 在式 (5) 中,取参数r2=rand (-0.5,0.5),使得迭代寻优中进行一定的反向搜索,有助于提高寻优效率。
4) 寻优中根据贪婪原则确定新的粒子,可以保证算法的收敛性。
3 约束处理实际优化问题通常情况下都含有约束,问题越复杂,约束就越多。一般约束优化问题的数学模型可表示为
| $ \eqalign{ &\;\;\;\;\;\;\;\;\;\;\;\min f\left( x \right) \cr &{\rm{s}}{\rm{.t}}{\rm{.}}\;{g_j}\left( x \right) \le 0\;\;\;j = 1, 2, \cdots, {n_g} \cr} $ | (7) |
式中:f(x) 表示目标函数,gj(x) 表示第j个约束条件,ng为约束条件的个数。
对约束优化问题的求解,目前有许多算法——如梯度映射法、梯度下降法、惩罚函数法、障碍函数法等,其中处理约束问题最简单也是常见的方法是惩罚函数法,该方法通过惩罚策略将带有约束优化问题转化为无约束优化问题。
| $ \min F\left( x \right) = f\left( x \right) + \lambda \sum\limits_{w = 1}^{{n_g}} {\max \left( {0, {g_w}} \right)} $ | (8) |
式中:λ为惩罚系数,本文中设置为1010。
在应用罚函数法处理约束问题时,在寻优的每一步通常都需要计算罚函数值,当约束较多、较复杂时,计算F(x) 的时间要远远多于计算f(x) 的时间,这大大增加了计算时间,降低了寻优效率。为解决这一问题,本文提出一种新的处理方法。此方法的特点是对种群进行动态划分,只有当无约束目标函数值小于已有可行解中的最差值时才考虑约束的限制,从而不需在搜索的每一步都计算惩罚函数值,提高了寻优效率。
为方便起见,将式 (8) 改写为
| $ \min F\left( x \right) = f + \lambda {f_1} $ | (9) |
在第t+1代寻优中,首先计算f(x(t+1)) 的值,然后将其与上一代可行解中的最差值fworst(x*(t))=Fworst(x*(t)) 进行比较,如果f(x(t+1))≤Fworst(x*(t)),则计算惩罚函数值f1(x(t+1)),当f1(x(t+1))≤0时,取F(x(t+1))=f(x(t+1)),进入下一步寻优;当f1(x(t+1))>0时,取F(x(t+1))=f(x(t+1))+λf1(x(t+1))。如果f(x(t+1))>Fworst(x*t),则直接进入下一代寻优。记Fg(t)=max{F(xi(t))|i=1,2,…,m×K},针对约束问题,计算吸引概率的式 (3) 应改写为
| $ \eqalign{ &\;\;\;\;\;\;{p_{ij}}\left( {t + 1} \right) = {{{F_g}\left( t \right) - F\left( {x_j^*\left( t \right)} \right)} \over {\sum\limits_{j = 1}^K {\left( {{F_g}\left( t \right) - F\left( {x_j^*\left( t \right)} \right)} \right)} }}, \cr &i = 1, 2, \cdots, m \times K;\;j = 1, 2, \cdots, K;t = 1, 2, \cdots, N - 1 \cr} $ | (10) |
此方法只是对具有较好f值的解进行有关约束的计算,利用惩罚策略使其向可行解空间移动,而不是对每一个解都进行约束计算,因此可以大大提高寻优速度。
注意这里的较好f值的判断是根据可行解中最差解所做出的,当然也可以根据其他准则给出判断。判断准则的好坏会直接影响寻优效果。比如:若采取基于可行解中最好解的准则,则限制过于苛刻,使得仅有极少数粒子参与更新 (寻优),会严重影响寻优效果;若采取基于所有解中最差解的准则,则限制过于宽松,不能明显地缩短寻优时间。
上述处理方法的具体实现步骤如下:
1) 算法初始化。令循环变量t=1,随机产生若干个初始解向量,对采用的相关启发式优化算法进行参数设置;根据式 (9) 计算无约束目标函数值f(x(t)) 和惩罚函数值f1(x(t))。当f1(x(t))=0时,所对应的解为可行解,保存可行解中的目标函数最优值fbest(x*(t)) 及对应的最优可行解x*(t)。保存可行解中的目标函数最差值fworst(x*(t))=Fworst(x*(t)),若没有可行解,则重新初始化,直至找到可行解。
2) 根据式 (10) 计算吸引概率。
3) 根据式 (4)、(5) 对粒子进行速度更新和位置更新。
4) 计算
| $ \eqalign{ &\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;F\left( {\tilde x\left( {t + 1} \right)} \right) = \cr &\left\{ \matrix{ f\left( {\tilde x\left( {t + 1} \right)} \right), \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;{f_1}\left( {\tilde x\left( {t + 1} \right)} \right) \le 0 \hfill \cr f\left( {\tilde x\left( {t + 1} \right)} \right) + {{\hat f}_1}\left( {\tilde x\left( {t + 1} \right)} \right), \;\;\;\;\;{f_1}\left( {\tilde x\left( {t + 1} \right)} \right) > 0 \hfill \cr} \right. \cr} $ | (11) |
5) 根据贪婪准则确定第t+1代粒子,
| $ {x_{ij}}\left( {t + 1} \right) = \left\{ \matrix{ {{\tilde x}_{ij}}\left( {t + 1} \right), \;\;\;F\left( {{{\tilde x}_{ij}}\left( {t + 1} \right)} \right) \le F\left( {{x_{ij}}\left( t \right)} \right) \hfill \cr \;\;\;{x_{ij}}\left( t \right), \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;其他 \hfill \cr} \right. $ | (12) |
并保存F(x(t+1)),Fbest(x*(t+1)) 和Fworst(x*(t+1))。
6) 判断迭代次数是否达到预先设置的最大迭代次数,如果达到,则输出最优解,停止迭代;否则重复步骤2)~5)。
4 数值仿真实验 4.1 无约束优化现行各类算法对于单峰函数的寻优效果相差不多,都比较好,而且本文算法主要是解决多峰函数优化问题,因此实验中选取了参考文献[12]所列举的多峰函数及文献[13]的Enhanced Bat Algorithm作为测试函数,具体如表 1所示。对算法MPPSO进行测试比较主要基于以下几个性能指标:算法参数的影响、优化精度即最终解的质量和收敛速度。
| 序号 | 测试函数 | 搜索空间 | fmin |
| 1 | [-500, 500] | -12 569.5 | |
| 2 | [-5.12,5.12] | 0 | |
| 3 | [-5.12,5.12] | 0 | |
| 4 | [-32, 32] | 0 | |
| 5 | [-600, 600] | 0 | |
| 6 | [-50, 50] | 0 |
算法参数设置:种群规模20,每组粒子5,共4组,学习因子c1=c2=1.7,维度D=30,算法独立运行30次。各类算法的迭代次数均为50 000次。
4.1.1 算法参数的影响在式 (5) 中引入变异参数b。当参数b取不同值时的测试结果如表 2所示。由表 2可知当b=rand (0,1) 时,既增加了寻优方向的随机性和多样性,又很好的解决了陷入局部最优的问题。图 1给出6个函数在不同变异参数b下的优化曲线。
| 函数 | b | |||
| 0.2 | 0.5 | 0.8 | rand (0,1) | |
| f1 | -1.245 1×104 | -1.256 9×104 | -1.233 1×104 | -12 569.50 |
| f2 | 302.021 1 | 5.684 3×10-14 | 0.996 0 | 0 |
| f3 | 154.501 0 | 2 | 2 | 0 |
| f4 | 18.867 9 | 1.899 7 | 1.501 7 | 4.44×10-15 |
| f5 | 43.543 8 | 2.220 4×10-16 | 1.110 2×10-16 | 0 |
| f6 | 1.049 6×106 | 0.103 7 | 0 | 0 |
|
| 图1 6个函数的收敛曲线 (MPPSO) Figure 1 Convergence curves of 6 functions (MPPSO) |
在本小节中,利用表 1所列举的6个测试函数测试算法的寻优能力即最终解的质量,与文献[12-13]所列各种近期典型算法优化测试比较结果如表 3所示。
| 函数 | GPSO | FIPS | HPSO-TVAC | CLPSO | APSO | EBA | MPPSO | |
| f1 | Mean | -9 845.27 | -10 113.80 | -10 868.57 | -12 557.65 | -12 569.5 | -6.98×103 | -12 569.50 |
| S.D | 588.87 | 889.58 | 289 | 36.20 | 5.22×10-11 | 9.61×102 | 0 | |
| f2 | Mean | 69.06 | 29.98 | 2.39 | 2.57×10-11 | 5.80×10-15 | 3.44×101 | 0 |
| S.D | 8.07 | 10.92 | 3.71 | 6.64×10-11 | 1.01×10-14 | 1.28×101 | 0 | |
| f3 | Mean | 21.33 | 35.91 | 1.83 | 0.17 | 4.14×10-16 | - | 0 |
| S.D | 9.46 | 9.49 | 2.65 | 0.38 | 1.45×10-15 | - | 0 | |
| f4 | Mean | 1.40×10-14 | 7.69×10-15 | 2.06×10-10 | 2.01×10-12 | 1.11×10-14 | 4.58×10-1 | 4.44×10-15 |
| S.D | 3.48×10-15 | 9.33×10-16 | 9.45×10-10 | 9.22×10-13 | 3.55×10-15 | 5.78×10-1 | 1.95×10-15 | |
| f5 | Mean | 1.31×10-2 | 9.04×10-4 | 1.07×10-2 | 6.45×10-13 | 1.67×10-2 | 7.30×10-3 | 0 |
| S.D | 1.35×10-2 | 2.78×10-3 | 1.14×10-2 | 2.07×10-12 | 2.41×10-2 | 9.46×10-3 | 0 | |
| f6 | Mean | 3.46×10-3 | 1.22×10-31 | 7.07×10-30 | 1.59×10-21 | 3.76×10-31 | 9.99×10-1 | 0 |
| S.D | 1.89×10-2 | 4.85×10-32 | 4.05×10-30 | 1.93×10-21 | 1.20×10-30 | 1.84 | 0 | |
从表 3的结果可以看出,本文算法对于无约束多峰函数f1~f6都具有很好的寻优效果。其原因是通过分组和吸引概率的引入增加粒子的寻优搜索方向。由于引导方向的多样性,可以增加粒子跳出局部最优的可能性。式 (5) 中引入变异参数b,取随机数b=rand (0,1),既增加了寻优方向的随机性和多样性,又很好的解决了陷入局部最优的问题。因此在解决多峰函数问题时具有较好的效果。
4.1.3 收敛速度图 2显示出MPPSO算法在迭代过程中具有稳定的收敛率并且能够快速寻找到最优值。MPPSO算法函数f1、f4、f5、f6中具有较好的收敛率,在函数f2、f3中虽然收敛不是最快,但是寻优效果好。
|
| 图2 收敛曲线 Figure 2 Convergence curves |
参数设置:种群规模100,每组粒子25,共4组,学习因子c1=c2=1.7,最大迭代次数50 000,维度D=30,算法独立运行30次。为测试本文提出的算法的有效性,本文采用了两类测试函数。一类来自于文献[14]中的测试函数,这类函数的特点在于所具有的约束比较复杂,使得通常对无约束问题有着很好寻优效果的算法,对于这类约束问题往往寻优效果可能并不理想,因此文献[14]给出了适用于复杂约束问题的算法。另一类是对于前面的无约束多峰函数分别加上一定约束所构造的测试函数,其特点在于目标函数多峰,使得目前处理约束问题较好的算法在寻优中效果可能会收到影响。由于篇幅所限,在两类函数中下面仅列出对比效果比较明显的9个测试函数,其中g01、g02、g04、g06、g08和g12来自文献[14];h01、h02、h03是本文在无约束多峰测试函数基础上增添约束所构造的,其构造目的在于检验算法对带有约束的多峰测试效果。自定义的测试函数具体形式如表 4所示。
| 问题 | 测试函数 | 维数 |
| h01 | 13 | |
| h02 | 20 | |
| h03 | 7 |
与目前人们认为处理约束问题较好的算法FSA[15]、MicroPSO[16]、CW[17]、CMODE[18]、MHS[19]进行比较,这些算法的参数都根据算法发表的文献进行设置,针对约束分别采用常规罚函数法和本文提出的处理方法,所用时间对比见表 5,由表 5可知本文提出的处理约束的方法能够明显缩短寻优时间。
| 算法 | 函数 | 常规罚函数法/s | MPPSO约束处理方法/s | 缩短时间/% |
| MicroPSO | g01 | 106.619 4 | 91.648 5 | 14.041 4 |
| g02 | 138.059 4 | 124.667 1 | 9.700 4 | |
| g04 | 83.426 7 | 75.674 1 | 9.292 7 | |
| g06 | 66.519 6 | 56.207 7 | 15.502 1 | |
| g08 | 65.389 5 | 55.296 3 | 15.435 6 | |
| g12 | 71.325 6 | 62.270 7 | 12.695 2 | |
| h01 | 81.763 8 | 72.526 8 | 11.297 2 | |
| h02 | 94.409 4 | 81.442 5 | 13.734 8 | |
| h03 | 89.126 1 | 67.449 6 | 24.321 2 | |
| CW | g01 | 65.587 2 | 58.612 5 | 10.634 2 |
| g02 | 105.865 5 | 99.705 6 | 5.818 7 | |
| g04 | 67.060 5 | 64.576 2 | 3.704 6 | |
| g06 | 58.288 2 | 53.689 2 | 7.890 1 | |
| g08 | 50.645 4 | 46.069 2 | 9.035 8 | |
| g12 | 70.984 8 | 65.235 9 | 8.098 8 | |
| h01 | 57.062 4 | 51.122 4 | 10.409 7 | |
| h02 | 55.498 2 | 54.374 1 | 2.025 5 | |
| h03 | 89.768 7 | 82.707 9 | 7.865 5 | |
| CMODE | g01 | 49.792 8 | 47.856 3 | 3.889 1 |
| g02 | 49.419 9 | 44.993 4 | 8.957 0 | |
| g04 | 43.389 6 | 42.171 9 | 2.806 4 | |
| g06 | 38.697 3 | 37.376 7 | 3.412 6 | |
| g08 | 42.207 9 | 42.127 2 | 0.191 2 | |
| g12 | 52.304 1 | 51.294 9 | 1.929 5 | |
| h01 | 48.325 2 | 47.992 5 | 0.688 5 | |
| h02 | 51.447 6 | 51.355 8 | 0.178 4 | |
| h03 | 70.452 9 | 68.943 6 | 2.142 3 | |
| MHS | g01 | 15.733 8 | 10.188 | 35.247 7 |
| g02 | 21.597 3 | 17.563 2 | 18.678 7 | |
| g04 | 8.391 6 | 6.363 3 | 24.170 6 | |
| g06 | 5.392 8 | 4.368 9 | 18.986 4 | |
| g08 | 5.392 8 | 4.093 8 | 24.087 7 | |
| g12 | 9.084 6 | 7.075 5 | 22.115 5 | |
| h01 | 15.906 3 | 12.987 9 | 18.347 5 | |
| h02 | 19.305 6 | 16.611 9 | 13.953 0 | |
| h03 | 17.194 8 | 14.158 5 | 17.658 3 | |
| MPPOS | g01 | 116.144 1 | 43.159 5 | 62.839 7 |
| g02 | 47.097 6 | 42.582 9 | 9.585 8 | |
| g04 | 37.490 4 | 23.300 4 | 37.849 7 | |
| g06 | 34.900 5 | 14.619 3 | 58.111 5 | |
| g08 | 34.131 9 | 19.785 6 | 42.032 0 | |
| g12 | 43.148 4 | 27.877 2 | 35.392 3 | |
| h01 | 43.768 5 | 33.468 0 | 23.534 1 | |
| h02 | 43.758 0 | 33.872 7 | 22.590 9 | |
| h03 | 52.726 5 | 52.177 3 | 1.041 6 |
从表 6的结果可以看出,本文提出的改进算法对函数g01、g02、g04、g06、g08、g12、h01、h02、h03都有很好的寻优效果,都能找到最优值,明显优于FSA、MicroPSO、CW、CMODE、MHS算法。其中CMOD算法寻优性能也比较好,对函数g01、g04、g06、g08、g12上也可以找到最优值,但是对于函数g02、h02、h03的寻优上效果不佳。
| 函数 | FSA | MicroPSO | CW | CMODE | MHS | MPPSO | |
| g01 | Mean | -14.993 | -13.273 4 | -15.000 | -15.000 | -10.724 9 | -15.000 |
| S.D. | 4.8×10-3 | 1.41 | 1.3×10-14 | 0 | 2.463 766 | 0 | |
| g02 | Mean | -0.371 708 | -0.777 143 | -0.803 220 | -0.803 068 532 65 | -0.658 47 | -0.803 617 85 |
| S.D. | 9.8×10-2 | 1.91×10-2 | 2.0×10-3 | 0.002 462 152 54 | 0.036 335 | 3.481 53×10-7 | |
| g04 | Mean | -30 665.467 | -30 665.539 7 | -30 665.539 | -30 665.538 67 | - | -30 665.538 67 |
| S.D. | 1.7×10-1 | 6.83×10-4 | 8.0×10-12 | 3.732 487 5×10-12 | - | 4.200 78×10-12 | |
| g06 | Mean | -6 961.814 | -6 961.813 70 | -6 961.814 | -6 961.813 875 580 | - | -6 961.813 875 580 |
| S.D. | 0 | 2.61×10-4 | 1.8×10-12 | 1.866 243 75×10-12 | - | 7.1×10-11 | |
| g08 | Mean | -0.095 825 | -0.095 825 | -0.095 825 | -0.095 825 041 42 | -0.082 42 | -0.095 825 041 42 |
| S.D. | 0 | 0 | 3.2×10-17 | 3.559 577×10-17 | 0.028 157 | 1.1×10-17 | |
| g12 | Mean | -1.000 | 1.000 0 | -1.000 | -1.000 | -1.000 | -1.000 |
| S.D. | 0 | 0 | 0 | 0 | 4.41×10-6 | 0 | |
| h01 | Mean | — | -4.529 23 | -3.377 3×103 | -4.163 627 050 665 994 ×103 | -9.188 61 | -4 200 |
| S.D. | — | 1.759 815 | 4.399 4×102 | 0 | 0.435 351 | 0.000 388 | |
| h02 | Mean | — | 0.691 944 | 1.505 6 | 2.539 2 | 0.001 232 | 0 |
| S.D. | — | 0.136 455 | 0.340 88 | 0.440 574 | 0.003 896 | 0 | |
| h03 | Mean | — | 0.020 096 | 0.020 03 | 0.020 03 | 0.021 463 | 0.020 03 |
| S.D. | — | 6.38×10-5 | 6.365 70×10-15 | 3.131×10-7 | 0.000 835 | 7.36×10-7 | |
为进一步验证本文算法的有效性,下面将本文算法应用于焊接梁设计问题。参数设置:种群规模100,每组粒子25,共4组,学习因子c1=c2=1.7,最大迭代次数20 000次。
焊接梁设计问题是指在受剪应力、弯曲应力、屈曲载荷、结尾偏差和侧面限制约束的限制下找到最低的制造成本[20]。数学模型如文献[20]所示。
在Zou[20]文章中提出最优解f(x*)=1.695 266 99,表 7为Zou[20]和其他研究者与本算法解决此问题的近似最优解比较。从表 7中可看出,本文得出的近似最优解f(x*)=1.593 181 44,明显优于其他所有算法的近似最优解,同时表明文献[20]中所给出的解并不是最好解。
| 最优解 | Lee (2005) | Mahdavi (2007) | Zou (2011) | MPPSO |
| x1* | 0.244 2 | 0.205 73 | 0.205 712 26 | 0.204 024 46 |
| x2* | 6.223 1 | 3.470 49 | 3.253 440 86 | 3.646 725 52 |
| x3* | 8.291 5 | 9.036 62 | 9.036 613 55 | 7.863 266 45 |
| x4* | 0.244 3 | 0.205 73 | 0.205 730 12 | 0.213 531 09 |
| f(x*) | 2.380 7 | 1.724 8 | 1.695 266 99 | 1.593 181 44 |
为了验证本文的处理约束方法可以提高寻优速度,并可以引入到粒子群以外的其他算法,下面针对典型的和声算法 (HS)、差分进化算法 (DE) 和本文算法进行寻优时间对比实验。实验中,基于焊接梁设计问题,针对约束分别采用常规罚函数法和本文处理方法所用时间见表 8。
| 算法 | 常规罚函数法/s | MPPSO约束处理方法/s | 缩短时间% |
| MPPOS | 48.378 4 | 27.888 3 | 42.36 |
| HS | 45.649 | 32.54 | 28.72 |
| DE | 44.64 | 38.765 | 13.16 |
从表 8可以看出,采用本文方法相对于常规罚函数法3种算法寻优时间分别缩短了42.36%、28.72%、13.16%,这表明将本文约束处理方法引入到其他智能优化算法能够明显缩短寻优时间。
6 结论针对粒子群算法收敛精度不高,容易陷入局部最优的缺点,本文提出一种新的多种群随机差分粒子群算法,通过分组和吸引概率的引入,增加了粒子的寻优搜索方向,提高了跳出局部最优的可能性。
1) 在速度更新公式中引入具有指导决策功能的变异参数b,对种群的搜索进行有效的指导,有助于解决陷入局部最优问题。
2) 在该算法的基础上还给出了一种处理约束的新方法,该方法可以减少计算量,缩短寻优时间。
3) 分别对无约束和带约束问题进行了仿真实验,实验结果显示本文算法在处理各类多峰问题时效果明显,优化精度高,收敛速度快。
4) 将本文算法应用于焊接梁设计问题,仿真结果也表明其优化效果明显好于现有文献中的已有结果,并且缩短了寻优时间。
| [1] | NICKABADI A, EBADZADEH M M, SAFABAKHSH R. A novel particle swarm optimization algorithm with adaptive inertia weight[J]. Applied soft computing, 2011, 11(4): 3658–3670. DOI:10.1016/j.asoc.2011.01.037 |
| [2] | ANWAR A, MAHMOOD A N. Enhanced estimation of Autoregressive wind power prediction model using constriction factor particle swarm optimization[C]//Industrial Electronics and Applications.[S.l.], 2014:1136-1140. |
| [3] | ZHAO X. An enhanced particle swarm optimization algorithm with passive congregation[C]//2010 International Conference on Machine Vision and Human-machine Interface.[S.l.], 2010:432-435. |
| [4] | CHIH M, LIN C J, CHERN M S, et al. Particle swarm optimization with time-varying acceleration coefficients for the multidimensional knapsack problem[J]. Applied mathematical modelling, 2014, 38(4): 1338–1350. DOI:10.1016/j.apm.2013.08.009 |
| [5] | ZHAO S Z, SUGANTHAN P N, PAN Q K, et al. Dynamic multi-swarm particle swarm optimizer with harmony search[J]. Expert systems with applications, 2011, 38(4): 3735–3742. DOI:10.1016/j.eswa.2010.09.032 |
| [6] | LIANG J J, SUGANTHAN P N. Dynamic multi-swarm particle swarm optimizer[C]//Swarm Intelligence Symposium, 2005.[S.l.], 2005:124-129. |
| [7] | KENNEDY J. Bare bones particle swarms[C]//Swarm Intelligence Symposium, 2003. SIS'03. Proceedings of the 2003 IEEE.[S.l.], 2003:80-87. |
| [8] | SUN J, FANG W, WU X, et al. Quantum-behaved particle swarm optimization:analysis of individual particle behavior and parameter selection[J]. Evolutionary computation, 2012, 20(3): 349–393. DOI:10.1162/EVCO_a_00049 |
| [9] | DANESHYARI M, YEN G G. Constrained multiple-swarm particle swarm optimization within a cultural framework[J]. Systems, man and cybernetics, part a:systems and humans, 2012, 42(2): 475–490. DOI:10.1109/TSMCA.2011.2162498 |
| [10] | SAHED O A, KARA K, HADJILI M L. Constrained fuzzy predictive control using particle swarm optimization[J]. Applied computational intelligence & soft computing, 2015, 2015(1): 1–15. |
| [11] | WEN W, HAO Z. Improved particle swarm optimizer based on dynamic topology[J]. Computer engineering and applications, 2005, 41(34): 82–85. |
| [12] | ZHAN Z H, ZHANG J, LI Y, et al. Adaptive particle swarm optimization[J]. Systems, man, and cybernetics, part B:cybernetics, 2009, 39(6): 1362–1381. DOI:10.1109/TSMCB.2009.2015956 |
| [13] | YıLMAZ S, KÜÇÜKSILLE E U. A new modification approach on bat algorithm for solving optimization problems[J]. Applied soft computing, 2015, 28: 259–275. DOI:10.1016/j.asoc.2014.11.029 |
| [14] | LIANG J J, RUNARSSON T P, MEZURA-MONTES E, et al. Problem definitions and evaluation criteria for the CEC 2006 special session on constrained real-parameter optimization[J]. Journal of applied mechanics, 2006, 41: 8. |
| [15] | VENKATRAMAN S, YEN G G. A generic framework for constrained optimization using genetic algorithms[J]. Evolutionary computation, 2005, 9(4): 424–435. DOI:10.1109/TEVC.2005.846817 |
| [16] | CABRERA J C F, COELLO C A C. Handling constraints in particle swarm optimization using a small population size[M]//MICAI 2007:Advances in Artificial Intelligence. Springer Berlin Heidelberg, 2007:41-51. |
| [17] | CAI Z, WANG Y. A multiobjective optimization-based evolutionary algorithm for constrained optimization[J]. Evolutionary computation, 2006, 10(6): 658–675. DOI:10.1109/TEVC.2006.872344 |
| [18] | WANG Y, CAI Z. Combining multiobjective optimization with differential evolution to solve constrained optimization problems[J]. Evolutionary computation, 2012, 16(1): 117–134. DOI:10.1109/TEVC.2010.2093582 |
| [19] | GAO L, LI S, KONG X, et al. On the iterative convergence of harmony search algorithm and a proposed modification[J]. Applied mathematics and computation, 2014, 247: 1064–1095. DOI:10.1016/j.amc.2014.09.071 |
| [20] | ZOU D, LIU H, GAO L, et al. Directed searching optimization algorithm for constrained optimization problems[J]. Expert systems with applications, 2011, 38(7): 8716–8723. DOI:10.1016/j.eswa.2011.01.079 |


