首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【启发式算法】狼群算法(Wolf Pack Algorithm, WPA)算法详细介绍(Python)

【启发式算法】狼群算法(Wolf Pack Algorithm, WPA)算法详细介绍(Python)

作者头像
不去幼儿园
发布2025-11-01 08:11:18
发布2025-11-01 08:11:18
5000
举报
文章被收录于专栏:强化学习专栏强化学习专栏
运行总次数:0

📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在👉强化学习专栏: 【启发式算法】(12)---《狼群算法(Wolf Pack Algorithm, WPA)算法详细介绍》

狼群算法(Wolf Pack Algorithm, WPA)算法详细介绍

1.算法绪论

随着仿真、金融、能源、航天等领域对优化模型精度要求的不断提高,决策变量维度迅速膨胀,传统梯度类方法面临“维数灾难”与“局部陷阱”双重瓶颈。近二十年来,群体智能(Swarm Intelligence)以无梯度、高并行、鲁棒性强等优势异军突起,其中粒子群(PSO)、蚁群(ACO)、人工鱼群(AFSA)等算法已被广泛引用,但在 100 维以上的多峰问题中仍易出现早熟收敛。

2013 年,吴虎胜等受狼群捕食行为启发,在《系统工程与电子技术》提出狼群算法(Wolf Pack Algorithm, WPA)。该算法通过抽象“游走—召唤—围攻”三层协作机制,并引入“胜者为王”的头狼更新规则与“强者生存”的种群淘汰策略,在 15 座国际通用测试函数、最高 200 维场景下取得显著优于 PSO、AFSA、GA 的综合表现,为高维复杂优化提供了新的可行范式。


2.算法理解

想象你是一只狼。 冬天到了,雪原上食物稀缺,你和同伴必须合作找到那只肥美的鹿。你们不会一拥而上,而是分工明确:

  1. 几只“探狼”先出去闻味道,谁闻到最浓的血腥味,谁就“嗷呜”一声。
  2. 头狼收到信号,立刻“嚎叫”召集“猛狼”狂奔过来。
  3. 大家围成一圈,步步逼近,最终一起把鹿放倒。
  4. 分肉时,谁功劳大谁先吃,弱狼可能饿肚子——但整个族群越来越强。

把这套“狼群战术”写成数学,就是 2013 年吴虎胜等人在《系统工程与电子技术》提出的 狼群算法(Wolf Pack Algorithm, WPA)


3.算法流程

WPA算法分简单可以分5 步走

初始化 → 探狼游走 → 猛狼奔袭 → 合围攻击 → 强者生存(淘汰弱狼)

生物角色

对应解空间里的“个体”

数学意义

功能描述

头狼

当前最优解

全局最优候选

保存当前最佳决策向量,引导群体搜索方向

探狼

除头狼外最好的 S_num 匹狼

局部搜索,防止漏掉好解

在解空间边缘执行精细探测,负责“广域勘探”

猛狼

被头狼召唤的其余狼

快速向优解区域聚集

响应头狼召唤,执行“区域开采”

猎物分配

目标函数 f(x)

越“香”→函数值越大(假设求 max)

按贡献度优先分配资源,弱狼被淘汰以维持种群多样性


4.数学模型

4.1 符号体系
  • 搜索空间 Ω ⊂ ℝᴰ,第 i 匹狼状态 xᵢ = (xᵢ¹,…,xᵢᴰ)
  • 目标函数(最大化)(x)→ ℝ,称为“气味浓度”
  • 种群规模 N,最大迭代 k_max
  • 步长因子 S、距离判定因子 ω、更新比例因子 β
