IGWO-改进灰狼优化
IGWO(Improved Grey Wolf Optimizer)是在标准 GWO 基础上加入 DLH(Dimension Learning-based Hunting)机制的改进算法。本项目的核心搜索器位于 IGWO-改进灰狼优化/core/igwo.py,界面线程在 ui…
IGWO-改进灰狼优化
1. 方法概述
IGWO(Improved Grey Wolf Optimizer)是在标准 GWO 基础上加入 DLH(Dimension Learning-based Hunting)机制的改进算法。本项目的核心搜索器位于 IGWO-改进灰狼优化/core/igwo.py,界面线程在 ui/upload_widget.py 中直接组织单次优化流程,结果由 utils/igwo_exporter.py 导出。因此,本实现重点不是多次重复运行,而是“标准 GWO 候选 + DLH 候选 + 个体历史最优选择”的单次复合更新。
设第 \(i\) 只狼在第 \(t\) 轮的位置为
$$ \boldsymbol{x}_i^{(t)}\in\Omega \tag{1} $$
项目求解的内部问题为
$$ \min_{\boldsymbol{x}\in\Omega}\tilde f(\boldsymbol{x}) \tag{2} $$
2. 问题定义与代理优化
上传模式下,项目先从数值文件构建样本集
$$ \mathcal{D}=\{(\boldsymbol{x}^{(n)},y^{(n)})\}_{n=1}^{N_s} \tag{3} $$
再训练随机森林代理模型
$$ \hat f(\boldsymbol{x})=\frac{1}{300}\sum_{b=1}^{300}T_b(\boldsymbol{x}) \tag{4} $$
若目标方向为最大化,则内部搜索目标写为
$$ \tilde f(\boldsymbol{x})= \begin{cases} \hat f(\boldsymbol{x}), & \text{min}\\ -\hat f(\boldsymbol{x}), & \text{max} \end{cases} \tag{5} $$
显示给用户的最优值与收敛曲线由 predict_actual 和 display_curve 再恢复为真实方向。
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{6} $$
并维护每只狼的个体历史最优
$$ \boldsymbol{p}_i^{(t)}=\operatorname*{arg\,min}_{0\le \tau\le t}\tilde f(\boldsymbol{x}_i^{(\tau)}) \tag{7} $$
当前群体中适应度最好的三只狼仍记为
$$ \boldsymbol{x}_\alpha^{(t)},\boldsymbol{x}_\beta^{(t)},\boldsymbol{x}_\delta^{(t)} \tag{8} $$
3.2 标准 GWO 候选
收缩因子仍按线性方式衰减:
$$ a^{(t)}=2-\frac{2t}{T} \tag{9} $$
对 \(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{10} $$
并按标准 GWO 方式构造候选
$$ \boldsymbol{X}_k^{(t)}= \boldsymbol{x}_k^{(t)}-\boldsymbol{A}_k^{(t)}\odot \left|\boldsymbol{C}_k^{(t)}\odot\boldsymbol{x}_k^{(t)}-\boldsymbol{x}_i^{(t)}\right| \tag{11} $$
于是第 \(i\) 只狼的 GWO 候选为
$$ \boldsymbol{x}_{i,\mathrm{gwo}}^{(t)}= \frac{\boldsymbol{X}_\alpha^{(t)}+\boldsymbol{X}_\beta^{(t)}+\boldsymbol{X}_\delta^{(t)}}{3} \tag{12} $$
3.3 DLH 维度学习候选
项目先定义当前个体的邻域半径
$$ R_i^{(t)}=\left\|\boldsymbol{x}_i^{(t)}-\boldsymbol{x}_{i,\mathrm{gwo}}^{(t)}\right\|_2 \tag{13} $$
再根据当前群体距离矩阵构造邻域集合
$$ \mathcal{N}_i^{(t)}= \left\{j:\left\|\boldsymbol{x}_j^{(t)}-\boldsymbol{x}_i^{(t)}\right\|_2\le R_i^{(t)}\right\} \tag{14} $$
若 \(\mathcal{N}_i^{(t)}\) 为空,则代码会退化为只包含个体自身。随后对每个维度 \(d\) 执行
$$ x_{i,\mathrm{dlh},d}^{(t)} = x_{i,d}^{(t)} +u_{i,d}^{(t)} \left(x_{n(i,d),d}^{(t)}-x_{w(i,d),d}^{(t)}\right) \tag{15} $$
其中 \(n(i,d)\) 从邻域集合中随机抽取,\(w(i,d)\) 从全体狼中随机抽取。
3.4 L-SHADE 式边界约束
与简单截断不同,项目对越界维度采用“当前位置与边界中点”回拉策略。若某一维低于下界,则
$$ x_{ij}\leftarrow \frac{x_{ij}^{\mathrm{old}}+l_j}{2} \tag{16} $$
若高于上界,则
$$ x_{ij}\leftarrow \frac{x_{ij}^{\mathrm{old}}+u_j}{2} \tag{17} $$
这一边界处理由 _bound_constraint() 实现,是本项目相较标准截断更明显的代码特征。
3.5 选择与历史最优同步
对每个个体,项目先比较两类候选的适应度,取较优者:
$$ \boldsymbol{x}_{i,\mathrm{tmp}}^{(t)}= \operatorname*{arg\,min}\Big\{ \tilde f(\boldsymbol{x}_{i,\mathrm{gwo}}^{(t)}), \tilde f(\boldsymbol{x}_{i,\mathrm{dlh}}^{(t)}) \Big\} \tag{18} $$
再与个体历史最优比较,若更优则更新:
$$ \boldsymbol{p}_i^{(t+1)}= \begin{cases} \boldsymbol{x}_{i,\mathrm{tmp}}^{(t)}, & \tilde f(\boldsymbol{x}_{i,\mathrm{tmp}}^{(t)})<\tilde f(\boldsymbol{p}_i^{(t)})\\ \boldsymbol{p}_i^{(t)}, & \text{否则} \end{cases} \tag{19} $$
群体位置随后直接同步为个体历史最优,当前全局最优值记为
$$ g^{(t)}=\min_{1\le i\le N}\tilde f(\boldsymbol{p}_i^{(t)}) \tag{20} $$
4. 算法流程
结合 core/igwo.py、ui/upload_widget.py 与 utils/igwo_exporter.py,本项目 IGWO 的流程为:
- 选择基准函数模式或上传数据代理优化模式。
- 若为上传模式,则训练随机森林代理模型并确定边界。
- 按式(6)初始化狼群,并建立个体历史最优。
- 根据式(9)至式(12)生成标准 GWO 候选。
- 根据式(13)至式(15)生成 DLH 候选。
- 按式(16)至式(17)进行 L-SHADE 风格边界回拉。
- 按式(18)至式(19)选择更优候选并更新个体历史最优。
- 记录式(20)的收敛曲线,导出 Excel、收敛图和最优解图。
5. 关键参数说明
pop_size:狼群规模 \(N\)。max_iter:最大迭代次数 \(T\)。dim:问题维度。lb、ub:逐维边界。objective_direction:上传代理优化时的目标方向。random_state:代理模型随机种子。
6. 评价指标与输出结果解释
本实现以单次运行为主,实际导出的主要工作表包括:
原始数据:func_name、dim、pop_size、max_iter、lb、ub等原始运行元数据;上传模式下还会包含source_file、target_column、objective_direction;参数:界面提交的算法参数,通常为pop_size、max_iter;边界设置:导出求解边界,列为维度 / 下界 / 上界;运行汇总:objective_name、best_fitness、pop_size、max_iter、dim、problem_mode;收敛曲线:迭代 / 最优适应度;最佳解:最终最优解向量,仅含维度 / 值;结果解读:固定结果阅读建议;图表清单与Charts:图表名称及路径索引。
上传模式下还会追加 UploadedData、Bounds、SurrogateMetrics,并自动生成 repro_igwo.py 复现实验脚本。
论文结果部分建议按“运行汇总 报告最优值、收敛曲线 描述单次搜索过程、最佳解 给出最优位置向量、结果解读 作为辅助说明”的顺序组织。由于当前实现以单次运行为主,不宜写成多次运行统计;上传代理模式下则应同步报告 SurrogateMetrics。
7. 论文写作模板
可在论文方法部分表述为:
“本文采用改进灰狼优化算法进行求解。算法首先基于 Alpha、Beta 和 Delta 三只领导狼构造标准 GWO 候选位置,然后进一步引入基于邻域半径的维度学习捕食(DLH)策略,在每个维度上融合邻域个体与随机个体的信息。本文实现并不直接在两类候选之间做群体级替换,而是先逐个体选择更优候选,再与个体历史最优比较并更新,从而兼顾全局探索与局部保持能力。”
7.1 结果部分补充模板
若需把实验结果直接写入论文结果部分,可进一步表述为:
“表X给出了算法在当前问题上的最优目标值、平均最优值和标准差(如有多次独立运行),图X展示了收敛曲线变化。结果表明,该算法在迭代前期能够快速逼近优势区域,并在后期逐步趋于稳定,最终获得最优解 \(\boldsymbol{x}^*\) 及其对应目标值 \(f(\boldsymbol{x}^*)\)。对于上传代理优化场景,结合代理模型误差指标可认为该最优结果具有一定的数据驱动解释性。”
7.2 写作替换提示
为便于直接落稿,正文撰写时可将结果文件中的字段替换为以下论文措辞:
best_fitness或结果汇总表中的最优值,可写为“最优目标函数值”或“最优适应度值”;BestSolution、BestPosition、Best_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. 实现说明与注意事项
- 本实现适用于连续变量单目标优化。
- 边界处理不是简单
clip,而是采用与前一位置取中点的 L-SHADE 风格回拉策略。 - 项目当前为单次运行实现,不包含 IGOA 那样的多次独立运行汇总。
- 上传模式下最终给出的最优值是代理预测值,真实性依赖随机森林拟合质量。
9. 单篇终审补充
9.1 图题与表题对齐建议
运行汇总表可写为:表X IGWO 最优值与问题配置汇总。收敛曲线表可写为:表X IGWO 单次运行收敛轨迹。最佳解表可写为:表X IGWO 求得的最优解向量。结果解读表可写为:表X IGWO 结果阅读说明。图表清单或Charts中收敛图建议写为:图X 改进灰狼优化算法收敛曲线。
9.2 终审说明
- 当前实现是单次运行版,不宜写多次运行稳定性统计。
- 若使用上传代理模式,除报告最优值外,还应同步引用
SurrogateMetrics与repro_igwo.py的复现链路。
9.3 全量强化补充
本次全量强化绑定的真实结果目录为 具体的算法3/优化与多目标/IGWO-改进灰狼优化/results/pytest_baseline_test_swarm_improved_baseline_i0。主结果文件为 pytest_baseline_test_swarm_improved_baseline_i0.xlsx,实际工作表为 原始数据、参数、边界设置、运行汇总、收敛曲线、最佳解、结果解读、图表清单、Charts。当前主图文件为 charts/convergence.png 与 charts/best_solution.png。
复现脚本 repro_igwo.py 不走 repro_inputs,而是直接使用 FUNC_NAME = 'F1'、DIM = 5、LB/UB = [-100, 100] 和 problem_mode = 'benchmark'。这说明当前绑定的不是上传代理结果,而是 baseline 基准函数链路。虽然工作簿里出现 原始数据,但在这一类 benchmark 导出中,不应把它机械解读为用户上传样本副本。
结合真实目录结构看,IGWO 当前这份证据目录很干净:一份主工作簿、一个 charts/ 图目录和一个 repro_igwo.py。因此正文中若描述工程证据,可直接绑定这三个对象,不需要再像 AOA、HHO 那样区分内层再生产物。但同时也应如实写明:当前这份复现链路属于 benchmark/F1 口径,而非上传数据代理口径。
10. 软件实现核查补充(2026-07)
本篇对应的软件源码目录是 具体的算法3/优化与多目标/IGWO-改进灰狼优化。软件实现支持优化模式和上传数据代理优化模式;上传代理模式额外导出代理问题、上传数据和代理模型指标。文档中的 alpha/beta/delta 引导、包围更新和改进策略可以保留,但软件结果应按 IGWO_Params、Raw_Config、History_Mean、History_All、Best_Trace、Best_Solution 解释。
当前较新的代表性目录为 results/IGWO-改进灰狼优化分析结果_20260517_143002-优化模式 与 results/IGWO-改进灰狼优化分析结果_20260517_143017-上传数据代理优化。主工作簿包含 结果说明、Summary、Problem、IGWO_Params、Raw_Config、Bounds、Run_Summary、稳定性统计、History_Mean、History_All、Convergence_Curves、Convergence、Best_Trace、Best_Solution、Initial_Population、Final_Population、Charts 以及中文兼容表;上传模式额外包含 UploadedProblem、UploadedData、SurrogateMetrics。这与旧文绑定的 benchmark baseline 目录不同,当前新证据已经覆盖上传代理模式。
当前图表稳定输出为 charts/convergence.png 和 charts/best_position.png。复现代码位于 复现代码/优化模式/ 或 复现代码/上传数据代理优化/,上传模式输入副本为 repro_inputs/igwo_sample.xlsx,复现输出进入 repro_outputs/,其中复现工作簿常命名为 repro_outputs.xlsx。文档中应明确 repro_outputs 是复现二次目录,不是主运行工作簿。