优化算法笔记|灰狼算法理解及Python实现

一、背景介绍

灰狼优化算法(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
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值