启发式算法之灰狼优化算法

前言   

蚁群算法?秃鹰算法?布谷鸟算法?鱼群算法?猴群算法?这都是些啥?

启发式算法之灰狼优化算法_第1张图片

这些算法听起来都很接地气,实际上也确实很接地气。它们都是学者通过观察动物们的行为得到的灵感,从而设计出来的精彩的算法。以动物命名的算法可远不止这些,比如还有蜂群算法、狼群算法、蝙蝠算法,萤火虫算法等,而这些都可以统称为启发式算法。

今天,要给大家介绍的也是一种启发式算法——灰狼优化算法(Grey Wolf Optimizer,GWO)是由自然界中灰狼群体的社会等级机制和捕猎行为而衍生出来的一种群体优化智能算法,目前已成功运用到车间调度、参数优化、图像分类等领域中。

一、灰狼群的等级制度 

在介绍算法本身之前,我们先来聊聊灰狼群中有趣的等级制度。灰狼隶属于群居生活的犬科动物,是食物链的顶级掠食者,他们严格遵守着一个社会支配等级关系。如图:

启发式算法之灰狼优化算法_第2张图片 图一 灰狼等级分层

灰狼群一般分为4个等级:处于第一等级的灰狼是领头狼,用α表示,它们主要负责各类决策,然后将决策下达至整个种群;处于第二阶级的灰狼用β表示,称为从属狼,用于辅助α狼制定决策或其他种群活动;处于第三阶段的灰狼用δ表示,侦察狼、守卫狼、老狼和捕食狼都是这一类。处于第四等级的灰狼用ω表示,它们在灰狼群中扮演了"替罪羊"的角色(好惨),同时它们必须要屈服于其他等级的狼。

  二、数学模型  

  • 等级制度

依据上述灰狼等级制度,可以对灰狼的社会等级进行数学建模,认为最合适的解是α,那么第二和第三最优解分别表示为β和δ,而剩余其他解都假定为ω。在GWO中,通过α、β和δ来导引捕食(优化),ω听从于这三种狼。

  • 包围猎物

启发式算法之灰狼优化算法_第3张图片

  • 狩猎

灰狼具有识别潜在猎物(最优解)位置的能力,但很多问题的空间特征是未知的,因此灰狼无法确定猎物(最优解)的精确位置。为了模拟整个过程,这里假设α、β和δ识别潜在猎物位置的能力较强,所以,在每一次的迭代过程中,将保留当前种群中的最好三只灰狼(α、β和δ),然后再根据它们的位置信息来更新其它搜索代理(包括ω)的位置。

启发式算法之灰狼优化算法_第4张图片 图二 包围和狩猎

灰狼个体跟踪猎物位置的数学模型描述如下:

启发式算法之灰狼优化算法_第5张图片

  • 攻击猎物

当猎物停止移动时,灰狼通过攻击来完成整个狩猎过程。为了模拟逼近猎物,a值的减少会引起A的值也随之波动,也就是说,在a由2收敛至0的过程中,A在区间[-a,a]内变化。

启发式算法之灰狼优化算法_第6张图片 图三 攻击猎物和寻找猎物

如上图,当A的值位于区间内时,灰狼的下一位置可以位于其当前位置和猎物位置之间的任意位置。当|A|<1时,狼群向猎物发起攻击(陷入局部最优),当|A|>1时,灰狼与猎物分离,希望找到更合适的猎物(全局最优)。

  • 寻找猎物

灰狼主要依据α,β和δ的位置信息来寻找猎物,它们开始会分散地去搜索猎物位置信息,然后集中起来攻击猎物。基于数学模型的散度,可以通过|A|>1迫使捜索代理远离猎物,这种方式使得灰狼优化算法可以在全局寻找最优解。同时,GWO 算法中的另一个搜索系数是C。从式(4)可知,C是[0,2]之间的随机值,此系数表示灰狼当前位置对猎物影响的随机权重,C>1是增加,反之减少。这有助于 GWO 在优化过程中展示出随机搜索行为,避免算法陷入局部最优。

  三、算法流程  

简单的讲,狼群中有α,β和δ三只灰狼做头狼,α是狼王,β、δ分别排第二第三,β要听老大α的,δ要听α、β的。这三头狼指导着狼群里其他的狼寻找猎物,狼群寻找猎物的过程就是我们寻找最优解的过程。

具体的算法流程如下图:

  

启发式算法之灰狼优化算法_第7张图片

算法的优点

  • 算法操作简单

  • 参数设置少

  • 鲁棒性强

  • 收敛速度相对同类算法更快

  • 精确度较高

算法的缺点

  • 种群多样性差

  • 后期收敛速度慢

  • 易陷入局部最优

目前有很多学者,针对灰狼优化算法的不足之处提出了对应的改进算法,比如通过反向学习策略优化初始化种群分布以此增加全局搜索能力,还有学者通过引入混沌算子、设置算法参数更新控制变量,以应对灰狼优化算法后期收敛速度慢、可能陷入局部最优解的缺点。

✎ 写在最后 

大自然一直都是我们最好的老师,与人类开发的技术相比,大自然的解决方案往往更高效、更持久。通过对动物行为的观察,不少学者都提出了能用于解决实际问题的算法,这也告诉我们,平时要仔细观察,善于思考,说不定哪天你也可以提出一个类似的算法,解决你所遇到的问题。

本期内容就到这里了,如果喜欢就点个关注吧,微信公众号搜索“数 新 网 络 科 技 号”可查看更多精彩内容~

你可能感兴趣的:(算法,人工智能,机器学习)