正在加载中...

展开本页目录
算法教程COA-郊狼优化

COA-郊狼优化

No.176 · 在线教程

COA-郊狼优化 的真实核心位于:

COA-郊狼优化

1. 方法概述

COA-郊狼优化 的真实核心位于:

  • core/coa.py
  • core/benchmarks.py
  • ui/upload_widget.py
  • ui/results_widget.py

这份实现对应 Coyote Optimization Algorithm。它把种群拆成若干个包(pack),每个包内再进行社交更新、幼崽产生与最差个体替换。

设总种群规模为 \(N\),每包郊狼数为 \(n_c\),则包数为

$$ N_{pack}=\left\lfloor \frac{N}{n_c}\right\rfloor \tag{1} $$

若存在余数,代码会把剩余郊狼直接并到最后一个包,而不是新建一个小包。

2. 包内更新机制

2.1 Alpha 与社会趋势

每个包先按适应度排序,取最优个体作为该包 alpha。同时计算包内平均位置

$$ \mathrm{tendency}=\frac{1}{|\mathcal{P}|}\sum_{x\in\mathcal{P}} x \tag{2} $$

这就是代码里的 Social Tendency

2.2 个体社交更新

对包内第 \(i\) 只郊狼,随机选两只不同同伴 rc1rc2,然后执行

$$ x_i^{(t+1)}=x_i^{(t)}+r_1\big(x_{\alpha}-x_{rc1}\big)+r_2\big(\mathrm{tendency}-x_{rc2}\big) \tag{3} $$

其中 \(r_1,r_2\sim U(0,1)\)。新解统一裁剪到边界后重新计算适应度,若更优则贪心接受。

2.3 幼崽产生

每个包每轮还会从一对父母生成一只幼崽。设维度为 \(d\),代码定义父母基因继承概率

$$ p=\frac{1-\frac{1}{d}}{2} \tag{4} $$

对每个维度 \(j\):

$$ x_{pup,j}= \begin{cases} x_{dad,j}, & r_j<p\\ x_{mom,j}, & r_j>1-p\\ U(l_j,u_j), & \text{否则} \end{cases} \tag{5} $$

也就是说,剩余维度不是复制父母,而是直接做随机噪声重采样。

2.4 幼崽生存

包内个体会按“适应度更差优先、同适应度时更年轻优先”排序;这是因为代码实际使用的是 sort(key=lambda x: (x['fitness'], -x['age']), reverse=True)。若幼崽更优,则替换当前最差个体:

$$ x_{worst}\leftarrow x_{pup}, \qquad \text{若 } f(x_{pup})<f(x_{worst}) \tag{6} $$

3. 包间交换与年龄更新

3.1 离包概率

COA 代码里离包概率并不是自由参数,而是固定写成

$$ p_{leave}=\min\big(1,\ 0.005\,n_c^2\big) \tag{7} $$

3.2 包间交换

若当前存在多个包,并且触发离包事件,则随机选两个包,再随机交换其中各一只郊狼。这一步不重新评估适应度,只是交换所属包。

3.3 年龄更新

每轮结束后,每只郊狼的年龄加一:

$$ \mathrm{age}_i^{(t+1)}=\mathrm{age}_i^{(t)}+1 \tag{8} $$

年龄主要在“最差个体替换排序”时作为次级准则使用。

4. 上传代理优化与输出结果

虽然 COAOptimizer 核心只接受一个黑箱目标函数,但 UI 层已经支持上传代理优化。上传后先训练随机森林代理模型

$$ \hat y(x)=\mathrm{RandomForestRegressor}_{300}(x) \tag{9} $$

再把 spec.objective 传给 COA 进行搜索。UI 主流程导出的 Excel 一般包含:

  • 运行汇总
  • 参数
  • 收敛曲线
  • 最优解
  • 图表清单

在上传模式下,主界面导出还可能额外出现:

  • UploadedData
  • SurrogateMetrics

但复现脚本自己再次导出时,通常只保留最基础的四张表。

5. 实现说明与注意事项

从真实代码看,这个目录应明确写出:

  1. COA 核心实现始终按最小化比较,不提供 benchmark 最大化接口。
  2. 包数采用 floor(pop_size / n_coyotes),余下个体并入最后一个包。
  3. 幼崽的“第三类基因来源”是随机重采样,不是父母平均或高斯扰动。
  4. 上传代理优化主要由 UI 层封装实现,核心优化器本身只知道“调用传入目标函数”。
  5. 当前结果导出相对简化,没有像 AFT、BA 那样导出完整群体矩阵或多次运行统计。

