樽海鞘群算法

来自testwiki
跳转到导航 跳转到搜索

樽海鞘群算法Template:Lang-en, SSA),又称樽海鞘群优化Template:Lang-en, SSO),是由Mirjalili et al. 在2017年提出的一种元启发式算法。

该算法受樽海鞘群捕食规律启发。在粒子数量受限的情况下,该算法比其他算法更有效。

算法原理

樽海鞘群分为领导者和追随者,领导者向食物移动,而其追随者成链式运动进行跟随。

算法实现

参数设置:

-N为樽海鞘种群数量

-j为求解维度

-ubj(upper bound)为求解上边界

-lbj (lower bound) 为求解下边界

-T为最大迭代次数

-t为当前迭代次数

初始化种群。请注意,因为樽海鞘群成链式运动,所以在上边界和下边界均匀分布的初始化最适合本算法,也有论文[1][2]提出使用混沌序列进行初始化。总之,随机初始化很可能导致结果不理想,条件允许尽量不要采用随机初始化。

在计算机语言中,种群通常用数组表示,这里用xji表示粒子位置,i表示第几个粒子,j表示粒子所在维度数。

领导者位置更新公式: xj1={Fj+c1((ubjlbj)c2+lbj) c30.5Fjc1((ubjlbj)c2+lbj) c3<0.5

其中,xj1表示领导者位置,Fj表示当前最优解位置(食物位置),c1为平衡开发与探索的系数,其公式为:c1=2e(4tT)2,其中e为自然常数,t为当前迭代次数,T为最大迭代次数,c2c3为0~1的随机数。

追随者位置更新公式: xji=xji+xji1

其中,等式左边的xji表示第i个樽海鞘的更新位置,等式右边的xji表示第i个樽海鞘当前的位置,xji1表示第i1个樽海鞘的位置。

改进的樽海鞘群算法

与其他元启发式算法一样,樽海鞘群算法也会遇到收敛速度和被限制在局部最优解的情况,以下介绍几种优化的方法。

  • 在可以保证不被限制局部最优解的情况下,收敛速度不理想的情况可以通过动态增加领导者数量来解决。在迭代初始,设1个领导者,此时算法能充分探索,在迭代末尾,设N2个领导者,此时算法能迅速收敛。领导者数量可用常见函数n=ef(t,T)计算,n为计算得出的领导者数量,f(t,T)为根据具体情况所得出的函数。
  • 被限制在局部最优解时可以通过增加疯狂粒子[1]来增加算法的探索能力
  • 有论文[3]提出在SSA算法中引入Lévy flight[4]

樽海鞘算法的实际应用

在光伏发电,最大功率的追踪算法(Maximum power point tracking,MPPT)[5]

参考文献