灰狼优化算法(GWO)文章复现:从理论到实践
灰狼优化算法GWO文章复现 复现内容包括:改进算法实现、23个基准测试函数、改进策略画图分析、与GWO等对比等。 代码基本上每一步都有注释非常易懂代码质量极高便于新手学习和理解。嘿各位小伙伴们今天来聊聊灰狼优化算法GWO文章的复现这可是个很有趣的话题尤其是对于想深入了解优化算法的新手们绝对是一次超有价值的学习之旅。一、改进算法实现灰狼优化算法模拟了灰狼群体的狩猎行为。在自然界中灰狼群体有着严格的等级制度分别是α、β、δ 和 ω 狼。α 狼是领导者负责决策β 狼辅助 α 狼δ 狼听从 α 和 β 的指挥ω 狼则是群体中地位最低的。下面咱来看下基础 GWO 算法的核心代码框架以 Python 为例import numpy as np # 目标函数这里以一个简单的单峰函数为例 def objective_function(x): return np.sum(x ** 2) # GWO 算法实现 def gwo(pop_size, dim, max_iter, lb, ub): # 初始化灰狼位置 wolves np.random.uniform(lb, ub, (pop_size, dim)) fitness np.array([objective_function(w) for w in wolves]) # 初始化最优解 alpha_wolf wolves[np.argmin(fitness)] alpha_fitness np.min(fitness) beta_wolf alpha_wolf.copy() beta_fitness alpha_fitness delta_wolf alpha_wolf.copy() delta_fitness alpha_fitness a 2 for t in range(max_iter): a 2 - t * (2 / max_iter) # 线性递减的收敛因子 for i in range(pop_size): r1 np.random.rand() r2 np.random.rand() A1 2 * a * r1 - a C1 2 * r2 D_alpha np.abs(C1 * alpha_wolf - wolves[i]) X1 alpha_wolf - A1 * D_alpha r1 np.random.rand() r2 np.random.rand() A2 2 * a * r1 - a C2 2 * r2 D_beta np.abs(C2 * beta_wolf - wolves[i]) X2 beta_wolf - A2 * D_beta r1 np.random.rand() r2 np.random.rand() A3 2 * a * r1 - a C3 2 * r2 D_delta np.abs(C3 * delta_wolf - wolves[i]) X3 delta_wolf - A3 * D_delta wolves[i] (X1 X2 X3) / 3 fitness np.array([objective_function(w) for w in wolves]) for i in range(pop_size): if fitness[i] alpha_fitness: alpha_fitness fitness[i] alpha_wolf wolves[i] elif fitness[i] beta_fitness: beta_fitness fitness[i] beta_wolf wolves[i] elif fitness[i] delta_fitness: delta_fitness fitness[i] delta_wolf wolves[i] return alpha_wolf, alpha_fitness在这段代码里objective_function定义了我们要优化的目标函数这里是一个简单的平方和函数。gwo函数则实现了 GWO 算法的主体。一开始随机初始化灰狼的位置然后在每次迭代中根据收敛因子a和随机数r1、r2来更新灰狼的位置不断向最优解靠近。灰狼优化算法GWO文章复现 复现内容包括:改进算法实现、23个基准测试函数、改进策略画图分析、与GWO等对比等。 代码基本上每一步都有注释非常易懂代码质量极高便于新手学习和理解。而改进算法可能会从多个方面入手比如改变收敛因子的更新方式或者引入新的机制避免算法陷入局部最优。假设我们对收敛因子进行非线性调整代码可能会这样改# 改进的 GWO 算法实现 def improved_gwo(pop_size, dim, max_iter, lb, ub): # 初始化灰狼位置 wolves np.random.uniform(lb, ub, (pop_size, dim)) fitness np.array([objective_function(w) for w in wolves]) # 初始化最优解 alpha_wolf wolves[np.argmin(fitness)] alpha_fitness np.min(fitness) beta_wolf alpha_wolf.copy() beta_fitness alpha_fitness delta_wolf alpha_wolf.copy() delta_fitness alpha_fitness for t in range(max_iter): a 2 * np.exp(-(4 * t / max_iter) ** 2) # 非线性收敛因子 for i in range(pop_size): r1 np.random.rand() r2 np.random.rand() A1 2 * a * r1 - a C1 2 * r2 D_alpha np.abs(C1 * alpha_wolf - wolves[i]) X1 alpha_wolf - A1 * D_alpha r1 np.random.rand() r2 np.random.rand() A2 2 * a * r1 - a C2 2 * r2 D_beta np.abs(C2 * beta_wolf - wolves[i]) X2 beta_wolf - A2 * D_beta r1 np.random.rand() r2 np.random.rand() A3 2 * a * r1 - a C3 2 * r2 D_delta np.abs(C3 * delta_wolf - wolves[i]) X3 delta_wolf - A3 * D_delta wolves[i] (X1 X2 X3) / 3 fitness np.array([objective_function(w) for w in wolves]) for i in range(pop_size): if fitness[i] alpha_fitness: alpha_fitness fitness[i] alpha_wolf wolves[i] elif fitness[i] beta_fitness: beta_fitness fitness[i] beta_wolf wolves[i] elif fitness[i] delta_fitness: delta_fitness fitness[i] delta_wolf wolves[i] return alpha_wolf, alpha_fitness这里我们把收敛因子a改成了一个非线性递减的形式这样可能会让算法在前期有更好的全局搜索能力后期有更好的局部搜索能力。二、23 个基准测试函数基准测试函数是检验优化算法性能的重要工具。这 23 个函数涵盖了单峰、多峰等不同特性的函数。以Sphere函数为例它是一个简单的单峰函数用于测试算法的基本收敛能力。def sphere(x): return np.sum(x ** 2)还有像Rastrigin函数这是一个典型的多峰函数具有许多局部最优解对算法跳出局部最优的能力是个挑战。def rastrigin(x): A 10 n len(x) return A * n np.sum(x ** 2 - A * np.cos(2 * np.pi * x))在实际复现中我们会把改进后的 GWO 算法应用到这些基准测试函数上通过记录每次运行的结果来评估算法在不同特性函数上的性能。三、改进策略画图分析画图分析能让我们更直观地看到改进策略的效果。我们可以绘制算法在每次迭代中的最优适应度值变化曲线。比如用matplotlib库来绘制改进前后 GWO 算法在Sphere函数上的收敛曲线。import matplotlib.pyplot as plt # 运行基础 GWO 算法 pop_size 50 dim 2 max_iter 100 lb -100 ub 100 alpha_wolf, alpha_fitness gwo(pop_size, dim, max_iter, lb, ub) gwo_fitness_trace [alpha_fitness] # 运行改进的 GWO 算法 alpha_wolf_improved, alpha_fitness_improved improved_gwo(pop_size, dim, max_iter, lb, ub) improved_gwo_fitness_trace [alpha_fitness_improved] for t in range(1, max_iter): alpha_wolf, alpha_fitness gwo(pop_size, dim, t, lb, ub) gwo_fitness_trace.append(alpha_fitness) alpha_wolf_improved, alpha_fitness_improved improved_gwo(pop_size, dim, t, lb, ub) improved_gwo_fitness_trace.append(alpha_fitness_improved) plt.plot(range(max_iter), gwo_fitness_trace, labelGWO) plt.plot(range(max_iter), improved_gwo_fitness_trace, labelImproved GWO) plt.xlabel(Iteration) plt.ylabel(Best Fitness) plt.title(Convergence Comparison on Sphere Function) plt.legend() plt.show()从这个图中我们可以清晰地看到改进后的 GWO 算法是否收敛得更快或者是否能达到更好的最优解。如果改进后的曲线下降得更快且最终的最优解更好那就说明我们的改进策略是有效的。四、与 GWO 等对比除了和自身改进前对比我们还会和其他优化算法进行对比比如粒子群优化算法PSO。# 粒子群优化算法PSO def pso(pop_size, dim, max_iter, lb, ub, w, c1, c2): particles np.random.uniform(lb, ub, (pop_size, dim)) velocities np.zeros((pop_size, dim)) pbest particles.copy() pbest_fitness np.array([objective_function(p) for p in particles]) gbest_index np.argmin(pbest_fitness) gbest pbest[gbest_index] gbest_fitness pbest_fitness[gbest_index] for t in range(max_iter): for i in range(pop_size): r1 np.random.rand(dim) r2 np.random.rand(dim) velocities[i] w * velocities[i] c1 * r1 * (pbest[i] - particles[i]) c2 * r2 * (gbest - particles[i]) particles[i] particles[i] velocities[i] particles[i] np.clip(particles[i], lb, ub) fitness np.array([objective_function(p) for p in particles]) for i in range(pop_size): if fitness[i] pbest_fitness[i]: pbest_fitness[i] fitness[i] pbest[i] particles[i] if pbest_fitness[i] gbest_fitness: gbest_fitness pbest_fitness[i] gbest pbest[i] return gbest, gbest_fitness然后我们把 GWO、改进后的 GWO 和 PSO 都应用到一系列基准测试函数上统计它们的最优解、平均解、收敛速度等指标进行全面对比。通过这样的对比能更清楚地看到改进后的 GWO 算法在性能上的优势和不足。好啦以上就是关于灰狼优化算法GWO文章复现的主要内容啦希望对大家理解和学习优化算法有所帮助大家可以自己动手实践下说不定还能想出更厉害的改进策略呢

