改进的樽海鞘群算法及在焊接梁问题中的应用
2019-03-16王彦军王秋萍王晓峰
王彦军,王秋萍,王晓峰
(西安理工大学 理学院,陕西西安710054)
群体智能(SI)技术是受自然启发的元启发式算法,是现在最为流行的寻优算法,在诸多领域中得到了成功应用。Mirjalili等模拟自然界中樽海鞘的群体行为,于2017年提出樽海鞘群算法(Salp Swarm Algorithm,SSA),该算法只有一个主要控制参数,因此算法结构较为简单,易于实现,且研究结果表明该算法的寻优性能优于飞蛾火焰算法(MFO)、灰狼优化算法(GWO)和人工蜂群算法(ABC)等[1]。因此,SSA算法在科学和工程等领域中有着广泛应用。
然而,与其他群智能算法类似,SSA算法也存在求解精度低、易陷入局部最优等缺陷。国内外学者针对这些缺陷提出了一系列改进。
Sayed[2]等提出一种基于混沌理论的SSA算法以解决SSA算法易陷入局部最优、收敛速度慢的缺点。
Ibrahim等[3]利用粒子群算法(PSO)的全局收敛性,提出一种基于SSA和PSO的混合优化算法以平衡算法的勘探和开发能力。
Faris等[4]使用交叉算子来代替平均算子,提出了一种带交叉的二进制SSA算法以增强算法的全局探索。
王梦秋等[5]分析了SSA算法,发现追随者位置更新方程具有一定的盲目性,在一定程度上限制了算法的搜索能力,提出了一种改进的SSA算法并将其应用于PMSM参数辨识。
为进一步提高基本SSA算法的求解精度和收敛速度,本文提出了一种改进樽海鞘群算法(Improved Salp Swarm Algorithm,ISSA)。该算法首先采用精英反向学习策略,有效地平衡算法的勘探和开发能力。然后,为增大搜索范围,提高算法求解精度,引入一种差分策略来更新追随者位置。最后,对食物位置进行Gauss变异,以避免算法陷入局部最优。对10个标准测试函数和一个经典工程问题的实验结果表明,本文所提出的ISSA算法具有较好的搜索性能。
1 樽海鞘群算法
1.1 樽海鞘群算法
樽海鞘属于海樽科,有着透明的圆柱形身体,是一种与水母非常相似的海洋生物。在海洋中,樽海鞘有一种被称为樽海鞘链的群体行为,有关学者认为这种行为是为了帮助它们快速觅食和躲避天敌。基于这一行为,Mirjalili等建立了樽海鞘链数学模型,并在优化问题中测试了该模型的有效性。
SSA算法首先将种群分成两部分,即领导者和追随者。领导者引导群体,追随者相互追随。与其他基于种群的算法类似,樽海鞘的位置是在n维搜索空间中定义的,其中n表示给定问题的维数。因此,所有樽海鞘的位置都存储在一个N×n二维矩阵x中(N是种群规模)。
假设在搜索空间中有一个叫做F的食物源作为种群的搜索目标。
领导者根据下式更新位置:
(1)
(2)
式中:t是当前迭代次数;T是最大的迭代次数。
使用下式更新追随者位置:
(3)
1.2 改进的樽海鞘群算法
本文选取一半的樽海鞘个体作为领导者,其余个体作为追随者。领导者(j≤N/2)按式(4)更新之后,执行精英反向学习策略。
(4)
采用差分策略更新追随者位置,对食物位置进行Gauss变异使其跳出局部最优。
1.2.1精英反向学习策略
由于反向学习策略[6]通过同时对当前候选解和反向候选解进行评估,可以提供更多的机会找到更接近全局最优的候选解。因此反向学习策略在群智能优化算法中有效地提高了算法的搜索性能。
然而,反向学习策略并不能适用于所有类型的优化问题。例如,在求解多峰函数问题时,变换后的候选对象可能会偏离全局最优。为了避免这种情况的发生,汪慎文等[7]在一般反向学习的基础上引入精英个体的良好信息,提出了精英反向学习策略,并给出了关于精英反向学习策略在群智能优化算法中具有全局收敛性的证明。
实验结果表明,精英反向学习策略具有更优良的性能[7]。
(5)
式中,λ是[0,1]区间服从均匀分布的随机数,ai(t)、bi(t)表达式为:
在文献[7]中,作者对精英反向学习策略进行了分析。精英反向学习策略在反向解与当前解中选出优秀个体进入下一代群体中以增强种群的多样性,降低算法陷入局部最优的概率。如果算法能收敛到全局最优解,则精英个体所构成的搜索区间必将收敛到最优解所在的区域。因此,在精英个体所构成的搜索区间上产生反向解,引导搜索过程向最优解逼近,从而提高算法的收敛速度。从而,精英反向学习策略可以较好地平衡算法的勘探和开发能力。
反向学习策略可以增加种群多样性[8]。因此,本文利用领导者个体的搜索信息,在领导者个体所构成的搜索空间上产生反向解。
对反向解和当前解,采用贪心保留策略,选出更加优秀的个体进入下一代以增加种群多样性,可以更好地避免算法陷入局部最优,且提高算法的收敛速度。
1.2.2差分策略
在基本SSA算法中,由式(3)可以看出,第j个樽海鞘的位置更新只与自身和跟随的第j-1个樽海鞘的位置信息有关。这种在单向接收第j-1个樽海鞘的位置信息后立即更新位置,在一定程度上限制了算法搜索效果。
针对算法的这种缺陷,我们将引入第j-2个樽海鞘的位置信息,来引导追随者个体增大搜索范围,避免算法陷入局部最优,改善算法的搜索效果和提高算法的求解精度。
(6)
1.2.3Gauss变异策略
在樽海鞘群算法中,所有个体都直接或间接地向种群当前最好个体(食物)学习,在迭代后期种群多样性的丢失是不可避免的。一旦最好个体陷入局部最优,则易导致群体出现搜索停滞,算法出现早熟收敛现象。
受文献[10]启发,本文将对食物进行Gauss变异操作,以提高跳出局部最优的能力。而另一方面,我们将对变异结果采取贪心保留策略,以保证算法有较好的全局收敛性。
在优化过程中,如果当前最好个体(食物)的适应度值连续smax次迭代没有得到改善(smax设置为10),则对食物执行Gauss变异,具体为:
F′i=Fi(1+λξ)
(7)
式中:ξ是服从标准正态分布的随机变量,λ=0.5。对Gauss变异的结果F′采用贪心保留策略,即:
(8)
式中:fit(x)为x的适应值。
1.2.4算法伪代码
综上所述,ISSA算法伪代码为如下。
初始化参数,种群规模N,维数n,最大迭代次数T,在初始解空间中随机初始化樽海鞘群的位置,进行适应度评估,排序,记录当前最好个体位置F。
while(t 利用式(2)更新r1 forj= 1 toNdo ifj≤N/2 利用式(4)更新领导者个体 利用式(5)执行精英反向学习策略 else 利用式(6)更新追随者个体 endif 根据变量的上下界对种群个体进行修正 适应度评估,更新食物位置 ifs==smax (s为食物适应值连续没有改善的次数) 用式(7)~(8)对食物执行Gauss变异 endif endfor t=t+1 endwhile returnF 接下来计算ISSA算法的时间复杂度。 1) 分析算法迭代一次所需要的基本操作。 2) 更新领导者位置,追随者位置和基于变量的上下界修正樽海鞘个体的位置的复杂度是O(Nn); 3) 计算适应度值和更新食物位置的复杂度是O(2N); 4) 对食物进行Gauss变异操作是O(kn),其中k是变异的次数; 5) 进行精英反向学习策略的复杂度是O(Nn/2)。 则算法迭代一次的复杂度是: O(Nn) +O(2N)+O(kn)+O(Nn/2)=O(CNn) 因此该算法的整体复杂度是O(CNnT),其中N是种群规模,n是维数,T是最大迭代次数,C是常数。 利用一组经典的基准函数,包括10个不同的函数(单峰和多峰函数),来评价该算法的优化性能。基准函数的定义及其细节见表1。 表1 标准测试函数Tab.1 Benchmark test functions 为体现本文所提算法的有效性,我们将引入樽海鞘群算法[1]、粒子群优化算法(Particle Swarm Optimization,PSO)[11-12]、飞蛾扑火优化算法(Moth-Flame Optimization,MFO)[13]以及混沌樽海鞘群算法(Chaotic Salp Swarm Algorithm,CSSA)[2]做对比实验。 为体现实验的公平性,我们将设置相同的实验参数:种群规模为30,最大迭代次数为500,测试函数的维数均设置为30,领导者个数设置为N/2,smax设置为10。 五种算法在每个测试函数上均独立运行30次,并记录下平均值、标准差、最好值、最差值,实验结果见表2。最好的结果以粗体显示。 由表2可以得出,ISSA算法的求解精度在以上基准函数上都优于几种对比算法,尤其在函数F3、F7和F9上显著提高了求解精度,此外,ISSA算法的标准差值相对比较小,这说明该算法具有较强的鲁棒性。在函数F8上CSSA算法的求解精度较低于SSA算法。虽然CSSA算法的寻优性能得到了一定的改善,但是效果不是很明显。在函数F5上,ISSA算法的最好值没有明显地提升,但是,方差、均值、最差值都在一定的程度上有了较大提高。这说明该算法较好地平衡了局部开发和全局勘探能力。 由图1可以很直观地看到,在函数F5上,虽然ISSA算法、SSA算法和PSO算法求解精度相差不大,但是ISSA算法具有更快的收敛速度。在函数F7上可以看出,ISSA算法在迭代200次之后收敛到理论最优值,明显优于其他几种对比算法。 因此,本文所提出的ISSA算法与对比算法相比,该算法具有较好的寻优性能。 表2 5种算法对10个测试函数的寻优结果比较Tab.2 Comparison of optimization results of 11 test functions by 5 algorithms 图1 测试函数收敛曲线图Fig.1 Convergence curves of test functions 为分析三种改进策略的有效性,我们将继续使用上述标准测试函数进行实验。将仅采用Gauss变异策略的改进SSA算法记为GSSA算法,将仅采用差分策略的改进SSA算法记为DESSA算法,将仅采用精英反向学习策略的改进SSA算法记为OSSA算法。 为体现实验的公平性,GSSA算法、DESSA算法、OSSA算法、ISSA算法、SSA算法均采用相同的初始化、相同的参数设置,种群规模为30,最大迭代次数为500,维数为30。5种算法在部分测试函数上的收敛曲线图见图2。 图2 测试函数收敛曲线图Fig.2 Test convergence curves of test function 由图2可以清晰地看出,DESSA算法的收敛效果最为接近ISSA算法,现在我们有较充分的理由说明在标准SSA算法中,追随者的位置更新缺乏一定的指导信息,严重影响了算法的寻优性能;与SSA算法相比,除了在函数F1和F5上,GSSA算法和OSSA算法的寻优效果基本上没什么改善,在绝大多数测试函数上,都具有较高的求解精度和收敛速度。这说明了标准的SSA算法容易陷入局部最优、收敛速度较慢等,本文所采用的改进策略在一定程度上改善了这种缺陷,提高了算法的寻优性能。 利用经典工程问题(焊接梁设计问题)来评价该算法解决实际问题的性能。为体现该算法的有效性,将引入文献[15-16]做对比实验。 焊接梁问题是一个典型的数学规划问题,该问题可以描述为:在满足剪应力τ、梁的弯曲应力σ、杆上弯曲载荷Pc、梁端挠度δ和边界条件等约束条件下,寻找最优的设计变量h、l、t和b,使得制造焊接梁的费用最小。四个设计变量的含义可参照图3中焊接梁设计图。 图3 焊接梁设计图Fig.3 Welded beam design 该设计问题的数学模型如下: x=[x1,x2,x3,x4]=[h,l,t,b] minf(x)=1.1047x12x2+0.04811x3x4(14.0+x2) g7(x)=0.10471x12+ 0.04811x3x4(14.0+x2)-5.0≤0 0.1≤x1,x4≤2 0.1≤x2,x3≤10 式中各变量表示为: (10) 式中:P=6 000,L=14,E=30×106,G=12×106。 罚函数方法是迄今为止处理约束的最常见和最简单的方法,通过对目标函数加(或减)惩罚项,将约束优化问题转化为无约束优化问题[14]。因此本文将采用罚函数方法来求解该问题,目标函数对应的罚函数为: (11) 式中:bi=max{0,gi(x)},1≤i≤7;ki>0为罚函数系数。 为保证实验的公平性,本文的参数设置与文献[15-16]相同。对该问题进行30次独立运行,并提供统计结果,包括最好值、平均值和最劣值,得到的结果如下。 表3显示了ISSA算法和文献中的两种算法解焊接梁问题的最优解的比较,结果表明ISSA算法具有更好搜索性能。 表4显示了本文算法与文献中的算法30次独立运行的结果,实验表明,本文算法与文献中的算法相比,有较高的求解精度。 表3 不同算法解焊接梁问题的最优解Tab.3 Optimal solution of welded beam problem by different algorithms 表4 不同算法求焊接梁问题f(x)的统计数据Tab.4 Statistical data of welded beam problem solved by different algorithms 本文在基本SSA算法的基础上提出了一种ISSA算法,在该算法中引入精英反向学习策略以更好地平衡算法的勘探和开发能力;为增大追随者搜索范围,引入差分策略来更新追随者位置;最后,在搜索过程中对食物位置进行Gauss变异以提高跳出局部最优的能力,为算法进行全局搜索奠定基础。通过10个经典的无约束基准函数,对ISSA算法的性能进行了评价。实验结果表明,ISSA算法的性能优于文献中其他算法。选取了1个工程优化问题,验证了ISSA算法在解决实际约束工程问题中的性能。未来的研究重点应该是将ISSA算法扩展到解决多目标无约束优化和约束优化问题以及其他实际应用中。2 仿真实验
2.1 参数设置和结果分析
2.2 改进策略的有效性分析
3 ISSA在焊接梁问题中的应用
3.1 焊接梁优化问题的数学模型
3.2 焊接梁优化问题求解
4 结 语