正在加载中...

展开本页目录
算法教程GWO-灰狼优化

GWO-灰狼优化

No.190 · 在线教程

灰狼优化算法(Grey Wolf Optimizer, GWO)是一类模拟狼群等级捕猎行为的群智能方法。本项目的核心实现位于 GWO-灰狼优化/core/gwo.py,界面层位于 ui/uploadwidget.py,结果导出位于 core/exporter.py。项目同时支持…

GWO-灰狼优化

1. 方法概述

灰狼优化算法(Grey Wolf Optimizer, GWO)是一类模拟狼群等级捕猎行为的群智能方法。本项目的核心实现位于 GWO-灰狼优化/core/gwo.py,界面层位于 ui/upload_widget.py,结果导出位于 core/exporter.py。项目同时支持内置 \(F1\sim F13\) 基准函数和上传数据后的代理优化模式,但核心搜索过程仍是单次 GWO 迭代。

设第 \(i\) 只灰狼在第 \(t\) 轮的位置为

$$ \boldsymbol{x}_i^{(t)}=(x_{i1}^{(t)},x_{i2}^{(t)},\ldots,x_{id}^{(t)})^\top\in\Omega \tag{1} $$

项目求解的内部最小化问题可写为

$$ \min_{\boldsymbol{x}\in\Omega}\tilde f(\boldsymbol{x}) \tag{2} $$

其中 \(\tilde f\) 既可以是内置基准函数,也可以是上传数据训练得到的代理目标函数。

2. 问题定义与代理优化

在上传模式下,项目先从数值表格中抽取样本

$$ \mathcal{D}=\{(\boldsymbol{x}^{(n)},y^{(n)})\}_{n=1}^{N_s} \tag{3} $$

并使用 RandomForestRegressor(n_estimators=300) 建立代理模型

$$ \hat f(\boldsymbol{x})=\frac{1}{300}\sum_{b=1}^{300}T_b(\boldsymbol{x}) \tag{4} $$

各维搜索边界由样本特征列极值给出:

$$ l_j=\min_{1\le n\le N_s}x_j^{(n)},\qquad u_j=\max_{1\le n\le N_s}x_j^{(n)} \tag{5} $$

若用户选择最大化,则 SurrogateProblem.objective 会做符号翻转:

$$ \tilde f(\boldsymbol{x})= \begin{cases} \hat f(\boldsymbol{x}), & \text{min}\\ -\hat f(\boldsymbol{x}), & \text{max} \end{cases} \tag{6} $$

因此 core/gwo.py 始终按照最小化问题执行。

3. 核心数学模型

3.1 初始化与领导狼

项目按均匀分布初始化种群:

$$ \boldsymbol{x}_i^{(0)}=\boldsymbol{l}+\boldsymbol{r}_i\odot(\boldsymbol{u}-\boldsymbol{l}),\qquad \boldsymbol{r}_i\sim U(0,1)^d \tag{7} $$

每轮先计算适应度

$$ F_i^{(t)}=\tilde f(\boldsymbol{x}_i^{(t)}) \tag{8} $$

并按照适应度从小到大更新三只领导狼:

$$ \boldsymbol{x}_\alpha^{(t)},\boldsymbol{x}_\beta^{(t)},\boldsymbol{x}_\delta^{(t)} = \operatorname*{argsort}_{1\le i\le N}F_i^{(t)}[1:3] \tag{9} $$

其中 \(\alpha\)、\(\beta\)、\(\delta\) 分别对应项目代码中的 Alpha_posBeta_posDelta_pos

3.2 收缩因子与包围系数

第 \(t\) 轮的收缩因子按线性方式衰减:

$$ a^{(t)}=2-\frac{2t}{T} \tag{10} $$

对任一领导狼 \(k\in\{\alpha,\beta,\delta\}\),项目逐维生成

$$ \boldsymbol{A}_k^{(t)}=2a^{(t)}\boldsymbol{r}_{1,k}^{(t)}-a^{(t)},\qquad \boldsymbol{C}_k^{(t)}=2\boldsymbol{r}_{2,k}^{(t)} \tag{11} $$

其中 \(\boldsymbol{r}_{1,k}^{(t)},\boldsymbol{r}_{2,k}^{(t)}\sim U(0,1)^d\)。

3.3 三头狼引导更新

对第 \(i\) 只灰狼,先分别计算其到三只领导狼的包围距离

$$ \boldsymbol{D}_k^{(t)}= \left|\boldsymbol{C}_k^{(t)}\odot \boldsymbol{x}_k^{(t)}-\boldsymbol{x}_i^{(t)}\right|, \qquad k\in\{\alpha,\beta,\delta\} \tag{12} $$

再构造三组候选位置