4.2 三大智能行为
  1. 游走行为(Scouting) 探狼集合大小 S_num ∈ [N/(α+1), N/α]。每匹探狼在 h 个方向试探: xᵢᵈᵖ = xᵢᵈ + sin(2πp/h) · step_r , p=1,…,h 若任一方向气味浓度高于头狼,则立即替换头狼并转入召唤阶段;否则继续游走直至达到最大游走次数 T_max。
  2. 召唤行为(Summoning) 头狼通过“嚎叫”广播位置 g;猛狼以较大步长 step_b 奔袭: xᵢ(k+1) = xᵢ(k) + step_b · (g(k) − xᵢ(k)) / ‖g(k) − xᵢ(k)‖₂ 奔袭途中若发现更优解,即行“夺权”。当与头狼距离小于阈值 d_near 时转入围攻。 阈值估算: d_near = (1/Dω) · Σ_{d=1}^{D}(max_d − min_d)
  3. 围攻行为(Beleaguering) 将头狼位置视为猎物质心,实施多向压缩: xᵢ(k+1) = xᵢ(k) + λ · step_c · (g(k) − xᵢ(k)) λ∼U(−1,1) 保证各向同性搜索。若新位置气味提升则接受,否则保持原状态。
4.3 强者生存机制(Population Renewal)

每代淘汰适应度最差的 R = uniform[N/(2β), N/β] 匹狼,并随机生成等量新个体,以维持多样性并防止早熟。


5.收敛性分析

引理 1 WPA 种群序列 {Q_k} 为有限齐次马尔可夫链。 引理 2 该链不可约、非周期且正常返,故为遍历链。 引理 3 若进化算法满足“任意状态可达”且“种群单调不劣化”,则以概率 1 收敛至全局最优。 定理 WPA 满足上述两条件,因此具有概率 1 全局收敛性。

论文用马尔可夫链证明: 狼群状态序列是“有限、齐次、遍历”的,而且单调不劣化,所以 WPA 以概率 1 收敛到全局最优。 (非数学专业读者可直接记结论:它理论上不会“集体犯傻”。)


6.实验亮点

实验测试集设计:

覆盖 2–200 维、单峰/多峰、可分/不可分共 15 个经典函数,例如 Sphere、Rastrigin、Ackley、Quadric 等。

对比算法与评价指标:
  • PSO(标准版)、AFSA、GA( Sheffield 工具箱)
  • 指标:最优值、最差值、均值、标准差、成功率(|f*−f_opt|/|f_opt|<1e−3)、平均耗时
  • 独立运行 100 次,种群规模统一 50,最大迭代 2000

函数特色

例子

维度

PSO

GA

FSA

WPA

低维单峰

Matyas

2

30 维单峰

Sphere

30

偶尔失效

失效

失效

100% 成功率

200 维多峰

Ackley

200

误差 2.0+

误差 18+

误差 20+

误差 ≈ 0

耗时

中等

最慢

比 PSO 还快一丢丢

结论: 维数越高、峰越多,WPA 越香!

  • 单次迭代时间复杂度 O(N·D·h),其中 h 为探狼试探方向数。
  • 实验平台:Windows XP、2 GB 内存、MATLAB R2008a。
  • 在 30 维 Sphere 函数上,WPA 平均耗时 0.75 s,低于 GA(26.7 s)与 AFSA(67.0 s),与 PSO(2.54 s)相比亦有优势

[Python] WPA算法实现

代码语言:javascript
代码运行次数:0
运行
复制
"""《WPA算法》
    时间:2024.10.29
    作者:不去幼儿园
"""
import numpy as np

