基于指数惯性权重和自适应变异的樽海鞘算法
2021-07-13蔡艺君贺兴时杨新社
蔡艺君,贺兴时,杨新社
(1.西安工程大学 理学院,陕西 西安 710048;2.密德萨斯大学 科学与技术学院,英国 伦敦 NW4 4BT)
0 引 言
在经济社会和自然科学等领域中都存在复杂优化问题,而传统的优化方法如牛顿法、共轭梯度法等在解决这些问题时存在一定局限性。为此,科研工作者通过模拟生物群体行为设计了大量群智能算法[1],如粒子群算法[2]、蚁群算法[3]、蝙蝠算法[4]、布谷鸟算法[5]等。这类算法在过去的二三十年里得到了迅速发展,并且已经在数据挖掘、工程技术、能源、网络、经济、医学等多个领域得到了广泛应用。
樽海鞘是一种类似水母的海洋生物,它们通常首尾相连形成樽海鞘链在海洋中移动和觅食。受此启发,MIRJALILI等提出了樽海鞘算法(salp swarm algorithm,SSA)[6]。相比于其他群智能算法,该算法具有模型简单、参数少、易实现等优点,自提出以来受到了国内外学者的广泛关注,目前已被成功应用在特征选择[7]、图像处理[8]、混合动力系统[9]、目标分类[10]等领域中。
虽然SSA对大多数优化问题具有很强的求解能力,但在解高维复杂函数优化问题时存在收敛速度慢、寻优精度低、易陷入局部最优的缺点。为此,许多科研工作者针对该算法的不足做了相应改进。文献[11]提出一种基于混沌的SSA,利用混沌映射产生的混沌数代替原有的随机数,在一定程度上解决了算法易陷入局部最优、收敛速度慢的缺点,并将其应用于特征选择问题;文献[12]提出了一种增强型的SSA,并将其应用于变速风力发电机;文献[13]在SSA领导者位置更新公式中引入莱维飞行策略,提升了算法的全局搜索能力和收敛速度;文献[14]提出一种带交叉算子的二进制,以SSA增强算法的全局搜索能力;文献[15]提出一种集成随机惯性权重和差分变异操作的SSA,提高了算法收敛速度和精度。
上述改进的SSA在不同方面、不同程度上弥补了该算法的缺点,但是从实验结果看,改进算法的收敛速度、精度、搜索能力和稳定性等仍有待提高。因此,为了使SSA具有更高的收敛精度,更快的收敛速度以及更好的全局和局部搜索能力,本文提出一种基于指数惯性权重和自适应t分布变异的改进樽海鞘算法(improved salp swarm algorithm, ISSA)。
1 樽海鞘算法
在樽海鞘算法中,樽海鞘链由位于链前端的领导者及其跟随者组成。该算法流程[16]如下:
(1)
2) 根据目标函数计算N个樽海鞘个体的适应度值。
3) 选定食物源的位置。对樽海鞘的适应度值排序,最优适应度值对应的樽海鞘位置即为食物源的位置。
4) 选定领导者和跟随者。选定食物位置后,群体中剩余N-1个樽海鞘,按照樽海鞘个体的排序,将排在前端的樽海鞘视为领导者,其余樽海鞘视为跟随者。
5) 更新樽海鞘领导者的位置。
(2)
c1=2exp(-(4l/L)2)
(3)
式中:l为当前迭代次数;L为最大迭代次数。
6) 更新跟随者的位置。
(4)
7) 计算更新后的个体的适应度。将更新后每个樽海鞘个体的适应度值与当前食物的适应度值进行比较,若更新后樽海鞘的适应度值优于食物,则以适应度值更优的樽海鞘位置作为新的食物源位置。
8) 判断是否满足终止条件。若是,则输出结果;否则,转到4)继续迭代。
2 改进樽海鞘算法
2.1 跟随者位置更新公式改进
原算法中跟随者根据自己的历史位置和前一个个体的历史位置更新自己的位置,所以会出现盲目跟从和易陷入局部最优的问题。为了增强对局部搜索能力的开拓,改善樽海鞘盲目跟从问题,将上一代前一个体的位置由上一代最优位置(即食物源的位置)代替,促使追随者们向最优位置移动以达到更好的寻优目的。改进后的跟随者位置更新公式定义如下:
(5)
2.2 指数递减惯性权重
平衡种群的全局和局部搜索能力在一定程度上会影响算法的寻优性能,而惯性权重策略可以提升算法的搜索能力,平衡局部搜索和全局搜索之间的关系。在粒子群优化算法中,文献[17]提出惯性权重能克服算法陷入局部最优,加快收敛速度。并指出如果惯性权重较大,粒子具有较强的全局搜索能力,但搜索能力较差效率低;反之,惯性权重小,粒子具有较强的局部搜索能力,但容易陷入局部最优。基于以上观点,文献[18]进一步提出线性递减的惯性权重有效地平衡全局和局部搜索,使得粒子早期具有很强的全局搜索能力,后期具有较强的局部搜索能力,能搜索到相对精确的结果。受此启发,本文在改进后的跟随者位置更新公式中引入指数递减惯性权重w(l)。w(l)的更新公式及加入权重后追随者位置更新公式如下:
(6)
(7)
式中:wmax和wmin分别表示权重因子w(l)的最大值和最小值,分别取0.8和0.2;l为当前迭代次数,L为最大迭代次数。在初始迭代阶段,权重因子较大,搜索范围也大,保证了全局搜索能力;随着迭代次数增加,权重因子逐渐减小,搜索范围也减小,使局部搜索能力逐渐增强,搜索结果也越来越精确。同时,随机扰动项rand(·)wmin增加了多种可能性,使权重因子更灵活,防止算法陷入局部极值而出现迭代停滞的可能。
2.3 自适应t分布变异
在樽海鞘个体位置更新后引入自适应t分布变异策略,对更新后的位置进行扰动,增加种群多样性,避免陷入局部最优。设置自适应因子α[19]控制变异程度的大小,定义如下:
(8)
式中:L为最大迭代次数;α的值在1到0间递减,随迭代次数的增加控制变异的程度由大到小。自适应t分布变异策略具体如下:
(9)
2.4 ISSA算法流程
1) 随机初始化N×d大小的种群。
2) 根据目标函数计算N个樽海鞘的适应度值。
3) 选定食物源的位置。对樽海鞘的适应度值排序,最优适应度值对应的樽海鞘位置即为食物源的位置。
4) 选定领导者和跟随者。选定食物位置后,群体中剩余N-1个樽海鞘,按照樽海鞘个体的排序,将排在前端的樽海鞘视为领导者,其余樽海鞘视为跟随者。
5) 按照式(2)和式(7)更新领导者和跟随者的位置。
6) 通过设置的概率cr与随机数rand(·)进行比较:如果rand(·) 7) 组合旧种群和从变异中获得的新种群,计算每个樽海鞘个体的适应度值,并与当前食物的适应度值进行比较。若更新后樽海鞘的适应度值优于食物,则以适应度值更优的樽海鞘位置作为新的食物的位置。 8) 判断是否满足终止条件。若是,则输出结果;否则,转到4)继续迭代。 为了证明ISSA的寻优性能,选取了8个不同难度的函数,分别测试改进算法(ISSA)的收敛精度、收敛速度,同时与带衰减因子的樽海鞘算法(RSSA)[20]、基本樽海鞘算法(SSA)、基本蝙蝠算法(BA)、基本花授粉算法(FPA)等4种算法进行比较,验证ISSA收敛速度和精度的优劣。 选取了表1所示的最优值均为0的8个测试函数。f1(x)~f6(x)为高维函数,f7(x)~f8(x)为二维函数。其中高维多峰函数f1(x)~f3(x)有较多局部极值点,主要用于测试算法跳出局部最优的能力;高维单峰函数f4(x)~f6(x)只有一个全局最小值,主要为了测试算法的收敛性能。 表 1 测试函数 实验环境为:CPU为i5-5257U 2.70 GHz,运行内存4 GB,操作系统Windows10,编程环境Matlab R2019a。设置ISSA算法的变异概率为0.5,BA算法声波频度为0.5, FPA算法的转换概率为0.8。 表2~9是5种算法对于不同测试函数f1(x)~f8(x)的求解精度对比。分别在相同的测试环境下运行了30次,种群大小均为30,最大迭代次数为1 000。 表 2 f1(x)函数仿真结果 表 3 f2(x)函数仿真结果 表 4 f3(x)函数仿真结果 表 5 f4(x)函数仿真结果 表 6 f5(x)函数仿真结果 表 7 f6(x)函数仿真结果 表 8 f7(x)函数仿真结果 表 9 f8(x)函数仿真结果 表2~7是5种算法对高维测试函数f1(x)~f6(x)的方差、最优值、平均值和最差值仿真结果;表8~9是5种算法对低维(维数为2)测试函数f7(x)及f8(x)的方差、最优值、平均值和最差值仿真结果。f1(x)~f3(x)为多峰函数。由表2~4可知,除f1(x) 外,ISSA在不同维度下均表现出良好的寻优能力,而其他算法都无法求得全局最优解。f4(x)~f6(x)为单峰函数,在定义域内只有一个极值点。从表5~7可以看出,ISSA也仍能取到全局最优解,表现出良好的寻优性能。可见,不论是单峰函数还是复杂多峰函数,ISSA均取到了全局最优值,并且随着维度的增加,仍能保持得出最优结果,而其他4个算法在迭代后期都陷入了局部最优,并随着维度的提高,求解精度逐渐下降。对于f1(x),ISSA虽然陷入了局部最优8.882×10-16,但相较于其他4个算法仍提高了收敛精度,并随着维度的提高,其他4个算法求解精度都在明显下降时,ISSA仍能表现出良好的稳定性。对于低维函数,由表8和9可以看出,ISSA仍能收敛到全局最优,表明ISSA在低维测试函数条件下仍然具有良好性能。 图1是8个函数的速度收敛曲线图,直观地反映出5种算法的收敛速度和精度。其中,图1(a)~(f)是高维单峰和多峰函数(维数为10)的速度收敛图,从图1(g)~(h)是低维函数(维数为2)的速度收敛图。从图1可以看出:ISSA表现出了优越的性能,在收敛速度上优于SSA、FPA、BA和RSSA。对于每个测试函数,ISSA在100代之内均可以收敛到全局最优,而其他算法则需要迭代更多次才能收敛,甚至不能收敛到全局最优值。对比这5种算法的收敛曲线,无论是高维、低维还是单峰、多峰函数,ISSA都具有更好的寻优能力和更快的收敛速度。 (a) f1(x) (b) f2(x) (c) f3(x) (d) f4(x) (e) f5(x) (f) f6(x) (g) f7(x) (h) f8(x)图 1 测试函数收敛曲线Fig.1 Convergence curve of test functions 该问题求解在约束条件g1和g2下的管柱直径d及厚度t,使管柱成本最小,表示为 minf=9.8dt+2d 式中:2 cm≤d≤14 cm,0.2 cm≤t≤0.8 cm;管柱负载p=2 500 N;管柱材料应力σy=500 N/cm2;弹性模量E=0.85×106N/cm2;管柱高度L=250 cm。ISSA对管柱设计问题的求解结果,与文献[21]和文献[22]对该问题的求解结果对比,如表10所示。 表 10 管柱设计问题最佳方案结果对比 从表10可以看出,ISSA在计算管柱设计问题时能得到较优结果。 该问题求解在约束条件g1、g2和g3下,三杆的横截面积x1、x2和x3并使其体积最小,其中x1=x3,表示为 式中:横截面0≤x1≤1 cm2,0≤x2≤1 cm2;三杆长度均为l=100 cm;节点处受力p=2 kN;杆的应力度σ=2 kN/cm2。 ISSA对三杆平面桁架问题的求解结果与文献[23]中Park、Yang和Ray对该问题的求解结果对比,如表11所示。 表 11 三杆平面桁架问题最佳方案结果对比 从表11可以看出,ISSA在计算三杆平面桁架问题时也能得到较优结果。 本文针对樽海鞘算法的不足进行了改进。通过最优位置替换个体位置,改进了跟随者位置更新公式,提升了算法寻优能力;为了增强算法的全局搜索和局部搜索能力,将指数递减惯性权重加入到改进后的跟随者位置更新公式中,提升了收敛精度;引入自适应t分布变异,避免算法陷入局部最优,加快了其收敛速度。通过仿真实验对比并在工程设计问题中应用,验证了改进算法与其他算法相比的优越性。下一步将研究改进算法在组合优化问题中的应用。3 仿真实验
3.1 测试函数
3.2 测试环境及算法参数
3.3 求解精度比较
3.4 算法收敛性比较
4 工程应用
4.1 管柱设计问题
4.2 三杆平面桁架问题
5 结 语