近年来,优化问题在不同的学科和工程领域受到越来越多的关注,其主要分为三个类别:约束优化、无约束优化和约束工程优化问题[1].在优化过程中,有必要在合理的时间内和复杂的约束下找到给定问题的最优解,因此如何构建有效的寻优策略是一个重要的研究方向.随着计算机技术的蓬勃发展,越来越多的群智能优化算法被相继提出.目前,常见的群智能算法有差分进化算法[2]、粒子群算法[3]、果蝇优化算法[4]、灰狼优化算法[5]、鲸鱼优化算法[6]等.不同于传统优化算法,这些新型算法具有参数设置简单、无衍生机制、鲁棒性强等优点[7],已经被应用于多个研究领域.
樽海鞘群算法(Salp Swarm Algorithm, SSA)是Mirjalili等在2017年提出的一种新型的群体智能优化算法[8],该算法模仿了樽海鞘群体在海洋中的群体觅食行为.试验表明,与其它元启发式算法相比,SSA算法能够有效改进待优化问题的初始解并且能收敛到全局最优.因此原SSA算法被应用到各个学科优化问题的研究中,如:时差定位的非线性问题求解[9],燃料电池的最佳参数提取[10],非线性高光谱图像的处理[11]等.而为了进一步提高SSA的性能,不同的学者也对其进行了改进:文献[12]将混沌映射与SSA算法结合,文献[13]提出了二进制SSA算法,文献[14]将粒子群算法与SSA算法进行混合等.这些算法在不同程度上提高了原SSA算法的性能.
根据“无免费午餐”(No-Free-Lunch,NFL)定理,没有一种算法能够适用于所有的优化问题[15].因此,为了在实际应用中获得更好的结果,修改现有算法、开发新算法或混合不同种算法的研究工作是非常有价值的.针对原SSA算法存在的收敛速度慢、容易陷入局部最优等不足,本文提出一种新型的改进SSA算法,并将其称之为基于折射反向学习与自适应控制因子的改进樽海鞘群算法(Modified SSA Based on Refracted Oppositional Learning and Adaptive Control Factor, RCSSA).该算法首先在求解过程中引入折射反向学习机制,以提高算法收敛速度和精度,其次在部分位置更新中加入了原算法已有的自适应控制因子,进一步改进算法的探索性能.通过多组不同种类和维数的基准测试函数对RCSSA算法的性能进行详细测试,同时与其他算法进行对比分析,以验证所采用改进策略的可行性和有效性.
1 樽海鞘群优化算法SSA算法的灵感来自于樽海鞘群体在海洋中的游动和觅食行为.樽海鞘通过吸入和排出海水来推动自身游动,并以水中的浮游植物为食,如图 1所示.在觅食过程中,樽海鞘种群中的个体彼此相连并形成环状的长链.该樽海鞘长链可分为两部分:一部分为引导者,位于海鞘链的前端,负责探索食物的位置;另一部分樽海鞘为追随者,逐个相连,紧跟在引导者之后,如图 2所示.引导者以食物源为目标,不断更新自身位置,该数学模型为
$ {x_{1, j}} = \left\{ {\begin{array}{*{20}{c}} {{F_j} + {c_1}\left( {\left( {u{b_j} - l{b_j}} \right){c_2} + l{b_j}} \right), {c_3} \ge 0.5;}\\ {{F_j} - {c_1}\left( {\left( {u{b_j} - l{b_j}} \right){c_2} + l{b_j}} \right), {c_3} < 0.5.} \end{array}} \right. $ | (1) |
式中:x1, j表示搜索空间第j维上第一个樽海鞘的位置,Fj表示食物的位置,ubj和lbj分别是搜索空间第j维的上界和下界,c2和c3是两个相互独立并服从[0, 1]均匀分布的随机数,c1为算法中的控制因子,其值从2非线性递减至趋于0,如图 3所示,其计算公式如下
$ {c_1} = 2{{\rm{e}}^{ - {{\left( {\frac{{4t}}{T}} \right)}^2}}}. $ | (2) |
式中:t表示当前迭代次数,T是预先设定好的最大迭代次数.
当引导者位置更新后,追随者随之移动,其位置更新的数学模型为
$ {x_{i, j}} = \frac{1}{2}\left( {{x_{i, j}} + {x_{i - 1, j}}} \right). $ | (3) |
式中:xi, j表示搜索空间第j维上第i个樽海鞘的位置,且i≥2.
SSA算法包括探索和开发两个阶段.首先,探索阶段是从一组随机生成的解开始,其目标是在搜索空间中扩大搜索区域,以寻找全局最优解.接着,算法进入开发阶段,在前一阶段所得的搜索区域中进一步寻优,以提高最优解的准确性.其中,控制因子c1对算法的收敛效果影响较大,有能够平衡算法的探索和开发能力:当c1>1时,算法进行全局探索;当c1<1时,算法对局部进行开发.在达到最大迭代次数时,算法终止并输出所得的最优结果.
2 改进的樽海鞘优化算法与其他元启发式算法类似,原SSA算法也存在收敛速度慢、容易陷入局部最优等缺点.为此本文从两个方面对其进行改进:首先,在种群个体更新时采用折射反向学习机制,从而提高种群多样性,避免算法陷入局部最优;其次,在追随者位置更新中引入自适应控制因子,进一步提高求解精度和收敛速度.
2.1 折射反向学习机制反向学习(Opposition-Based Learning, OBL)是由Tizhooshs提出的一种强大的优化机制[16],其通过计算当前解的反向解来扩大搜索范围,由此找出给定问题更好的候选解.将元启发式算法与OBL的结合,能够有效地提高算法寻优的精度[17].但是OBL存在一定的缺点,如引入OBL的算法尽管在早期迭代能够加强算法的寻优性能,但在迭代后期OBL无法使算法跳出局部最优,从而导致收敛精度和速度均变差.
折射反向学习(Refracted Opposition-Based Learning, ROBL)是一种新型的算法改进机制,其本质是在反向学习的基础上,结合光的折射定律来寻找更优的候选解.近年被用于改进原粒子群优化算法[18]与飞蛾扑火算法[19]等,已被证明能够在不同程度上改善基本算法的性能.本文尝试将该机制引入SSA算法以提升其优化性能.ROBL的基本原理如图 4所示.
在图 4中,x轴上的解的搜索区间为[a,b],y轴表示法线,入射光线和折射光线的长度分别为l和l*,α和β分别为入射角和折射角,交点O是区间[a,b]的中点.由图中线段的几何关系,可得:
$ \sin \alpha = \left( {\left( {a + b} \right)/2 - x} \right)/l, $ | (4) |
$ sin\beta = \left( {{x^*} - \left( {a + b} \right)/2} \right)/{l^*}. $ | (5) |
由折射率的定义可知n=sin α/sin β,将其与以上二式结合得到
$ n = \frac{{{l^*}\left( {\left( {a + b} \right)/2 - x} \right)}}{{l\left( {{x^*} - \left( {a + b} \right)/2} \right)}}. $ | (6) |
令k=l/l*, 带入上式可得
$ kn = \frac{{\left( {\left( {a + b} \right)/2 - x} \right)}}{{\left( {{x^*} - \left( {a + b} \right)/2} \right)}}. $ | (7) |
将式(7)进行变换,得到折射反向学习解的计算公式
$ {x^*} = \frac{{a + b}}{2} + \frac{{a + b}}{{2kn}} - \frac{x}{{kn}}. $ | (8) |
当k=1,n=1时,上式可转化为标准的反向学习公式
$ {x^*} = a + b - x. $ | (9) |
显然OBL仅为ROBL的一个特例.相对于OBL只能得到固定的候选解,ROBL可以通过调整参数获得动态的新候选解,这也将会提高算法跳出局部最优的概率.当优化问题的空间维度增加时,折射反向学习解可按下式计算
$ x_{i, j}^* = \frac{{{a_j} + {b_j}}}{2} + \frac{{{a_j} + {b_j}}}{{2k}} - \frac{{{x_{i, j}}}}{k}. $ | (10) |
式中:xi, j表示当前种群中第i个体在第j维上位置,xi, j*为xi, j的折射反向解,aj和bj分别为搜索空间上第j维的最小值和最大值.
2.2 自适应控制因子在原SSA算法中,随着算法的迭代进化,樽海鞘群体中的引导者不断向食物源移动,其余追随者依次相连,逐渐向种群中适应度较优的引导者靠拢.然而,从式(3)中可看到,追随者的位置只跟自身和相邻个体的位置相关,其行为较为单一.因此,当种群中的引领者陷入局部最优时,追随者必然随之陷入局部最优,从而导致算法出现早熟收敛现象.
前文已经提到:控制因子c1随着迭代次数的增加,从2非线性降低到趋于0.这样的变化有利于算法在迭代初期进行全局探索,在迭代后期能够在局部进行开发.为此,本文提出将控制因子c1引入追随者的位置更新,此时追随者也能够与引导者一样,产生自适应更新,从而提高算法跳出局部最优的能力,并加快整体的收敛速度.新的追随者公式为
$ {x_{i, j}} = \frac{{{c_1}}}{2}\left( {{x_{i, j}} + {x_{i - 1, j}}} \right). $ | (11) |
其中c1的表达式见式(2).
2.3 所提RCSSA算法综合上述策略对基本SSA算法进行改进后,得到的RCSSA算法实现流程如下:
Step1:设置算法参数:种群规模N,最大迭代次数T,搜索维数D,搜索范围[lb, ub];随机生成樽海鞘种群;
Step2:计算每个个体的适应度值,将适应度值最小的个体位置作为食物源;
Step3:更新控制因子c1,判断种群数是否超过N/2:超过则进入Step5,否则进入Step4;
Step4:更新随机数c2、c3,根据式(1)更新每个引导者个体的位置,同时采用式(10)计算其折射反向解,比较二者适应度大小,取较小的一个个体为新的位置,并进入Step6;
Step5:根据式(3)更新每个追随者个体的位置,采用引入控制因子c1的式(11)计算其折射反向解,比较二者适应度大小,取较小的一个个体为新的位置;
Step6:比较食物源和当前樽海鞘最优个体的适应度大小,取较小的一个为新的食物源;
Step7:若当代迭代次数达到最大迭代次数T,则输出最优个体,即算法找到的最优解;否则,返回Step2.
3 仿真实验及分析 3.1 基准测试函数为了测试RCSSA在解决全局优化问题中的效果,本文从文献[6]中选取23个基准测试函数进行算法性能测试.根据函数特征将这23个测试函数分为三个不同类型:可缩放单峰、多峰函数以及固定维度多峰函数.其中,函数F1~F7属于维度可变单峰函数,其仅包含一个全局最优,因此这些函数能够测试算法的开发能力;而维度可变多峰函数(F8~F13)包含多个局部最优,不易找到全局最优,可用于验证算法的全局探索能力;固定维多峰函数(F14~F23)的极值点较多,但由于维度较低,寻优较容易,可用来测试算法的稳定性.这些函数的表达式、维度、搜索范围、理论最优值和类型如表 1所示.
利用RCSSA算法对23个基准测试函数进行寻优求解,并与基本SSA、仅加入折射反向学习机制的SSA算法(RSSA)以及仅采用自适应控制因子的SSA算法(CSSA)进行对比,以验证所提综合改进策略的效果.此外,选择了5种群智能算法进行对比测试,这5种算法分别为:PSO[3],GWO[5],WOA[6],多元宇宙优化算法(MVO)[20]和正弦余弦算法(SCA)[21].这些算法已被证明具有较好的优化性能,并被应用到了不同的学科与工程领域.因此,将本文所提的RCSSA算法与之进行对比,可验证所提算法在优化性能方面是否具有优越性.
为了对比的公平性,将所有算法的参数设置为一致:迭代次数设为500,种群规模均设为30,控制因子初始值均设为2.其余算法参数按原论文进行取值,其中,RCSSA与RSSA中的缩放因子k=10 000.
3.3 RCSSA算法的性能测试 3.3.1 精度分析为防止随机性造成的误差,在相同条件下,将各算法在MATLAB2017a中独立运行30次,得到30维、100维函数的试验结果见表 2、表 3.表中的适应度平均值和标准差分别反映不同算法在给定独立运行次数下的收敛精度和稳定性,表中的加粗数据为最佳试验结果.
从表 2可以看出,对于30维单峰基准函数(F1~F7)和多峰基准函数(F8~F13),在除函数F6之外的其他函数上,RSSA算法和CSSA算法的平均适应度均小于原SSA算法,其中在函数F9和F10上收敛到了最小值,其标准差也是远小于SSA算法.这表明两种策略的加入对于提升原始算法的精度是有效的.同时可以看出,联合两种策略的RCSSA算法相对于两种单策略改进算法又有很大程度的提高.除了在函数F1和F3上得到了理论最优解,RCSSA算法在其他函数上也获得了比另外两种算法更好的结果.而相对于其他5种优化算法,RCSSA在30维函数上的平均适应度获得了9次领先,其中在函数F1~F4和F9~F11上的优势尤为明显.其余函数结果中,RCSSA在函数F8和F12上,分别仅次于WOA和PSO算法.
为了进一步测试RCSSA处理高维优化问题的性能,将基准函数F1~F13的维度扩大至100维,算法参数设置不发生改变,测试结果如表 3所示.随着维度的提高,原SSA算法和其他群优化算法的求解精度越来越差,而RCSSA仍然能保持较高的搜索精度,并且全面超过SSA算法.
函数F14~F23为固定维多峰函数,由于维度较低,因此相对于可变维度的多峰函数来说其局部最优值并不多.这类函数可测试算法在平衡探索和开发能力之间的性能.从表 4可以看到,几种算法在函数F16~F20上的结果相差不大,均能接近理论值,但是在函数F21~F23上,仅有RCSSA算法的结果能够最接近理论值.并且就标准差而言,所提出的算法也在大多数函数中实现了更好的性能.
图 5给出了各算法在30维基准函数和固定维多峰函数上的寻优收敛曲线,由此可直观地比较9种算法的收敛性能.从图中可以看出,在单峰函数F1~F7上,RCSSA算法从迭代初期就保持较高的收敛速度,并且获得了函数F1和F3的全局最优.而很明显SSA算法和其他算法在这些函数上陷入了局部最优.多峰函数F9~F13上,RCSSA在不到10次已经找到全局最优.在固定维函数F14和F16~F20上,几种算法的收敛速度相差不大,但是在F21~F23上,显然RCSSA算法的收敛速度和精度均优于其他算法.这些收敛图像充分表明了RCSSA算法在低维函数上优越的寻优能力.
通过分析表 2~表 4以及图 5,可以得出结论:联合ROBL机制和自适应控制因子的RCSSA算法在总体上优于原SSA算法、两种单策略改进的SSA算法和其他5种优化算法,表现出更高的搜索精度、收敛速度以及稳定性.
3.4 RCSSA求解工程设计优化问题本节从文献[22]中选取圆柱形压力容器设计优化问题以进一步测试RCSSA的性能.如何设计各类尺寸,使得压力容器总成本最小化是该工程优化问题的主要目标,其中成本包括焊接成本、材料和成型.为了解决这个问题,必须确定4个参数的最佳值:顶盖壁厚度T,管壁厚度t,容器管身长度L和内径R,如图 6所示.为了方便,将自变量进行编号,得
$ \begin{array}{l} \overrightarrow {f\left( x \right)} = 0.622\;4{x_1}{x_3}{x_4} + 1.778\;1{x_2}x_3^2 + \\ 3.166\;1x_1^2{x_4} + 19.84x_1^2{x_3}.\\ \left\{ {\begin{array}{*{20}{l}} {{g_1}\overrightarrow {\left( x \right)} = - {x_1} + 0.019\;3{x_3} \le 0, }\\ {{g_2}\overrightarrow {\left( x \right)} = - {x_3} + 0.009\;54{x_3} \le 0, }\\ {{g_3}\overrightarrow {\left( x \right)} = - {\rm{ \mathsf{ π} }}x_3^2{x_4} - \frac{4}{3}{\rm{ \mathsf{ π} }}x_3^3 + 1\;296\;000 \le 0}\\ {{g_4}\overrightarrow {\left( x \right)} = {x_4} - 240 \le 0, } \end{array}} \right.\\ 0 \le {x_1}, {x_2} \le 99.10 \le {x_3}, {x_4} \le 200. \end{array} $ |
根据文献[23],将RCSSA算法的种群规模和最大迭代次数分别设置为20和500,独立运行20次后取最优值.在相同试验条件下,所得结果以及文献中已有的试验结果列于表 5.由表 5可知,RCSSA是处理该问题的最佳优化算法,与其他算法相比可获得更好的结果.进一步说明了RCSSA可应用于实际问题且具有较好的优化效果.
本文基于折射反向学习机制与自适应控制因子提出了一种新型改进SSA算法.首先采用ROBL机制在每一次个体的求解中计算折射反向解,从而能够提高探索和增加原SSA算法的收敛能力.其次将SSA算法中引导者的自适应控制因子引入至跟随者的位置更新中,有效地控制整个搜索过程并增加了算法的局部开发能力.
对23个不同类型与维数的基准测试问题以及一个工程设计优化问题进行了仿真实验研究,详细分析了所提算法的探索、开发和跳出局部最优的能力.其研究结果表明:所提RCSSA算法可以有效提升原SSA算法的优化性能,其在整体性能上要明显优于GWO、WOA、SCA等多个当前最先进的群智能优化算法,并适用于处理高维函数优化问题.RCSSA在对工程设计问题进行优化时,其求解精度、收敛速度也均具有显著的优越性.在未来的研究工作中,RCSSA算法将进一步与工程应用相结合,以期解决更多实际优化问题.
[1] |
EWEES A A, ABD ELAZIZ M, HOUSSEIN E H. Improved grasshopper optimization algorithm using opposition-based learning[J]. Expert Systems with Applications, 2018, 112: 156. DOI:10.1016/j.eswa.2018.06.023 |
[2] |
DRAA A, CHETTAH K, TALBI H. A Compound Sinusoidal Differential Evolution algorithm for continuous optimization[J]. Swarm and Evolutionary Computation, 2019, 50: 100450. DOI:10.1016/j.swevo.2018.10.001 |
[3] |
KASSARWANI N, OHRI J, SINGH A. Performance analysis of dynamic voltage restorer using improved PSO technique[J]. International Journal of Electronics, 2019, 106(2): 212. DOI:10.1080/00207217.2018.1519859 |
[4] |
PAN W T. A new Fruit Fly Optimization Algorithm: Taking the financial distress model as an example[J]. Knowledge-Based Systems, 2012, 26: 69. DOI:10.1016/j.knosys.2011.07.001 |
[5] |
MIRJALILI S, MIRJALILI S M, LEWIS A. Grey wolf optimizer[J]. Advances in Engineering Software, 2014, 69: 46. DOI:10.1016/j.advengsoft.2013.12.007 |
[6] |
MIRJALILI S, LEWIS A. The whale optimization algorithm[J]. Advances in Engineering Software, 2016, 95: 51. DOI:10.1016/j.advengsoft.2016.01.008 |
[7] |
滕志军, 吕金玲, 郭力文, 等. 一种基于Tent映射的混合灰狼优化的改进算法[J]. 哈尔滨工业大学学报, 2018, 50(11): 40. TENG Zhijun, LV Jinling, GUO Liwen, et al. An improved hybrid grey wolf optimization algorithm based on Tent mapping[J]. Journal of Harbin Institute of Technology, 2018, 50(11): 40. DOI:10.11918/j.issn.0367-6234.201806096 |
[8] |
MIRJALILI S, GANDOMI A H, MIRJALILI S Z, et al. Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems[J]. Advances in Engineering Software, 2017, 114: 163. DOI:10.1016/j.advengsoft.2017.07.002 |
[9] |
陈涛, 王梦馨, 黄湘松. 基于樽海鞘群算法的无源时差定位[J]. 电子与信息学报, 2018, 40(7): 1591. CHEN Tao, WANG Mengxin, HUANG Xiangsong. Time difference of arrival passive location based on salp swarm algorithm[J]. Journal of Electronics & Information Technology, 2018, 40(7): 1591. DOI:10.11999/JEIT170979 |
[10] |
EL-FERGANY A A. Extracting optimal parameters of PEM fuel cells using salp swarm optimizer[J]. Renewable Energy, 2018, 119: 641. DOI:10.1016/j.renene.2017.12.051 |
[11] |
刘森, 贾志成, 陈雷, 等. 基于樽海鞘群体优化非负矩阵分解的高光谱图像解混算法[J]. 计算机辅助设计与图形学学报, 2019, 31(2): 315. LIU Sen, JIA Zhicheng, CHEN Lei, et al. Hyperspectral images unmixing based on nonnegative matrix factorization optimized by salp swarm algorithm[J]. Journal of Computer-Aided Design & Computer Graphics, 2019, 31(2): 315. DOI:10.3724/SP.J.1089.2019.17189 |
[12] |
SAYED G I, KHORIBA G, HAGGAG M H. A novel chaotic salp swarm algorithm for global optimization and feature selection[J]. Applied Intelligence, 2018, 48: 3462. DOI:10.1007/s10489-018-1158-6 |
[13] |
FARIS H, MAFARJA M M, HEIDARI A A, et al. An efficient binary salp swarm algorithm with crossover scheme for feature selection problems[J]. Knowledge-Based Systems, 2018, 154: 43. DOI:10.1016/j.knosys.2018.05.009 |
[14] |
ALI IBRAHIM R, EWEES A A, OLIVA D, et al. Improved salp swarm algorithm based on particle swarm optimization for feature selection[J]. Journal of Ambient Intelligence and Humanized Computing, 2019, 10: 3155. DOI:10.1007/s12652-018-1031-9 |
[15] |
WOLPERT D H, MACREADY W G. No free lunch theorems for optimization[J]. IEEE Transactions on Evolutionary Computation, 1997, 1(1): 67. DOI:10.1109/4235.585893 |
[16] |
TIZHOOSH H R. Opposition-based learning: A new scheme for machine intelligence[C]//Proceedings of International Conference on Computational Intelligence for Modelling Control and Automation and International Conference on Intelligent Agents, Web Technologies and Internet Commerce. Vienna, Austria: IEEE, 2005: 695. DOI: 10.1109/CIMCA.2005.1631345
|
[17] |
RAHNAMAYAN S, TIZHOOSH H R, SALAMA M M A. Quasi-oppositional differential evolution[C]//Proceedings of 2007 IEEE Congress on Evolutionary Computation. Singapore: IEEE, 2007: 2229. DOI: 10.1109/CEC.2007.4424748
|
[18] |
邵鹏, 吴志健, 周炫余, 等. 基于折射原理反向学习模型的改进粒子群算法[J]. 电子学报, 2015, 43(11): 2137. SHAO Peng, WU Zhijian, ZHOU Xuanyu, et al. Improved particle swarm optimization algorithm based on opposite learning of refraction[J]. Acta Electronica Sinica, 2015, 43(11): 2137. DOI:10.3969/j.issn.0372-2112.2015.11.001 |
[19] |
王光, 金嘉毅. 融合折射原理反向学习的飞蛾扑火算法[J]. 计算机工程与应用, 2019, 55(11): 46. WANG Guang, JIN Jiayi. Moth-flame optimization algorithm fused on refraction principle and opposite-based learning[J]. Computer Engineering and Applications, 2019, 55(11): 46. DOI:10.3778/j.issn.1002-8331.1809-0091 |
[20] |
MIRJALILI S, MIRJALILI S M, HATAMLOU A. Multi-Verse Optimizer: a nature-inspired algorithm for global optimization[J]. Neural Computing and Applications, 2016, 27(2): 495. DOI:10.1007/s00521-015-1870-7 |
[21] |
MIRJALILI S. SCA: A sine cosine algorithm for solving optimization problems[J]. Knowledge-Based Systems, 2016, 96: 120. DOI:10.1016/j.knosys.2015.12.022 |
[22] |
SANDGREN E. Nonlinear integer and discrete programming in mechanical design optimization[J]. Journal of Mechanical Design, 1990, 112(2): 223. DOI:10.1115/1.2912596 |
[23] |
HEIDARI A A, MIRJALILI S, FARIS H, et al. Harris hawks optimization:Algorithm and applications[J]. Future Generation Computer Systems, 2019, 97: 849. DOI:10.1016/j.future.2019.02.028 |
[24] |
MIRJALILI S. Moth-flame optimization algorithm: A novel nature-inspired heuristic paradigm[J]. Knowledge-Based Systems, 2015, 89: 228. DOI:10.1016/j.knosys.2015.07.006 |
[25] |
KAVEH A, TALATAHARI S. A novel heuristic optimization method: Charged system search[J]. Acta Mechanica, 2010, 213(3/4): 267. DOI:10.1007/s00707-009-0270-4 |