def WPA(f, N=50, D=10, k_max=500, alpha=4, beta=6, S=1000, w=500):
    # 1. 初始化
    X = np.random.uniform(low, high, (N, D))
    Y = np.array([f(x) for x in X])
    g = X[np.argmax(Y)].copy()          # 头狼
    for k in range(k_max):
        # 2. 探狼游走
        S_num = np.random.randint(N//(alpha+1), N//alpha)
        for i in np.argsort(-Y)[:S_num]:
            for _ in range(T_max):
                directions = random_directions()
                x_try = X[i] + step_r * directions
                y_try = f(x_try)
                if y_try > Y[i]:
                    X[i], Y[i] = x_try, y_try
                    if y_try > f(g): g = x_try.copy()
                    break
        # 3. 猛狼奔袭 + 4. 围攻
        M_num = N - S_num - 1
        for i in np.argsort(-Y)[S_num+1:]:
            while distance(X[i], g) > d_near:
                X[i] += step_b * (g - X[i]) / distance(X[i], g)
                Y[i] = f(X[i])
                if Y[i] > f(g): g = X[i].copy()
            # 围攻
            x_att = X[i] + step_c * (2*np.random.rand(D)-1)
            if f(x_att) > Y[i]:
                X[i], Y[i] = x_att, f(x_att)
        # 5. 强者生存
        R = np.random.randint(N//(2*beta), N//beta)
        worst = np.argsort(Y)[:R]
        X[worst] = np.random.uniform(low, high, (R, D))
        Y[worst] = [f(x) for x in X[worst]]
    return g, f(g)

7.超参数(实战经验)

  1. 距离判定因子 ω 控制“奔袭→围攻”切换。实验表明 ω∈[200,1000] 时算法稳定;ω>1200 导致切换过迟,精细搜索不足,成功率下降。
  2. 步长因子 S 决定搜索粒度。S∈[200,1200] 可在收敛精度与迭代次数之间取得平衡;S>1400 步长过小,探索效率降低。

值得注意的是,α 与 β 在限定区间内随机取值即可,对性能不敏感,显著降低了调参难度。

参数

作用

推荐范围

过大后果

过小后果

距离判定因子 ω

控制猛狼何时转围攻

200–1000

很难合围,迭代暴涨

合围太早,粗粗糙糙

步长因子 S

控制精细程度

200–1200

步长太小,跑不动

步长大,漏最优

WPA 的隐藏优点:α、β 在区间内随机取即可,对最终成绩不敏感,手残党友好。


[Notice] 注意事项

什么时候用 WPA?

  1. 目标函数维数高(>50 维)。
  2. landscape 崎岖,大量局部极值
  3. 传统 PSO/GA 容易早熟,成功率低。
  4. 你愿意牺牲一点点代码复杂度,换取更高的成功率
代码语言:javascript
代码运行次数:0
运行
复制
​# 环境配置
Python                  3.11.5
torch                   2.1.0
torchvision             0.16.0
gym                     0.26.2

8.局限性

现存局限:

  • 算子较多,工程实现相对复杂
  • 理论分析目前仍局限于概率收敛,缺乏有限时间收敛速率估计
  • 对于超高维(>1000 维)或动态优化问题,需进一步与分布式、并行计算框架结合

9.总结

狼群算法通过“游走—召唤—围攻”三层协作以及“胜者为王、强者生存”的演化机制,在全局勘探与局部开采之间实现了动态平衡。理论分析与大量实验共同表明,WPA 对高维、多峰复杂函数具有显著的求解精度、成功率和鲁棒性优势

狼群算法 =“探狼到处闻 + 猛狼听嚎冲 + 合围精细搜 + 弱狼被淘汰”。 把狼的生存智慧翻译成代码,就能在 200 维山峰里找到最低的那块洼地!

参考文献

[1] 吴虎胜, 张凤鸣, 吴庐山. 一种新的群体智能算法——狼群算法[J]. 系统工程与电子技术, 2013, 35(11): 2430-2438. [2] Kennedy J, Eberhart R. Particle swarm optimization[C]//IEEE International Conference on Neural Networks. 1995: 1942-1948. [3] Li X L, Shao Z J, Qian J X. An optimizing method based on autonomous animats: fish swarm algorithm[J]. 系统工程理论与实践, 2002, 22(11): 32-38. [4] Srinivas M, Patnaik L M. Genetic algorithms: a survey[J]. Computer, 1994, 27(6): 17-26.

更多启发式算法文章,请前往:【启发式算法】专栏


博客都是给自己看的笔记,如有误导深表抱歉。文章若有不当和不正确之处,还望理解与指出。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请联系博主删除。如有错误、疑问和侵权,欢迎评论留言联系作者,或者添加VX:Rainbook_2,联系作者。✨

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 狼群算法(Wolf Pack Algorithm, WPA)算法详细介绍
    • 1.算法绪论
    • 2.算法理解
    • 3.算法流程
      • WPA算法分简单可以分5 步走
    • 4.数学模型
    • 5.收敛性分析
    • 6.实验亮点
    • [Python] WPA算法实现
    • 7.超参数(实战经验)
    • [Notice] 注意事项
    • 8.局限性
    • 9.总结
      • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档