相关新闻

探索MATLAB下冷热电气多能互补微能源网的稳健优化调度

探索MATLAB下冷热电气多能互补微能源网的稳健优化调度

MATLAB综合能源程序,对应文章《冷热电气多能互补的微能源网鲁绑优化调度》 针对综合能源系统,研究考虑碳排放的优化调度,建立风电光伏P2G燃气轮机等多能耦合元件的运行特性模型,电、热,冷,气多能稳态能流模…

2026/7/3 18:37:35 阅读更多 →
氢燃料电池Simulink仿真:探索温度与氧气压力的影响

氢燃料电池Simulink仿真:探索温度与氧气压力的影响

不同温度,不同氧气压力下的氢燃料电池simulink仿真模型 在清洁能源领域,氢燃料电池凭借其高效、环保等特性,正逐渐崭露头角。今天咱们就来聊聊如何搭建不同温度、不同氧气压力下的氢燃料电池Simulink仿真模型,这可对深入理解其性…

2026/7/4 3:42:28 阅读更多 →
三菱PLC 与组态王打造变频器恒压供水系统控制

三菱PLC 与组态王打造变频器恒压供水系统控制

三菱PLC和组态王组态变频器的恒压供水系统控制在工业自动化领域,恒压供水系统是保障稳定供水的关键技术。今天咱们就来聊聊如何用三菱 PLC 和组态王来实现变频器的恒压供水系统控制。 一、系统架构 恒压供水系统主要由水泵、变频器、压力传感器、三菱 PLC 和组态王软…