$$ \boldsymbol{X}_k^{(t)}= \boldsymbol{x}_k^{(t)}-\boldsymbol{A}_k^{(t)}\odot \boldsymbol{D}_k^{(t)}, \qquad k\in\{\alpha,\beta,\delta\} \tag{13} $$

最终位置取三者均值:

$$ \boldsymbol{x}_i^{(t+1)}= \frac{\boldsymbol{X}_\alpha^{(t)}+\boldsymbol{X}_\beta^{(t)}+\boldsymbol{X}_\delta^{(t)}}{3} \tag{14} $$

这正对应 core/gwo.pyX1X2X3 的平均更新。

3.4 边界处理与收敛记录

在每轮适应度计算之前,项目对个体逐维截断:

$$ x_{ij}^{(t)}\leftarrow \min\!\big(\max(x_{ij}^{(t)},l_j),u_j\big) \tag{15} $$

并将当前最优值记录到收敛曲线

$$ g^{(t)}=F_\alpha^{(t)} \tag{16} $$

在导出阶段,项目进一步计算首末代改进量

$$ \Delta g=g^{(1)}-g^{(T)} \tag{17} $$

以及相对改进比例

$$ \rho=\frac{g^{(1)}-g^{(T)}}{g^{(1)}} \tag{18} $$

并写入 运行汇总 工作表。

4. 算法流程

结合 core/gwo.pyui/upload_widget.pycore/exporter.py,本项目的 GWO 流程为:

  1. 选择内置测试函数或上传数据代理优化模式。
  2. 若为上传模式,则自动识别目标列、特征列并训练随机森林代理模型。
  3. 按式(7)初始化狼群位置。
  4. 计算所有个体适应度并更新 \(\alpha\)、\(\beta\)、\(\delta\) 三只领导狼。
  5. 按式(10)至式(14)完成群体位置更新。
  6. 按式(15)进行边界截断,并记录式(16)的收敛曲线。
  7. 导出 Excel、收敛图、最优解柱状图,以及可复现实验脚本 repro_gwo.py

5. 关键参数说明

  • pop_size:灰狼种群规模 \(N\)。
  • iter:最大迭代次数 \(T\)。
  • dim:问题维度;上传模式下由特征列数量自动确定。
  • lbub:搜索边界;上传模式下由样本特征极值自动给出。
  • seed:随机种子,仅在复现实验脚本中显式使用。
  • objective_direction:上传代理优化时的目标方向,决定式(6)的符号。

6. 评价指标与输出结果解释

core/exporter.py 导出的真实工作表包括:

  • 参数:问题模式、函数名、种群规模、迭代次数、维度、随机种子等;
  • 边界设置:逐维上下界;
  • 运行汇总:首代适应度、末代适应度、最佳适应度、改进量与改进比例;
  • 收敛曲线:\(\{g^{(t)}\}_{t=1}^{T}\);
  • 最优解:最终最优位置向量;
  • 最佳适应度:单行 best_fitness 指标;
  • 图表清单:收敛曲线图与最优解柱状图路径;
  • 上传代理优化模式下额外导出 BoundsUploadedDataSurrogateMetrics

该实现当前仍以单次运行结果为主,不包含内置多次独立运行统计;上传模式下导出的 best_fitness 与收敛曲线已经恢复为原始目标方向。论文结果部分建议按“运行汇总最佳适应度 报告最优值、收敛曲线 描述迭代过程、最优解 列出最优位置向量”的顺序书写,其中最优目标值不应从 最优解 工作表中读取。若为上传代理模式,应同时报告 SurrogateMetrics,以说明代理模型训练质量。

7. 论文写作模板

可在论文方法部分表述为:

“本文采用灰狼优化算法对连续优化问题进行求解。算法在每轮迭代中首先根据当前群体适应度识别 Alpha、Beta 和 Delta 三只领导狼,然后构造三组基于包围机制的候选位置,并通过三者均值更新普通个体位置。为适配实际数据驱动场景,本文实现进一步支持基于随机森林代理模型的上传数据优化模式,即先由样本数据训练代理目标函数,再由 GWO 在样本边界内搜索最优解。”

7.1 结果部分补充模板

若需把实验结果直接写入论文结果部分,可进一步表述为:

“表X给出了算法在当前问题上的最优目标值、平均最优值和标准差(如有多次独立运行),图X展示了收敛曲线变化。结果表明,该算法在迭代前期能够快速逼近优势区域,并在后期逐步趋于稳定,最终获得最优解 \(\boldsymbol{x}^*\) 及其对应目标值 \(f(\boldsymbol{x}^*)\)。对于上传代理优化场景,结合代理模型误差指标可认为该最优结果具有一定的数据驱动解释性。”

7.2 写作替换提示

