优化算法笔记(十八)灰狼算法

1. 灰狼算法简介

(以下描述,均不是学术用语,仅供大家快乐的阅读)
  灰狼算法(Grey Wolf Algorithm)是受灰狼群体捕猎行为启发而提出的算法。算法提出于2013年,仍是一个较新的算法。目前为止(2020)与之相关的论文也比较多,但多为算法的应用,应该仍有研究和改进的余地。
  灰狼算法中,每只灰狼的位置代表了解空间中的一个可行解。群体中,占据最好位置的三只灰狼为狼王及其左右护法(卫)。在捕猎过程中这三只狼将带领着狼群蛇皮走位,抓捕猎物,直至找到猎物(最优解)。当然狼王不会一直是狼王,左右护法也是一样,每一轮走位后,会根据位置的优劣重新选出新的狼王和左右护法。狼群中的每一只灰狼会向着(也可能背向)这三只位置最优的灰狼移动一定的距离,来决定这一步自己将如何走位。简单来说,灰狼个体会向则群体中最优的三个个体移动

2. 算法流程

很明显该算法的主角就是灰狼了。


  灰狼群在D维空间内有N个个体,其位置为
X=(x^1,x^2,...x^D) ,其适应度值为F(x) ,每只灰狼并没有其他特殊的属性,行为也较为简单。
  原文描述了灰狼群的很多行为,如包围猎物(Encircling prey)、搜寻猎物(Search for prey )、攻击猎物(Attacking prey),但其核心行为只有一个,就是捕猎(Hunting)。其他的行为都是捕猎行为的组成部分,用来说明捕猎的流程以及参数对行为的影响。
  在这里,为了方便描述,根据算法的计算流程将其捕猎行为分为两个步骤:
  1.观察,即计算一只灰狼向着目标头狼(头狼及其左右)前进后的位置。
  2.行动,根据观察所有的头狼计算出的下一步的位置并移动到那里。

2.1观察

设定目标灰狼为
X_p=(x_p^1,x_p^2,...x_p^D) ,当前灰狼的为X_i=(x_i^1,x_i^2,...x_i^D) ,则该灰狼向着目标灰狼移动后的位置 可以由一下公式计算得出:


  其中A为取值范围-a到a的均匀随机数,a为常数,初始值为2,并随着算法迭代由2线性递减至0。C为取值0或2的随机数。
  从公式可以看出,经过移动后,灰狼i将移动到目标灰狼p的周围,其方位由自身每一维度的大小及随机数C决定,而其距离目标灰狼p的距离将由随机数A决定。由A的定义可知随着迭代次数增加,观察后的灰狼位置将会离目标灰狼越来越近。

2.2行动

灰狼群体中位置最好的三只灰狼编号为1,2,3,那么当前的灰狼i通过观察灰狼1、灰狼2和灰狼3,根据公式(1)得出的三个位置为Xi1,Xi2,Xi3。那么灰狼i将要移动到的位置可以根据以下供述计算得出:


  可以看出该灰狼的目标位置是通过观察三只头狼得到的三个目标位置的所围成的区域的质心。(质心超出边界时,取值为边界值)。

灰狼算法的论文描述很多,但是其公式和流程都非常简单,主要对其参数A和C的作用效果进行了详细描述。
  C主要决定了新位置相对于目标灰狼的方位,而A则决定新位置向目标靠近还是远离目标灰狼。当|A|>=1时,为远离目标,表现出更强的全局搜索能力,|A|<1时靠近目标,表现出更强的局部搜索能力。

3. 实验

适应度函数f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=0
实验一:

问题维度(维度) 2
总群数量(种群数) 20
搜索次数(最大迭代次数) 100
A Rand(-a,a),a=2->0
C Rand{0,2}
取值范围 (-100,100)
实验次数 10
最优值 2.6062775921213544E-22
最差值 5.17099440808296E-14
平均值 5.175029931249637E-15

看看这图像和结果,效果好极了。每当我这么认为时,总会出现意想不到的转折。
  修改一下最优解位置试一试,f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=90
实验二f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=90

最优值 0.023179729319963736
最差值 0.42578156266405487
平均值 0.18248549905908668

其结果比上面的实验差了不少,但我觉得这才是一个优化算法应有的搜索图像。其结果看上去较差只是因为迭代次数较少,收敛不够迅速,这既是优点也是缺点,收敛慢但是搜索更细致。
  仔细分析灰狼算法的流程,它并没有向原点靠近的趋势,那只能理解为算法群体总体上向着群体的中心移动。猜想:当初始化群体的中心恰好是正解时,算法的结果将会非常的好。
  下面使用f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=0,并将灰狼的初始位置限定在(50,100)的范围内,看看实验图像是否和实验二的图像一致。

实验三. f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=0,初始种群取值范围为(50,100)

最优值 2.1606056479627276E-24
最差值 8.28885463444239E-18
平均值 1.5379045385036046E-18

这图像和结果跟实验一的不是一样的吗?这说明从实验二中得出的猜想是错误的。


  从图像中可以看出,虽然初始化时,群体集中在右下角,但随着算法的迭代,群体将迅速扩散到整个解空间中,在逐渐的收敛到原点且收敛速度很快。故猜想:当最优解在原点附近时,灰狼算法将会得到非常好的结果
  下面将目标函数的解空间搬离原点,看看灰狼算法的效果
实验四.f(x1,x2)=(x1-a)^2+(x2-b)^2,a=b=75,初始种群取值范围为(50,100),解空间范围同样为(50,100)

问题维度(维度) 2
总群数量(种群数) 20
搜索次数(最大迭代次数) 100
A Rand(-a,a),a=2->0
C Rand{0,2}
取值范围 (50,100)
实验次数 10
最优值 0.002612674971178293
最差值 0.5531163122132745
平均值 0.17749064798407285

