优化算法笔记(三十六)哈里斯鹰算法

1. 算法简介

(以下描述,均不是学术用语,仅供大家快乐的阅读)
  哈里斯鹰算法是受哈里斯鹰捕食兔子过程启发而提出的优化算法。算法提出与2019年,提出时间不长。
  哈里斯鹰算法非常的复杂,其位置更新公式就有7个,并且使用了许多条件来判断何时使用哪一个公式来计算新位置。该算法更像是数个算法拼接而成,与哈里斯鹰没有太大的关系。不多近年多数算法都是这样,算法与其名字相关的动物并没有太大的关系,应该是先写好了算法,再去寻找与之相似,能够套用的动物,才造成了这样的结果。


2. 算法流程

本期的主角就是哈里斯鹰了(其实兔子才是主角,不过就理解兔子是鹰所在位置的适应度函数也行)。
  哈里斯鹰算法中的种群数量为N,每只鹰的位置为,该位置的优劣由其适应度函数计算得出。
  下面看看该算法的位置更新公式。


  公式(1)-公式(7)为位置更新公式。
  其中rand为[0,1]内的均匀随机数,rand2为[-2,2]内的均匀随机数,J为[-1,1]内的均匀随机数, 为种群中的随机个体, 为全局最优位置, 为群体的平均位置。
  先来解析一下各个公式的含义。
  先说说公式(1)(3)(5)(6)(7)这4个相似的公式
  公式(1),在当前位置附近进行搜索,搜索范围较大。
  公式(3)(5)(6)则是在当前最优位置附近搜索,其搜索范围由公式(8)决定,可见随着迭代次数的增大,它们的搜索范围会越来越小。
  公式(7)则是在得到的新位置处进行小范围levy飞行。

下面看看公式(2)和公式(4)。
  公式(2)的含义是在解空间的中心区域进行搜索。随着迭代次数增加,和会越来越近,此时公式(2)前半部分取值近似于0,后半部分其实就是解空间内随机初始化并乘上了一个随机数,[0,1]内均匀随机数可取其期望为0.5,故该公式会在解空间中心区域进行搜索。
  公式(4),个人觉得有点问题。当群体较为集中后,可以理解为与几乎重合,次数公式(4)退化成如下公式:


  易知公式(9)所表示的是当前最优位置与原点(每个维度都是0的点)连成的直线,该直线过原点,所以,当适应度函数的正解在0处时,算法的结果会非常的好,反之,效果稍差。
  算法中选择哪个阶段来更新位子主要由E的值决定。


  从条件中可以看出,算法的前期使用公式(1)(2)的概率较大,而在后期则是(3)(4)(5)(6)的使用概率较大。
  其中公式(5)(6)(7)在使用后需要通过贪心算法来判断是否保留该值,公式(1)(2)(3)(4)则是无论结果好坏,都会飞行到新位置。
  算法流程图如下


  流程图属实给我整不会了T^T

3. 实验

适应度函数。
实验一:

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10

  从图像可以看出,算法收敛性还是不错的,局部搜索能力也不错。在算法中后期,我们可以看到群体的轨迹慢慢变成了一条线。这是由公式(4)造成的,由于公式(4)的步骤没有贪心算法,会让群体出现在当前最优位置与原点(值为0的点)所确定的直线上。

最优值 3.825638232062466E-4
最差值 0.3058783621115111
平均值 0.04628947420338882

我们看看结果,结果中规中矩,不太出色,并且不太稳定。看来算法的性能不一定和其复杂程度成正比。
  有没有可能是公式(4)让大部分应该收敛的个体去了较远的位置,而使得算法的精度不高呢?实验二将去掉公式(4)再看看效果
实验二:将公式(4)替换为公式(3)


  从图像上看,比实验一好了一点,群体不再像实验一中那样会集中到一条直线上,其他看上去与实验一没有太大的差别。

最优值 4.067659511451527E-6
最差值 0.04826967148053276
平均值 0.013061678816358727

从结果来看,实验二的结果比实验一也只是好了一点,说明公式(4)对其影响也不算太大,总体来说算法还是有一定的稳定性,单独修改某一个公式对算法的结果的影响不显著。

4.总结

哈里斯鹰算法是根据哈里斯鹰捕食兔子的过程提出的优化算法。算法流程非常非常复杂,公式也非常非常多,虽然这些公式的相似度很高,但看起来仍然很恐怖。算法的效果并没有因为其流程的复杂而变得出众。看来算法的效果并不是与算法的复杂程度正相关,优秀的算法通常看起来也都很简洁。

参考文献
Aaha B , Sm C , Hf D , et al. Harris hawks optimization: Algorithm and applications[J]. Future Generation Computer Systems, 2019, 97:849-872. 提取码:luuq
原文代码提取码:luuq
以下指标纯属个人yy,仅供参考

指标 星数
复杂度 ★★★★★★☆☆☆☆
收敛速度 ★★★☆☆☆☆☆☆☆
全局搜索 ★★★☆☆☆☆☆☆☆
局部搜索 ★★★★★☆☆☆☆☆
优化性能 ★★★★☆☆☆☆☆☆
跳出局部最优 ★★★☆☆☆☆☆☆☆
改进点 ★★★☆☆☆☆☆☆☆

目录
上一篇 优化算法笔记(三十五)天鹰算法

你可能感兴趣的:(优化算法笔记(三十六)哈里斯鹰算法)