2026/7/6 12:39:54 阅读更多 →

最新新闻

WELearn网课助手:5个步骤彻底改变你的在线学习体验

WELearn网课助手:5个步骤彻底改变你的在线学习体验

WELearn网课助手:5个步骤彻底改变你的在线学习体验 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gitcode.com/g…

2026/7/7 9:00:25 阅读更多 →
逆向工程实战:用IDA与OllyDbg深度剖析熊猫烧香病毒

逆向工程实战:用IDA与OllyDbg深度剖析熊猫烧香病毒

1. 项目概述:一次对经典恶意代码的深度“解剖”十几年前,一个名为“熊猫烧香”的病毒席卷了国内互联网,其破坏力之强、传播之广,让它成为了中国网络安全史上一个标志性的事件。时至今日,它依然是安全研究、逆向工程入门…

2026/7/7 9:00:25 阅读更多 →
Elmer FEM终极指南:5个技巧让开源多物理场仿真变得简单

Elmer FEM终极指南:5个技巧让开源多物理场仿真变得简单

Elmer FEM终极指南:5个技巧让开源多物理场仿真变得简单 【免费下载链接】elmerfem Official git repository of Elmer FEM software 项目地址: https://gitcode.com/gh_mirrors/el/elmerfem Elmer FEM是一款功能强大的开源多物理场有限元仿真软件&#xff0c…

2026/7/7 8:58:25 阅读更多 →
惠普游戏本终极性能控制:用OmenSuperHub彻底告别官方臃肿软件

惠普游戏本终极性能控制:用OmenSuperHub彻底告别官方臃肿软件

惠普游戏本终极性能控制:用OmenSuperHub彻底告别官方臃肿软件 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还…

2026/7/7 8:58:25 阅读更多 →
Web安全必修课:从原理到实战,全面掌握XSS漏洞防御与修复

Web安全必修课:从原理到实战,全面掌握XSS漏洞防御与修复

1. 项目概述:为什么XSS漏洞是每个Web开发者的必修课如果你是一名Web开发者,或者正在管理一个网站,那么“XSS漏洞”这个词对你来说,绝对不应该陌生。它就像潜伏在代码里的幽灵,平时不声不响,一旦被利用&…

2026/7/7 8:56:25 阅读更多 →
Windows 10终极指南:PL-2303旧版芯片驱动完整安装解决方案

Windows 10终极指南:PL-2303旧版芯片驱动完整安装解决方案

Windows 10终极指南:PL-2303旧版芯片驱动完整安装解决方案 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 还在为Windows 10系统无法正常使用PL-2303串口设…

2026/7/7 8:54:24 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