为便于直接落稿,正文撰写时可将结果文件中的字段替换为以下论文措辞:

  • best_fitness 或结果汇总表中的最优值,可写为“最优目标函数值”或“最优适应度值”;
  • BestSolutionBestPositionBest_Solution最优解 等工作表,可统一写为“最优决策变量组合 \(\boldsymbol{x}^*\)”;
  • Convergence收敛曲线 等图表,可统一写为“算法收敛曲线图”;
  • SurrogateMetrics 可写为“代理模型训练误差与拟合优度指标”,如 RMSE、MAE、\(R^2\)。

7.3 可直接替换的论文结果段落

若需进一步直接落稿,可按以下模板替换其中的表号、图号和数值:

“由表X可知,该算法在[问题名称]上的最优目标值为 [best_fitness]。若进行了多次独立运行,则其平均最优值与标准差分别为 [mean_best_fitness] 和 [std_best_fitness]。由图X所示收敛曲线可见,算法在迭代前期快速逼近优势区域,后期逐渐趋于平稳,表现出较好的收敛性。最终得到的最优决策变量组合为 \(\boldsymbol{x}^*=[x_1^*,x_2^*,\ldots,x_d^*]\)。若采用上传代理优化模式,则结合 RMSE、MAE 和 \(R^2\) 等代理误差指标,可认为该优化结果具有一定的数据驱动可信度。”

8. 实现说明与注意事项

  • 本实现适用于连续变量单目标优化。
  • 项目核心搜索器 GWOOptimizer 是标准单次运行版本,不包含多次独立运行统计。
  • 上传模式下优化的是随机森林代理模型,得到的是代理预测最优解,而非真实系统的直接解析解。
  • 导出结果中的 improvement_ratio 基于首代和末代收敛值计算,当首代值接近零时解释需谨慎。

9. 单篇终审补充

9.1 图题与表题对齐建议

  • 运行汇总 表可写为:表X GWO 最优值与改进比例汇总。
  • 收敛曲线 表可写为:表X GWO 单次运行收敛轨迹。
  • 最优解 表可写为:表X GWO 求得的最优解向量。
  • 最佳适应度 表可写为:表X GWO 最终最优目标值。
  • 图表清单 中收敛图建议写为:图X 灰狼优化算法收敛曲线。

9.2 终审说明

  • 当前实现是单次运行版,正文不应写“均值收敛曲线”或“跨运行标准差”。
  • 最优解 只保存向量,最优目标值应从 运行汇总最佳适应度 读取。

9.3 全量强化补充

本次全量强化绑定的真实上传验证目录为 具体的算法3/优化与多目标/GWO-灰狼优化/results/manual_upload_verify_20260328/gwo_sample_upload_real。主结果文件可采用 GWO-灰狼优化_结果_20260328_200205.xlsx,其实际工作表为 参数边界设置运行汇总收敛曲线最优解最佳适应度图表清单BoundsUploadedDataSurrogateMetrics

当前真实图文件位于 plots/ 子目录,包括 convergence_curve.pngbest_solution.png。论文正文可分别写为“灰狼优化收敛曲线”和“灰狼优化最优解分量图”。

复现脚本为 repro_gwo.py,输入口径为 INPUT_FILE = Path('repro_inputs/gwo_sample.xlsx'),并在结果参数中明确写入 problem_mode = 'upload_surrogate'。脚本还会导出 uploaded_problemuploaded_data_preview 元数据,因此这篇文档在论文附录中应写成“上传代理 GWO 复现 + 上传数据元信息导出”的真实口径。

10. 软件实现核查补充(2026-07)

本篇对应的软件源码目录是 具体的算法3/优化与多目标/GWO-灰狼优化。软件实现支持优化模式和上传数据代理优化模式;上传模式读取数值表后生成 UploadedProblemUploadedDataSurrogateMetrics。文档中关于 alpha、beta、delta 三类头狼以及包围、追捕、攻击猎物的公式可以保留,但要说明当前软件以单目标连续优化和工程导出为准。

当前较新的代表性目录为 results/GWO-灰狼优化分析结果_20260517_104949-优化模式results/GWO-灰狼优化分析结果_20260517_105000-上传数据代理优化。主工作簿在优化模式下包含 结果说明字段说明SummaryProblemGWO_ParamsBoundsRun_SummaryHistory_MeanHistory_AllBest_SolutionCharts;上传模式额外包含 UploadedProblemUploadedDataSurrogateMetrics。这与旧文中单次运行中文表结构不同,当前较新版本已经按统一多运行/历史表格式导出。

当前图表位于 charts/ 下,稳定输出包括 GWO_convergence_时间戳.pngGWO_best_solution_时间戳.png。复现代码位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式输入副本为 repro_inputs/gwo_sample.xlsx,复现结果进入 repro_outputs/。如果用户使用上传代理结果,正文必须同时报告 SurrogateMetrics,不能只把灰狼收敛曲线当成真实解析目标函数的最优轨迹。