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,仅供参考
指标 | 星数 |
---|---|
复杂度 | ★★★★★★☆☆☆☆ |
收敛速度 | ★★★☆☆☆☆☆☆☆ |
全局搜索 | ★★★☆☆☆☆☆☆☆ |
局部搜索 | ★★★★★☆☆☆☆☆ |
优化性能 | ★★★★☆☆☆☆☆☆ |
跳出局部最优 | ★★★☆☆☆☆☆☆☆ |
改进点 | ★★★☆☆☆☆☆☆☆ |
网友评论