樽海鞘群算法

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

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

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

算法实现
参数设置:

-N为樽海鞘种群数量

-j为求解维度

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

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

-T为最大迭代次数

-t为当前迭代次数

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

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

领导者位置更新公式: x^1_j = \begin{cases} F_j+c_1((ub_j-lb_j)c_2 + lb_j) & \text{ }c_3\geqslant0.5 \\ F_j-c_1((ub_j-lb_j)c_2 + lb_j) & \text{ }c_3

其中,x^1_j表示领导者位置,F_j表示当前最优解位置(食物位置),c_1为平衡开发与探索的系数,其公式为:c_1=2e^{-\left ( \frac{4t}{T} \right )^2},其中e为自然常数,t为当前迭代次数,T为最大迭代次数,c_2、c_3为0~1的随机数。

追随者位置更新公式: x^i_j = x^i_j+x^{i-1}_j

其中,等式左边的x^i_j表示第i个樽海鞘的更新位置,等式右边的x^i_j表示第i个樽海鞘当前的位置,x^{i-1}_j表示第i-1个樽海鞘的位置。

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

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

樽海鞘算法的实际应用
在光伏发电,最大功率点追踪(Maximum power point tracking,MPPT)。

参考文献

评论 (0)

  • 还没有评论,来抢沙发吧。