正在加载中...

展开本页目录
算法教程AHA-人工蜂鸟

AHA-人工蜂鸟

No.171 · 在线教程

AHA-人工蜂鸟 的真实核心位于:

AHA-人工蜂鸟

1. 方法概述

AHA-人工蜂鸟 的真实核心位于:

  • core/aha_calculator.py
  • ui/upload_widget.py
  • ui/results_widget.py
  • utils/problem_definition.py

这份实现对应 Artificial Hummingbird Algorithm,核心特征有三类:

  1. 三种飞行模式:对角、全向、轴向
  2. 两种觅食策略:guided / territorial
  3. 迁徙觅食:每隔固定代数重置最差个体

算法在第 \(t\) 轮维护蜂鸟位置集合

$$ X^{(t)}=\{x_i^{(t)}\}_{i=1}^{N},\qquad x_i^{(t)}\in\mathbb{R}^d \tag{1} $$

并额外维护一个访问表 VisitTable,用于记录蜂鸟多久没有访问某个食物源。

2. 目标函数与问题模式

2.1 内置函数、CustomExpression 与上传代理

基准模式支持:

  • Sphere
  • Rastrigin
  • Rosenbrock
  • Ackley
  • Griewank
  • CustomExpression

若选择最大化,代码把原始目标 \(f(x)\) 改写为

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

上传模式下,则先训练随机森林代理模型 \(\hat y(x)\),再构造

$$ \tilde f(x)= \begin{cases} \hat y(x), & \text{上传方向为 min}\\ -\hat y(x), & \text{上传方向为 max} \end{cases} \tag{3} $$

因此 AHA 主循环同样统一按“更小更优”执行。

2.2 飞行方向向量

对每只蜂鸟,代码会构造一个维度掩码 direct_vector

$$ D_i^{(t)}\in\{0,1\}^d \tag{4} $$

其生成方式为:

  1. 对角飞行:随机选择多个维度置 1
  2. 全向飞行:所有维度都置 1
  3. 轴向飞行:只选一个维度置 1

所以这份实现不是连续小扰动版,而是明确用二值方向向量控制被扰动的坐标子集。

3. 觅食与迁徙机制

3.1 Guided foraging

guided 模式不是随机找目标,而是优先选择“最长未访问”的食物源。对第 \(i\) 只蜂鸟,目标索引写成

$$ j^\star=\arg\max_j \mathrm{VisitTable}_{ij} \tag{5} $$

若有并列,则代码再挑其中适应度更优者。随后位置更新为

$$ x_i^{(t+1)}=x_{j^\star}^{(t)}+z\,D_i^{(t)}\odot\big(x_i^{(t)}-x_{j^\star}^{(t)}\big), \qquad z\sim\mathcal{N}(0,1) \tag{6} $$

3.2 Territorial foraging

territorial 模式不参考其他个体,而是围绕自身当前位置搜索:

$$ x_i^{(t+1)}=x_i^{(t)}+z\,D_i^{(t)}\odot x_i^{(t)} \tag{7} $$

这一步同样使用标准正态随机数。

3.3 贪心更新与访问表刷新

若新解更优,则接受新位置:

$$ x_i^{(t+1)}\leftarrow x_i^{(t+1)},\qquad f_i^{(t+1)}<f_i^{(t)} \tag{8} $$

并对访问表执行一次整列刷新,把该食物源视为“刚被访问过”。若新解不优,则保持原位置,仅更新时间戳。

3.4 Migration foraging

每经过

$$ t \equiv 0 \pmod{2N} \tag{9} $$

代码就会找到当前最差蜂鸟并随机重置:

$$ x_{\mathrm{worst}}^{(t+1)}\sim U(l,u) \tag{10} $$

这一步是当前实现的重要特征,因为它直接写死为 2 * n_pop 周期,而不是用户可调。

4. 多次运行与输出结果

runs=R,程序会用 seed + r - 1 作为每次运行的随机种子,得到 \(R\) 条最优曲线。最佳运行轨迹和平均轨迹分别写为

$$ f^{best}_t \tag{11} $$

$$ \bar f_t=\frac{1}{R}\sum_{r=1}^{R} f_t^{(r)} \tag{12} $$

真实 Excel 工作表为:

  • Parameters
  • Summary
  • RunSummary
  • BestPosition
  • Convergence_Best
  • Convergence_Mean
  • Bounds
  • VisitTable
  • UploadedData(仅上传模式)
  • SurrogateMetrics(仅上传模式)
  • Charts

其中 VisitTable 只有矩阵规模不太大时才会导出;实现里还会对最佳解分量单独画柱状图。

5. 实现说明与注意事项

从真实代码出发,论文说明里应明确写出:

  1. 这份 AHA 的 guided/territorial 分支概率是固定 0.5,不是用户参数。
  2. VisitTable 是真实参与目标选择的核心状态,不是仅用于展示。
  3. 迁徙操作固定每 2 * n_pop 轮触发,并直接重置最差个体。
  4. CustomExpression 通过受限 eval 执行,只支持 npmathx 等白名单对象。
  5. 上传模式本质上仍然是“随机森林代理模型 + AHA 搜索”,而不是 AHA 对原始表直接回归。

