正在加载中...

展开本页目录
算法教程AVOA-秃鹰优化

AVOA-秃鹰优化

No.174 · 在线教程

AVOA-秃鹰优化 的真实核心位于:

AVOA-秃鹰优化

1. 方法概述

AVOA-秃鹰优化 的真实核心位于:

  • core/avoa_calculator.py
  • core/avoa.py
  • core/benchmarks.py
  • utils/problem_definition.py

这份实现对应 African Vultures Optimization Algorithm。代码里始终维护两只最佳秃鹰:

  • Best_vulture1_X
  • Best_vulture2_X

并在每轮迭代中,从这两只最佳秃鹰里随机选一只作为“参考秃鹰”。

设第 \(i\) 个个体的位置为 \(x_i^{(t)}\in\mathbb{R}^d\),目标是最小化

$$ f(x),\qquad x\in[l,u] \tag{1} $$

上传代理模式下,\(f(x)\) 则由随机森林代理模型给出。

2. 参考秃鹰与饥饿因子

2.1 两只最佳秃鹰的选择

代码使用 alphabetha 构造简化轮盘赌,从两只最佳秃鹰中选择参考个体:

$$ x_r= \begin{cases} x_{best1}, & \text{以概率 }\dfrac{\alpha}{\alpha+\beta}\\ x_{best2}, & \text{以概率 }\dfrac{\beta}{\alpha+\beta} \end{cases} \tag{2} $$

2.2 时间项 \(a(t)\) 与饥饿因子 \(F\)

第 \(t\) 轮迭代先计算

$$ a(t)=u\cdot\left(\left(\sin\!\left(\frac{\pi}{2}\frac{t}{T}\right)\right)^{\gamma_e} +\cos\!\left(\frac{\pi}{2}\frac{t}{T}\right)-1\right), \qquad u\sim U(-2,2) \tag{3} $$

其中 \(\gamma_e\) 对应代码参数 gamma_exponent。随后

$$ P_1=(2r_1+1)\Big(1-\frac{t}{T}\Big)+a(t) \tag{4} $$

并定义饥饿因子

$$ F=P_1(2r_2-1) \tag{5} $$

代码正是用 \(|F|\) 来决定探索还是开发阶段。

3. 探索与开发公式

3.1 探索阶段

$$ |F|\ge 1 \tag{6} $$

进入探索阶段。第一条分支为

$$ x_i^{(t+1)}=x_r-\big|2r\,x_r-x_i^{(t)}\big|\,F \tag{7} $$

第二条分支为