6. 论文写作模板

可在论文“方法部分”中写为:

“本文采用郊狼优化算法对连续变量优化问题进行求解。首先,将总体种群划分为多个包,并在每个包内根据适应度确定 alpha 个体和社会趋势;其次,各郊狼依据 alpha 个体与社会趋势执行社交更新,同时在每轮迭代中由父母个体生成幼崽,并以贪心准则尝试替换当前最差个体;随后,在多包场景下执行随机离包与跨包交换机制,以增强种群多样性;最后,输出最优解、收敛曲线和运行汇总结果,用于评价算法的搜索性能。”

7. 单篇终审补充

7.1 表格标题模板

  • 运行汇总 表可写为:表X COA 最优适应度与问题规模汇总。
  • 参数 表可写为:表X COA 参数设置说明。
  • 收敛曲线 表可写为:表X COA 各迭代最优适应度变化。
  • 最优解 表可写为:表X COA 求得的最优解向量。
  • 图表清单 表可写为:表X COA 导出图表路径索引。

7.2 图表题注模板

  • convergence.png 可写为:图X 郊狼优化算法收敛曲线。

7.3 结果解释模板段落

“由 运行汇总收敛曲线最优解 可见,COA 能够通过包内 alpha 引导、社会趋势更新和幼崽替换机制逐步改进候选解。图X 所示 convergence.png 反映了最优适应度在迭代中的变化过程;若曲线前期下降较快而后期趋稳,说明算法已由全局搜索逐步过渡到局部精化。由于当前实现结果导出相对简化,论文结果部分宜围绕最优值、收敛趋势和最优解向量展开,而不宜声称存在完整的多次运行稳定性统计,除非另行补做重复实验。”

7.4 全量强化补充

本次全量强化绑定的真实上传验证目录为 具体的算法3/优化与多目标/COA-郊狼优化/results/manual_upload_verify_20260328/COA-郊狼优化分析结果_20260328_114035。主结果文件为 COA-郊狼优化分析结果_20260328_114035.xlsx,实际工作表为 运行汇总参数收敛曲线最优解UploadedDataSurrogateMetrics图表清单

当前真实图文件为 charts/convergence.png,复现脚本为 repro_coa.py,复现输出会进入 repro_outputs/COA-郊狼优化分析结果_20260328_114035_repro.xlsx。论文中如果只陈述主实验,应优先引用首层主结果文件和 charts/convergence.png,把 repro_outputs 作为附录复现证据。

复现参数中 problem_mode = 'upload_surrogate',输入口径为 source_file = 'repro_inputs/coa_sample.xlsx',并使用 target_column = 'f_sphere'objective_direction = 'min'。因此这篇文档应明确写成上传代理优化模式;若正文解释最优值,应同时引用 SurrogateMetrics,避免把代理模型寻优结果误写成直接解析目标函数结果。

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

本篇对应的软件源码目录是 具体的算法3/优化与多目标/COA-郊狼优化。软件实现支持优化模式和上传数据代理优化模式;上传模式通过 csv/xlsx/xls 数值表构造代理问题,优化结果需要与 UploadedProblemUploadedBoundsUploadedDataSurrogateMetrics 联合解读。理论中关于郊狼群体、alpha、社会趋势、幼崽替换和包间交换的内容可以保留,但应说明当前软件导出的是工程化单目标连续优化链路。

当前较新的代表性目录为 results/COA-郊狼优化分析结果_20260517_101952-优化模式results/COA-郊狼优化分析结果_20260517_102033-上传数据代理优化。主工作簿 COA_results_*.xlsx 在优化模式下包含 字段说明SummaryProblemCOA_ParamsBoundsRun_SummaryHistory_MeanHistory_AllBest_SolutionCharts;上传模式额外包含 UploadedProblemUploadedBoundsUploadedDataSurrogateMetricsRun_Summary 记录每次运行,History_MeanHistory_All 对应平均与完整收敛历史。

当前图表文件通常直接位于结果目录下,例如 COA_convergence_时间戳.pngCOA_preview_时间戳.png,复现输出中也会生成 COA_convergence_*.png。复现脚本位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式使用 repro_inputs/coa_sample.xlsx,复现产物进入 repro_outputs/。与 ALO/AHA 不同,COA 当前不是固定使用 charts/ 子目录,因此文档中图表路径应按实际 Charts 表或结果目录文件解释。