AVOA-秃鹰优化
AVOA-秃鹰优化 的真实核心位于:
AVOA-秃鹰优化
1. 方法概述
AVOA-秃鹰优化 的真实核心位于:
core/avoa_calculator.pycore/avoa.pycore/benchmarks.pyutils/problem_definition.py
这份实现对应 African Vultures Optimization Algorithm。代码里始终维护两只最佳秃鹰:
Best_vulture1_XBest_vulture2_X
并在每轮迭代中,从这两只最佳秃鹰里随机选一只作为“参考秃鹰”。
设第 \(i\) 个个体的位置为 \(x_i^{(t)}\in\mathbb{R}^d\),目标是最小化
$$ f(x),\qquad x\in[l,u] \tag{1} $$
上传代理模式下,\(f(x)\) 则由随机森林代理模型给出。
2. 参考秃鹰与饥饿因子
2.1 两只最佳秃鹰的选择
代码使用 alpha 与 betha 构造简化轮盘赌,从两只最佳秃鹰中选择参考个体:
$$ 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. 实现说明与注意事项
从真实代码看,这个目录应明确写出:
- AVOA 参考秃鹰只在“当前两只最佳秃鹰”之间选择,不会从整个种群抽样。
- 核心切换变量是 \(|F|\),代码严格用它区分探索、高竞争、高攻击三种阶段。
- Levy flight 只出现在高竞争阶段的一条分支里,不是每轮都使用。
- 当前实现只有单次运行,没有
n_runs统计表。 - 上传模式本质是“随机森林代理模型 + 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,实际工作表为 参数、边界设置、运行汇总、收敛曲线、最佳解、最佳适应度、结果解读、UploadedData、SurrogateMetrics、图表清单。
当前真实图文件仅有 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 在优化模式下包含 结果说明、字段说明、Summary、Problem、AVOA_Params、Bounds、Run_Summary、History_Mean、Best_Solution、Charts;上传模式额外包含 UploadedProblem、UploadedData、SurrogateMetrics。因此解释上传结果时,应把 SurrogateMetrics 作为代理模型可靠性证据,而不是只引用 Summary.best_fitness。
图表目录形如 AVOA_results_时间戳_plots/,当前稳定输出为 convergence.png。较新实跑没有固定导出最优解柱状图,因此正文图题应以收敛曲线为主。复现代码位于 复现代码/优化模式/ 或 复现代码/上传数据代理优化/,上传模式会将输入复制为 repro_inputs/avoa_sample.xlsx,复现输出进入 repro_outputs/。用户手册中应写清楚首层结果是正式运行结果,repro_outputs 是运行复现脚本后的二次输出。