$$ x_i^{(t+1)}=x_r-F+r\cdot\Big((u-l)\odot r'+l\Big) \tag{8} $$

这两条更新对应 _exploration() 中的 p1 分支。

3.2 开发阶段 I:高竞争

若 \(0.5\le |F|<1\),进入高竞争阶段。其一是旋转飞行式更新:

$$ A=x_{best1}-\frac{x_{best1}\odot x_i}{x_{best1}-x_i^2+\varepsilon}F,\qquad B=x_{best2}-\frac{x_{best2}\odot x_i}{x_{best2}-x_i^2+\varepsilon}F \tag{9} $$

然后取

$$ x_i^{(t+1)}=\frac{A+B}{2} \tag{10} $$

其二是带 Levy Flight 的竞争更新:

$$ x_i^{(t+1)}=x_r-\big|x_r-x_i^{(t)}\big|\,F\odot \mathrm{Levy} \tag{11} $$

3.3 开发阶段 II:高攻击

若 \(|F|<0.5\),则进入高攻击阶段。第一条分支写成

$$ x_i^{(t+1)}=\big|2r\,x_r-x_i^{(t)}\big|\cdot\Big((F+r')-(x_r-x_i^{(t)})\Big) \tag{12} $$

另一条分支是围绕参考秃鹰的正余弦围攻:

$$ x_i^{(t+1)}=x_r-(s_1+s_2) \tag{13} $$

其中 \(s_1,s_2\) 来自代码里的 cos / sin 两项。

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

上传模式下,目标函数不是 benchmark F1-F13,而是

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

并进一步按上传方向决定最小化或最大化口径。当前实现只执行一次优化,不支持多次运行统计,n_eval 直接按

$$ n_{\mathrm{eval}}=\texttt{pop\_size}\times \texttt{max\_iter} \tag{15} $$

记录到 运行汇总

真实 Excel 工作表为:

  • 参数
  • 边界设置
  • 运行汇总
  • 收敛曲线
  • 最佳解
  • 最佳适应度
  • 结果解读
  • UploadedData(上传模式)
  • SurrogateMetrics(上传模式)
  • 图表清单

其中图表目前只有一张 convergence.png

5. 实现说明与注意事项

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

  1. AVOA 参考秃鹰只在“当前两只最佳秃鹰”之间选择,不会从整个种群抽样。
  2. 核心切换变量是 \(|F|\),代码严格用它区分探索、高竞争、高攻击三种阶段。
  3. Levy flight 只出现在高竞争阶段的一条分支里,不是每轮都使用。
  4. 当前实现只有单次运行,没有 n_runs 统计表。
  5. 上传模式本质是“随机森林代理模型 + AVOA 搜索”,并将训练集拟合指标单独导出。

6. 论文写作模板

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

“本文采用非洲秃鹰优化算法对连续优化问题进行求解。首先,在搜索空间内初始化种群,并在每轮迭代中维护当前两只最优秃鹰;其次,通过概率机制从两只最优秃鹰中选择参考个体,并基于时间项与饥饿因子判断当前处于探索、高竞争开发或高攻击开发阶段;随后,按对应的更新公式完成个体位置迭代,并执行边界裁剪与最优解刷新;最后,输出最优解、最优适应度、收敛曲线及运行汇总结果,用于评价算法的搜索效果。”

7. 单篇终审补充

7.1 表格标题模板

  • 运行汇总 表可写为:表X AVOA 运行结果与关键参数汇总。
  • 收敛曲线 表可写为:表X AVOA 各迭代最优适应度变化。
  • 最佳解 表可写为:表X AVOA 求得的最优解向量。
  • 最佳适应度 表可写为:表X AVOA 最终最优适应度。

7.2 图表题注模板

  • convergence.png 可写为:图X 非洲秃鹰优化算法收敛曲线。

7.3 结果解释模板段落

“由 运行汇总最佳解最佳适应度 可见,AVOA 能够在两只最优秃鹰引导下逐步逼近更优区域。图X 所示 convergence.png 给出了最优适应度随迭代的演化过程,可据此判断算法在探索阶段和开发阶段之间的切换效率。由于当前实现仅执行单次运行,因此论文在解释结果时应重点强调单次轨迹的搜索过程,而不宜直接声称存在多次重复试验的稳定性统计,除非另行补做重复实验。”

7.4 全量强化补充

本次全量强化绑定的真实上传验证目录为 具体的算法3/优化与多目标/AVOA-秃鹰优化/results/manual_upload_verify_20260328/AVOA-秃鹰优化分析结果_20260328_112157。主结果文件为 AVOA-秃鹰优化分析结果_20260328_112157.xlsx,实际工作表为 参数边界设置运行汇总收敛曲线最佳解最佳适应度结果解读UploadedDataSurrogateMetrics图表清单

当前真实图文件仅有 charts/convergence.png 一张,因此论文结果部分不应虚写多图输出;若需要更多解释,应主要依赖 运行汇总最佳解UploadedData/SurrogateMetrics

复现脚本为 repro_avoa.py,其参数中 problem_mode = 'upload_surrogate',输入文件口径为 source_file = 'repro_inputs/avoa_sample.xlsx',并在运行时解析到结果目录内的 repro_inputs。因此这篇文档在论文附录中应写成“上传代理模型模式的 AVOA 复现”,不要省略代理数据和目标列来源。

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

本篇对应的软件源码目录是 具体的算法3/优化与多目标/AVOA-秃鹰优化。软件实现提供内置测试函数和上传数据代理优化两类问题模式;上传代理模式读取 csv/xlsx/xls 数值表,自动识别目标列并使用其余数值列训练代理模型。理论部分关于两只最优秃鹰、饥饿因子和探索/开发切换的公式可以保留,但文档应说明软件当前导出的是单目标连续优化结果。

当前较新的代表性目录为 results/AVOA-秃鹰优化分析结果_20260517_113003-优化模式results/AVOA-秃鹰优化分析结果_20260517_113029-上传数据代理优化。主工作簿 AVOA_results_*.xlsx 在优化模式下包含 结果说明字段说明SummaryProblemAVOA_ParamsBoundsRun_SummaryHistory_MeanBest_SolutionCharts;上传模式额外包含 UploadedProblemUploadedDataSurrogateMetrics。因此解释上传结果时,应把 SurrogateMetrics 作为代理模型可靠性证据,而不是只引用 Summary.best_fitness

图表目录形如 AVOA_results_时间戳_plots/,当前稳定输出为 convergence.png。较新实跑没有固定导出最优解柱状图,因此正文图题应以收敛曲线为主。复现代码位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式会将输入复制为 repro_inputs/avoa_sample.xlsx,复现输出进入 repro_outputs/。用户手册中应写清楚首层结果是正式运行结果,repro_outputs 是运行复现脚本后的二次输出。