【智能算法】灰狼算法(GWO)原理及实现

在这里插入图片描述


1.背景

2014年,Mirjalil等人受到灰狼狩猎行为启发,提出了灰狼算法(Grey Wolf Optimization, GWO)。

2.算法原理

2.1算法思想

GWO模仿了灰狼群的捕食策略,以狼群追踪、包围、追捕和攻击猎物为目标,以实现最优搜索。α、β、δ、w分别为最优解,次优解,候选解。
在这里插入图片描述

在这里插入图片描述

2.2算法过程

灰狼在狩猎过程中包围猎物,包围行为表述为:
D = ∣ C X P ( t ) − X ( t ) ∣ X ( t + 1 ) = X P ( t ) − A D (1) \begin{aligned}\mathbf{D}&=|\mathbf{C}\mathbf{X}_P(t)-\mathbf{X}(t)\mid\\{X}(t+1)&=\boldsymbol{X}_P(t)-\boldsymbol{A}\boldsymbol{D}\end{aligned}\tag{1} DX(t+1)=CXP(t)X(t)=XP(t)AD(1)
其中,t为当前迭代次数;A 和C 均为系数向量;XP(t)为猎物的位置向量;X(t)为当前灰狼的位置向量;D 为当前灰狼与猎物的距离;X(t+1)为灰狼位置的更新。
系数向量A 和C :
A = 2 a r 1 − a C = 2 r 2 (2) \begin{aligned}A&=2a\boldsymbol{r}_1-a\\C&=2\boldsymbol{r}_2\end{aligned}\tag{2} AC=2ar1a=2r2(2)
a为影响A 变化的收敛因子:
a = 2 ( 1 − t t max ⁡ ) (3) a=2\bigg(1-\frac t{t_{\max}}\bigg)\tag{3} a=2(1tmaxt)(3)
在狩猎过程中,利用α狼、β狼和δ 狼的不同位置来预估猎物的位置:
{ D α = ∣ C 1 X α − X ∣ D β = ∣ C 2 X β − X ∣ D δ = ∣ C 3 X δ − X ∣ (4) \begin{cases}D_\alpha=|C_1X_\alpha-X|\\D_\beta=|C_2X_\beta-X|\\D_\delta=|C_3X_\delta-X|&\end{cases}\tag{4} Dα=C1XαXDβ=C2XβXDδ=C3XδX(4)
其中,Dα、Dβ 和Dδ 分别为当前灰狼趋向于α、β、δ狼之间的近似距离。
每只灰狼位置更新:
{ X 1 = X α − A 1 D α X 2 = X β − A 2 D β X 3 = X δ − A 3 D δ (5) \begin{cases}\boldsymbol{X}_1=\boldsymbol{X}_\alpha-\boldsymbol{A}_1\boldsymbol{D}_\alpha\\\boldsymbol{X}_2=\boldsymbol{X}_\beta-\boldsymbol{A}_2\boldsymbol{D}_\beta\\\boldsymbol{X}_3=\boldsymbol{X}_\delta-\boldsymbol{A}_3\boldsymbol{D}_\delta\end{cases}\tag{5} X1=XαA1DαX2=XβA2DβX3=XδA3Dδ(5)
X ( t + 1 ) = X 1 + X 2 + X 3 3 (6) X(t+1)=\frac{X_1+X_2+X_3}3\tag{6} X(t+1)=3X1+X2+X3(6)
其中,Xα、Xβ、Xδ 分别为α、β、δ狼的当前位置;X1、X2、X3 分别为ω狼向α、β、δ狼的前进步长和方向,X(t+1)为ω狼的最后位置。

伪代码
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Mirjalili S, Mirjalili S M, Lewis A. Grey wolf optimizer[J]. Advances in engineering software, 2014, 69: 46-61.

### 灰狼优化算法简介 灰狼优化(Grey Wolf Optimizer, GWO)是一种基于群体智能的元启发式优化方法,模拟了灰狼的社会层次结构及其捕猎行为来解决复杂的全局最优化问题[^1]。 #### 社会等级与角色分配 在自然界中,灰狼群体会形成严格的社会秩序。通常分为四个主要级别:α、β、δ 和 ω。其中 α 是领导者;β 负责协助决策并传递信息给其他成员;δ 则处于中间位置,在必要时可以填补 β 的空缺或者挑战低级别的个体成为新的领导层的一部分;ω 表现为服从地位最低的一类成年狼,负责执行指令以及参与集体活动。 #### 捕食机制建模 该算法通过三个理想化假设描述了灰狼如何围攻猎物的过程: - **包围**:所有候选解都会逐渐靠近最优解。 - **追逐**:随着迭代次数增加,种群中的个体不断调整自己相对于当前最好位置的方向和距离。 - **攻击**:当达到一定条件后,整个族群共同向目标发起最后冲刺完成捕捉动作。 这些过程被转化为一系列数学表达式用于指导搜索方向,并最终收敛于全局极值点附近。 ```python import numpy as np from sklearn.datasets import make_classification from matplotlib import pyplot as plt def gwo(objective_func, lb, ub, dim, search_agents_no, max_iter): alpha_pos = beta_pos = delta_pos = np.zeros(dim) alpha_score = beta_score = delta_score = float('inf') positions = np.random.uniform(lb, ub, (search_agents_no, dim)) convergence_curve = [] t = 0 while t < max_iter: for i in range(search_agents_no): fitness = objective_func(positions[i]) if fitness < alpha_score: delta_score = beta_score delta_pos = beta_pos.copy() beta_score = alpha_score beta_pos = alpha_pos.copy() alpha_score = fitness alpha_pos = positions[i].copy() elif fitness < beta_score and fitness >= alpha_score: delta_score = beta_score delta_pos = beta_pos.copy() beta_score = fitness beta_pos = positions[i].copy() elif fitness < delta_score and fitness >= beta_score: delta_score = fitness delta_pos = positions[i].copy() a = 2 - t * ((2) / max_iter) for i in range(search_agents_no): r1 = np.random.rand(dim) r2 = np.random.rand(dim) A1 = 2*a*r1-a; C1=2*r2; D_alpha=np.abs(C1*alpha_pos-positions[i]) X1=alpha_pos-A1*D_alpha r1 = np.random.rand(dim) r2 = np.random.rand(dim) A2 = 2*a*r1-a; C2=2*r2; D_beta=np.abs(C2*beta_pos-positions[i]) X2=beta_pos-A2*D_beta r1 = np.random.rand(dim) r2 = np.random.rand(dim) A3 = 2*a*r1-a; C3=2*r2; D_delta=np.abs(C3*delta_pos-positions[i]) X3=delta_pos-A3*D_delta positions[i]=(X1+X2+X3)/3 convergence_curve.append(alpha_score) t += 1 return alpha_pos, alpha_score, convergence_curve ``` 此代码片段展示了基本框架下的灰狼优化器实现方式,可用于求解连续空间内的单目标最小化问题。用户可以根据具体应用场景修改适应度函数 `objective_func` 来适配不同的实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小O的算法实验室

谢谢大佬的肯定!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值