演化算法:乌鸦搜索算法 (Crow Search Algorithm)

前言

如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。

在机器学习中,我们所要优化的问题很多时候难以求导,因此通常会采用一些演化算法(又称零阶优化 / 黑盒优化)来近似求解。

这些演化算法通常是根据一些生物的行为置顶,有如下分类:

在这里插入图片描述
本文所要介绍的乌鸦搜索算法 (CSA) 就是其中的一种,属于演化算法。


乌鸦搜索算法

乌鸦搜索算法受乌鸦的行为所启发,即在乌鸦种群中,每只乌鸦都在干三件事:

  • 寻找藏食物的地点;
  • 想要发现其它乌鸦藏食物的地点;
  • 不想被其它乌鸦发现自己藏食物的地点。

每只乌鸦 i i i 在每一轮会选择一只乌鸦 j j j 进行跟踪,此时有两种情况:

  • 乌鸦 j j j 未发现乌鸦 i i i,则乌鸦 i i i 向乌鸦 j j j 藏食物的地点前进;
  • 乌鸦 j j j 发现了乌鸦 i i i,决定进行误导,即乌鸦 i i i 的位置变成随机位置。

为进一步说明上述过程,定义如下符号:

  • 向量 x i t x_i^{t} xit 表示第 i i i 只乌鸦第 t t t 轮的位置;
  • m e m i t mem_i^t memit 表示第 i i i 只乌鸦第 t t t 轮的历史最优解;
  • A P i t AP_i^t APit 表示第 i i i 只乌鸦第 t t t 轮的警觉概率;
  • f l i t fl_i^t flit 表示第 i i i 只乌鸦第 t t t 轮的跟随步长;
  • r i r_i ri 表示第 i i i 只乌鸦的随机概率,范围在 ( 0 , 1 ) (0,1) (0,1) 之间。

x i t x_i^{t} xit 理解为第 t t t 轮搜索到的位置, m e m i t mem_i^t memit 即为到第 t t t 轮时的历史最优解。具体迭代过程如下:

  • 一共有 t M A X t_{MAX} tMAX 轮迭代, N N N 只乌鸦;
  • 每一轮迭代,遍历每一只乌鸦;
  • 当遍历到第 i i i 只乌鸦时,随机选择第 j j j 只乌鸦进行跟踪;
    • 如果 r j ≥ A P j t r_j\geq AP_j^t rjAPjt,即乌鸦 j j j 未发现,则乌鸦 i i i 进行如下更新:
      x i t + 1 = x i t + r i ⋅ f l i t ⋅ ( m e m j t − x i t ) , x_i^{t+1}=x_i^t+r_i\cdot fl_i^t \cdot (mem_j^t-x_i^t), xit+1=xit+riflit(memjtxit),
    • 如果 r j < A P j t r_j<AP_j^t rj<APjt,则 x i t + 1 x_i^{t+1} xit+1 变为随机值;
  • 每一轮迭代结束后,遍历每一只乌鸦,若 f ( x i t + 1 ) > f ( m e m i t ) f(x_i^{t+1})>f(mem_i^t) f(xit+1)>f(memit),则更新 m e m i t + 1 = x i t + 1 mem_i^{t+1}=x_i^{t+1} memit+1=xit+1,否则不更新,即 m e m i t + 1 = m e m i t mem_i^{t+1}=mem_i^{t} memit+1=memit

完整算法如下:
在这里插入图片描述


参考资料

猜你喜欢

转载自blog.csdn.net/qq_41552508/article/details/129393734
今日推荐