灰狼优化算法的理解和应用
一、背景介绍
灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。该算法受到了灰狼捕食猎物活动的启发而开发的一种优化搜索方法,它具有较强的收敛性能、参数少、易实现等特点。近年来受到了学者的广泛关注,它己被成功地应用到了车间调度、参数优化、图像分类等领域中。
二、算法原理
狼群中有α、β、γ三只狼做头狼,其中α是狼王,β、γ分别排第二、第三,β、γ都要听α的,γ要听β的。这三匹狼指导者其他的狼寻找猎物。狼群寻找猎物的过程就是我们寻找最优解的过程。
GWO具体优化过程包含了社会等级分层、跟踪、包围和攻击猎物和寻找猎物。
但其核心行为只有捕猎。
为了模拟灰狼的搜索行为,假设α、β、γ具有较强识别潜在猎物的能力,因此,在每次迭代过程中,保留当前种群中最好的三只狼(α、β、γ),然后根据他们的位置信息来更新其他搜索代理的位置。

三、构建算法数学模型
1)社会等级分层
GWO的优化过程主要有每代种群中的最好三匹狼(具体构建时表示为三个最好的解)来指导完成。
2)包围猎物
灰狼捜索猎物时会逐渐地接近猎物并包围它,该行为的数学模型如下:


3)狩猎行为的数学模型


4)攻击猎物
5)寻找猎物
四、Python实现GWO
import random
import numpy
def GWO(objf, lb, ub, dim, SearchAgents_no, Max_iter):
# 初始化 alpha, beta, and delta_pos
Alpha_pos = numpy.zeros(dim) # 位置.形成30的列表
Alpha_score = float("inf") # 这个是表示“正负无穷”,所有数都比 +inf 小;正无穷:float("inf"); 负无穷:float("-inf")
Beta_pos = numpy.zeros(dim)
Beta_score = float("inf")
Delta_pos = numpy.zeros(dim)
Delta_score = float("inf") # float() 函数用于将整数和字符串转换成浮点数。
# list列表类型
if not isinstance(lb, list): # 作用:来判断一个对象是否是一个已知的类型。 其第一个参数(object)为对象,第二个参数(type)为类型名,若对象的类型与参数二的类型相同则返回True
lb = [lb] * dim # 生成[100,100,.....100]30个
if not isinstance(ub, list):
ub


9698

被折叠的 条评论
为什么被折叠?



