智能优化算法:樽海鞘群优化算法-附代码

智能优化算法:樽海鞘群优化算法-附代码


摘要:樽海鞘群算法( salp swarm algorithm,SSA)是Seyedali Mirjalili等于2017年提出的一种新型智能优化算法[1]。 该算法模拟了樽海鞘链的群体行为,是一种较新颖的群智能优化算法。每次迭代中,领导者指导追随者,以一种链式行为,向食物移动。移动过程中,领导者进行全局探索,而追随者则充分进行局部探索,大大减少了陷入局部最优的情况。

1.算法原理

樽海鞘是一种海洋无脊椎动物,身体呈桶状且几乎完全透明,以水中浮游植物为食,通过吸入和喷出海水完成在水中移动。在深海中,樽海鞘以一种链式的群行为进行移动和觅食,这种“奇特”的群行为引起了研究者的兴趣。樽海鞘的链式群行为,通常个体首尾相接,形成一条“链”,依次跟随进行移动。在樽海鞘链中,分为领导者和追随者,领导者朝着食物移动并且指导着紧随其后的追随者的移动,追随者的移动按照严格的“等级”制度,只受前一个樽海鞘影响。这样的运动模式使樽海鞘链有很强的全局探索和局部开发能力。

1.1种群初始化

设搜索空间为 D×ND × N 的欧氏空间,DD 为空间维数,NN 为种群数量。空间中樽海鞘的位置用 $ X_{n}=[X_{n1},X_{n2},…,X_{nD}]^{T}表示,食物的位置用 F_{n}=[F_{n1},F_{n2},…,F_{nD}]^{T}表示,n=1,2,3,…,N。搜索空间的上界为ub=[ub_{1},ub_{2},…,ub_{D}],下界为ub=[lb_{1},lb_{2},…,lb_{D}],j=1,2,3,…,N$。
XD×N=rand(D,N).(ublb)+lb(1) X_{D×N}=rand(D,N).(ub-lb)+lb\tag{1}
种群中领导者用 Xd1X_{d}^{1}表示,追随者用 XdiX_{d}^{i}表示,i=2,3,4,...,N;d=1,2,3,...Di=2,3,4,...,N;d=1,2,3,...D

1.2 领导者位置更新

在樽海鞘链移动和觅食过程中,领导者的位置更新表示为:
Xd1={Fd+c1((ublb)c2+lb),c30.5Fdc1((ublb)c2+lb),c3<0.5(2) X_{d}^{1}=\begin{cases}F_{d}+c_{1}((ub-lb)c_{2}+lb),c_{3}\geq{0.5}\\ F_{d}-c_{1}((ub-lb)c_{2}+lb),c_{3}<0.5\end{cases}\tag{2}
式中: Xd1X_{d}^{1}FdF_{d}分别是第 dd 维中第一个樽海鞘( 领导者) 的位置和食物的位置; ubublblb 分别是对应的上下界。其中,c1c2c3c_{1}、c_{2}、c_{3}是控制参数。

式( 2) 表明,领导者的位置更新仅与食物的位置有关。c1c_{1}是优化算法中的收敛因子,起到平衡全局探索和局部开发的作用,是 SSA 中最重要的控制参数。c1c_{1}的表达式为:
c1=2e(4lL)2(3) c_{1}=2e^{-(\frac{4l}{L})^{2}}\tag{3}
式中: ll 是当前迭代次数; LL 是最大迭代次数。收敛因子是一个 2-0 的递减函数。

控制参数 c2c3c_{2}、c_{3}是[0,1]的随机数,用来增强Xd1X_{d}^{1}的随机性,提高链群的全局搜索和个体多样性。

1.3 追随者位置更新

在樽海鞘链移动和觅食的过程中,追随者通过前后个体间的彼此影响,呈链状依次前进。它们的位移符合牛顿运动定律,追随者的运动位移为:
X=12at2+v0t(4) X=\frac{1}{2}at^{2}+v_{0}t\tag{4}
式中: tt 是时间; aa 是加速度,计算公式为a=(vfinalv0)/ta=(v_{final}-v_{0})/t;v0v_{0}是初始速度,并且vfianl=(XdiXdi1)/tv_{fianl}=(X_{d}^{i}-X_{d}^{i-1})/t

考虑到在优化算法中,tt 是迭代的,设迭代过程中t=1t = 1,并且 v0=0v_{0}= 0。那么式( 4) 可以表示为:
X=XdiXdi12(5) X=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{5}
式中: i2i≥2; XdiX_{d}^{i}Xdi1X_{d}^{i-1}分别是第 dd 维中彼此紧连的两个樽海鞘的位置。因此,追随者的位置表示为:
Xdi=XdiXdi12(6) X_{d}^{i'}=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{6}
式中,XdiX_{d}^{i'}XdiX_{d}^{i}分别是第 dd 维中更新后的追随者的位置和更新前追随者的位置。

2.算法流程:

1)初始化种群。根据搜索空间每一维的上界与下界,利用式(1)初始化一个规模为N ×D 的樽海鞘 群。
2)计算初始适应度。计算 N 个樽海鞘的适应度值。
3)选定食物。由于实际定位时我们不知道目标(即食物)的位置,因此,将樽海鞘群按照适应度值进行排序,排在首位的适应度最优的樽海鞘的位置设为当前食物位置。
4)选定领导者与追随者。选定食物位置后,群体中剩余N −1 个樽海鞘,按照樽海鞘群体的排序,将排在前一半的樽海鞘视为领导者,其余樽海鞘视为追随者。
5)位置更新。首先根据式(2)更新领导者的位置,再根据式(6)更新追随者的位置。
6)计算适应度。计算更新后的群体的适应度。将更新后的每个樽海鞘个体的适应度值与当前食物的适应度值进行比较,若更新后樽海鞘的适应度值优于食物,则以适应度值更优的樽海鞘位置作为新的食物的位置。

7)重复步骤4)-步骤6),直到达到一定迭代次数或适应度值达到终止门限,满足终止条件后,输出当前的食物位置作为目标的估计位置。

3.算法结果

智能优化算法:樽海鞘群优化算法-附代码

4.参考文献

[1]Seyedali Mirjalili,Amir H. Gandomi,Seyedeh Zahra Mirjalili,Shahrzad Saremi,Hossam Faris,Seyed Mohammad Mirjalili. Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems[J]. Advances in Engineering Software,2017.

[2]陈涛,王梦馨,黄湘松.基于樽海鞘群算法的无源时差定位[J].电子与信息学报,2018,40(07):1591-1597.

[3]王斐,贾晓洪,李丽娟,王忠勇.基于樽海鞘群算法的图像匹配方法[J].弹箭与制导学报,2019,39(05):111-114.

5.MATLAB 代码

https://mianbaoduo.com/o/bread/Z5iZmJs=