6. 论文写作模板

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

“本文采用人工蜂鸟算法对连续变量优化问题进行求解。首先,在搜索空间内初始化蜂鸟种群,并根据目标函数或代理目标计算个体适应度;其次,利用导向觅食、区域觅食和迁徙等机制对个体位置进行更新,并在迭代过程中持续刷新当前最优解;随后,在多次独立运行条件下统计收敛曲线和稳定性结果;最后,输出最优解、最优适应度、运行汇总和导出图表,用于分析算法的寻优效果。”

7. 单篇终审补充

7.1 表格标题模板

  • Summary 表可写为:表X AHA 最优解、最优适应度与核心参数汇总。
  • RunSummary 表可写为:表X AHA 多次独立运行结果对比。
  • Convergence_Best 表可写为:表X AHA 最佳运行的逐代收敛结果。
  • Convergence_Mean 表可写为:表X AHA 多次运行平均收敛曲线。
  • VisitTable 表可写为:表X AHA 最终访问表状态。

7.2 图表题注模板

  • convergence.png 可写为:图X 人工蜂鸟算法最佳适应度收敛曲线。
  • 最佳解分量柱状图可写为:图X AHA 最优解各维分量分布。

7.3 结果解释模板段落

“由 SummaryRunSummary 可见,AHA 在给定边界与参数配置下能够稳定获得较优解,且多次独立运行的最优值波动保持在可接受范围内。图X 所示 convergence.png 表明算法在迭代早期能够快速改进目标值,后期则在导向觅食、区域觅食与迁徙机制共同作用下趋于稳定。Convergence_BestConvergence_Mean 的对照说明单次最佳轨迹与平均表现之间不存在明显背离。若导出了 VisitTable,则还可据此解释蜂鸟对食物源访问频次与搜索集中区域的关系。”

7.4 全量强化补充

本次全量强化绑定的真实上传验证目录为 具体的算法3/优化与多目标/AHA-人工蜂鸟/results/manual_upload_verify_20260328/AHA-人工蜂鸟分析结果_20260328_110837。主结果文件为 AHA-人工蜂鸟分析结果_20260328_110837.xlsx,实际工作表为 ParametersSummaryRunSummaryBestPositionConvergence_BestConvergence_MeanBoundsVisitTableUploadedDataSurrogateMetricsCharts

真实图文件位于 charts/ 子目录,包括 convergence.pngbest_position.png。前者适合写为“人工蜂鸟算法收敛曲线”,后者适合写为“人工蜂鸟算法最优解分量图”。

复现脚本为 repro_aha.py,输入口径为 source_file = 'repro_inputs/aha_sample.xlsx',且运行参数显式声明 problem_mode = 'upload_surrogate'target_column = 'f_sphere'objective_direction = 'min'。因此论文附录若要说明复现方式,应直接写成“基于结果目录内 repro_inputs/aha_sample.xlsx 的上传代理模式复现”,而不是泛写成 benchmark 函数求解。

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

本篇对应的软件源码目录是 具体的算法3/优化与多目标/AHA-人工蜂鸟。界面实现同时支持 benchmark 优化模式和 upload_surrogate 上传数据代理优化模式;上传模式读取 csv/xlsx/xls,自动识别数值特征与目标列,训练随机森林代理模型后再由 AHA 搜索。文档中关于人工蜂鸟访问表、导向觅食、区域觅食和迁徙机制的理论公式可以保留,但用户解读软件结果时应以当前工程导出的 problem_mode 为准。

当前较新的实跑证据目录包括 results/AHA-人工蜂鸟分析结果_20260517_100541-优化模式results/AHA-人工蜂鸟分析结果_20260517_100601-上传数据代理优化。主工作簿命名为 AHA_results_*.xlsx,优化模式工作表包含 结果摘要结果说明字段说明SummaryProblemAlgorithm_ParamsBoundsRun_SummaryHistory_MeanHistory_AllBest_SolutionConvergence_BestRunVisitTableCharts;上传代理模式额外包含 UploadedProblemUploadedDataSurrogateMetrics。因此论文或用户手册中如果引用上传数据结果,必须同时解释代理模型训练指标,不能把 best_fitness 直接写成真实解析函数的最优值。

图表当前落在结果目录的 图表/ 下,稳定产物为 convergence.pngbest_position.pngconvergence.png 用于解释最佳运行和平均收敛过程,best_position.png 用于解释最优解各维分量;VisitTable 则适合补充说明蜂鸟对食物源的访问状态。复现代码位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式会复制输入到 复现代码/上传数据代理优化/repro_inputs/aha_sample.xlsx,复现后再写入同级 repro_outputs/。写复现说明时应区分主结果目录和 repro_outputs 二次结果目录。