从图像和结果上看,都和实验二非常相似,当解在解空间的中心时但不在原点时,算法的结果将差一些。
  为什么会这样呢?从算法的流程上看,灰狼算法的各个行为都是关于头狼对称的,当最优解在原点且头狼在附近时,公式(1)将变为如下:


  通过公式(2)计算其中心在原点附近很大(其数学期望为原点)。
  单独看灰狼个体的移动过程没有任何问题,但是总体上看则产生了微弱的向原点靠近的趋势,所以当解在原点时,算法的结果会异常的好。
  个人认为这并没有什么问题,只是在做对比试验时应避免将待求函数的解放在原点即可。
  迭代过程中,由于A的值由2线性递减至0,在算法的前半段A>1,个体将会进行全局搜索,而在后半段进行局部搜索,所以群体会在一开始时扩散到整个解空间,再慢慢聚拢到群体中心附近。
  从图像中可以看出,灰狼算法是一个没有“贪心”的算法,所有的个体都在不停的移动,这样算法的全局搜索能力会更强,精度稍差。下面试着为3只头狼添加“贪心算法”:即这三只头狼在找到优于当前的位置时才进行移动。

实验五. f(x_1,x2)=(x_1-a)^2+(x_2-b)^2,a=b=75,三只头狼添加贪心算法。

问题维度(维度) 2
总群数量(种群数) 20
搜索次数(最大迭代次数) 100
A Rand(-a,a),a=2->0
C Rand{0,2}
取值范围 (50,100)
实验次数 10
最优值 0.02060156741278336
最差值 0.27945550433647137
平均值 0.10352694023379161

从图像可以看出中心的三个点移动的频率要比其他点的移动频率低。从结果上可以看出其结果相对稳定了不少,不过差距非常的小,几乎可以认为是运气好所导致。如果所有的个体都添加贪心算法呢?显然,算法的全局搜索能力将进一步减弱,并且更容易向群体中心收敛,这并不是一个好的操作。

实验六. f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=75,
在实验五的基础上为狼群添加一个统一的步长,即每只狼每次向着目标狼移动的距离不能大于其步长,将其最大步长设为1,看看效果。

问题维度(维度) 2
总群数量(种群数) 20
搜索次数(最大迭代次数) 100
A Rand(-a,a),a=2->0
C Rand{0,2}
StepMax(最大步长) 1
取值范围 (50,100)
实验次数 10

从图像可以看出,受到步长的约束每只狼的移动距离较小,在结束时还没有收敛,其搜索能力较强但收敛速度过慢且极易陷入局部最优。现在将最大步长设置为10(1/10解空间范围)使其搜索能力和收敛速度相对平衡,在看看效果。

最优值 1.7013036590205155E-4
最差值 0.21432062721204184
平均值 0.09147526762644856

从图像可以看出,算法的收敛速度快了不少,但从结果可知,相较于实验五,算法的提升并不太大。
  不过这个图像有一种似曾相识的感觉,与萤火虫算法(FireFly Algorithm)差不多,仔细对比这两个算法可以发现,灰狼算法相当于萤火虫算法的一个简化。实验六种对灰狼算法添加步长的修改,让其离萤火虫算法更近了一步。

实验七. f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=75,
在实验六的基础上让最大步长随着迭代次数增加递减。

问题维度(维度) 2
总群数量(种群数) 20
搜索次数(最大迭代次数) 100
A Rand(-a,a),a=2->0
C Rand{0,2}
StepMax(最大步长) 20->0
取值范围 (50,100)
实验次数 10
最优值 5.15374332251629E-5
最差值 0.13904018569004928
平均值 0.04869044113468185

从实验七的图像可以看出,种群的收敛速度好像快了那么一点,结果也变好了不少。但是和改进后的萤火虫算法相比仍然有一定的差距。
  灰狼算法在全局搜索和局部搜索上的平衡已经比较好了,尝试过对其进行改进,但是修改使搜索能力更强时,对于局部最优的函数求解效果很差,反之结果的精度较低,总体而言修改后的算法与原算法相差无几。

灰狼算法是根据灰狼群体的捕猎行动而提出的优化算法,其算法流程和步骤非常简单,数学模型也非常的优美。灰狼算法由于没有贪心算法,使得其有着较强的全局搜索能力同时参数A也控制了算法的局部搜索范围,算法的全局搜索能力和局部搜索能力比较平衡。
从算法的优化图像可以看出,灰狼算法和萤火虫算法非常的相似。可以认为,灰狼算法是对萤火虫算法的一种改进。萤火虫算法向着由于自己的个体飞行,而灰狼算法则的条件更为苛刻,向着群体前三强前进,萤火虫算法通过步长控制搜索范围,而灰狼算法则直接定义搜索范围参数A,并令A线性递减。
灰狼算法的结构简单,但也不容易改进,数次改进后只是改变了全局搜索能力和局部搜索能力的比例,综合能力并没有太大变化。
由于原点对于灰狼算法有着隐隐的吸引力,当测试函数目标值在原点时,其结果会异常的好。因此,灰狼算法的实际效果没有论文中的那么好,但也不差,算是一个中规中矩的优化算法。
参考文献
Mirjalili S , Mirjalili S M , Lewis A . Grey Wolf Optimizer[J]. Advances in Engineering Software, 2014, 69:46-61. 提取码:wpff

以下指标纯属个人yy,仅供参考

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

目录
上一篇 优化算法笔记(十七)万有引力算法
下一篇 优化算法笔记(十九)头脑风暴算法

优化算法matlab实现(十八)灰狼算法matlab实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容