正在加载中...

展开本页目录
算法教程AOA-算术优化

AOA-算术优化

No.173 · 在线教程

AOA-算术优化 的真实核心位于:

AOA-算术优化

1. 方法概述

AOA-算术优化 的真实核心位于:

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

这份实现对应 Arithmetic Optimization Algorithm,核心思想是围绕当前全局最优解 \(x^\star\) 使用四种算术运算型更新:

  • 除法
  • 乘法
  • 减法
  • 加法

设搜索维度为 \(d\),则候选解满足

$$ x_i^{(t)}\in [l,u]\subset\mathbb{R}^d \tag{1} $$

种群规模由 pop_size 指定,内置支持多次独立运行并统计均值、最小值、最大值。

2. 目标函数与参数调度

2.1 问题模式

基准模式下,若用户选择最大化,则主循环内部并不会先把目标取负,而是通过比较函数 better() 直接按“大者更优”处理。只有上传模式才把方向嵌入代理目标,即

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

因此这里的随机森林代理模型 \(\hat y(x)\) 只在 upload_surrogate 场景下出现;benchmark 最大化并不走这一步“内部取负”。

2.2 MOA 与 MOP

当前代码采用两条显式时间调度曲线。第 \(t\) 轮迭代的 MOA 为

$$ \mathrm{MOA}(t)=\mathrm{moa}_{\min}+\frac{t}{T}\big(\mathrm{moa}_{\max}-\mathrm{moa}_{\min}\big) \tag{3} $$

MOP 为

$$ \mathrm{MOP}(t)=1-\frac{t^{1/\alpha}}{T^{1/\alpha}} \tag{4} $$

其中 \(T=\texttt{max\_iter}\),\(\alpha\) 是代码里的 alpha 参数。

2.3 代码里的常量向量

实现没有直接用 \((u-l)\) 做缩放,而是构造了一个固定向量

$$ A=(u-l)\mu+l \tag{5} $$

其中 \(\mu\) 对应参数 mu。这是该目录非常关键的实现细节,因为后续四种算术更新都围绕 \(A\) 展开。

3. 四种更新公式

对第 \(i\) 个个体、第 \(j\) 个维度,先看一个随机数 \(r_1\)。若 \(r_1<\mathrm{MOA}(t)\),进入乘除法分支。

3.1 除法分支

若再有 \(r_2>0.5\),代码执行

$$ x'_{ij}=\frac{x^\star_j}{\mathrm{MOP}(t)+\varepsilon}\,A_j \tag{6} $$

其中 \(\varepsilon=10^{-12}\) 用于避免除零。

3.2 乘法分支

若 \(r_2\le 0.5\),则执行

$$ x'_{ij}=x^\star_j\,\mathrm{MOP}(t)\,A_j \tag{7} $$

3.3 减法分支

若 \(r_1\ge \mathrm{MOA}(t)\) 且 \(r_3>0.5\),则有

$$ x'_{ij}=x^\star_j-\mathrm{MOP}(t)\,A_j \tag{8} $$

3.4 加法分支

若 \(r_1\ge \mathrm{MOA}(t)\) 且 \(r_3\le 0.5\),则有

$$ x'_{ij}=x^\star_j+\mathrm{MOP}(t)\,A_j \tag{9} $$

得到的新解统一做边界裁剪后,再与旧解比较,若更优则替换:

$$ x_i^{(t+1)}= \begin{cases} x'_i, & \tilde f(x'_i)\text{ 更优}\\ x_i^{(t)}, & \text{否则} \end{cases} \tag{10} $$

因此 AOA 在这份实现里是标准的“生成候选 + 贪心接受”结构。

4. 多次运行、上传代理与输出结果

若执行 \(R\) 次独立运行,程序会把每次最优曲线写成 run_1, run_2, ...,并进一步统计

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

以及逐代最小值、最大值。上传模式下,代理模型写成

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

其训练集 rmse/mae/r2 会导出到 SurrogateMetrics

真实 Excel 工作表为:

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

5. 实现说明与注意事项

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

  1. AOA 的四种更新都围绕当前全局最优 \(x^\star\) 展开,没有显式个体间差分项。
  2. 代码里使用的缩放向量是 \(A=(u-l)\mu+l\),不是很多教材里更抽象的区间长度项。
  3. 多次运行时导出的 收敛曲线 会同时保存每次曲线、均值、最小值、最大值。
  4. 上传模式本质是“随机森林代理模型 + AOA 搜索”,而不是 AOA 直接对原始样本做插值搜索。
  5. 结果 Excel 里同时保留 图表清单Charts 两张表,这是当前实现的真实导出行为。

6. 论文写作模板

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

“本文采用算术优化算法对连续变量优化问题进行求解。首先,在给定搜索区间内初始化种群,并依据目标函数计算个体适应度与当前全局最优解;其次,利用随时间变化的 MOA 与 MOP 参数控制搜索阶段切换,并围绕当前全局最优解执行除法、乘法、减法和加法四类算术更新;随后,对生成的新解进行边界裁剪与贪心接受,并在多次独立运行场景下统计逐代均值、最小值与最大值;最后,输出最优解、最佳适应度、收敛曲线和稳定性统计结果,用于分析算法的寻优能力与运行稳定性。”

7. 单篇终审补充

7.1 表格标题模板

  • 运行汇总 表可写为:表X AOA 多次独立运行结果汇总。
  • 稳定性统计 表可写为:表X AOA 最优值稳定性统计。
  • 收敛曲线 表可写为:表X AOA 逐代最优值、均值及波动范围。
  • 最佳解 表可写为:表X AOA 求得的最优解向量。
  • 最佳适应度 表可写为:表X AOA 最终最佳适应度结果。

7.2 图表题注模板

  • convergence.png 可写为:图X 算术优化算法收敛曲线。
  • 多次运行箱线图可写为:图X AOA 多次运行最优值分布箱线图。

7.3 结果解释模板段落

“由 运行汇总稳定性统计 可见,AOA 在多次独立运行下能够获得较稳定的最优值表现。图X 所示 convergence.png 显示,随着 MOA 与 MOP 的时间调度推进,算法由前期较强的全局搜索逐步过渡到后期围绕当前全局最优解的精细开发。收敛曲线 工作表中均值、最小值与最大值的同时导出,使得结果解释不仅可以基于单次最佳轨迹,还可以据此评价算法整体稳定性。若论文需要展示解的可解释性,可进一步结合 最佳解最佳适应度 对关键变量分量进行讨论。”

7.4 全量强化补充

本次全量强化绑定的真实结果目录为 具体的算法3/优化与多目标/AOA-算术优化/results/AOA-算术优化分析结果_20260324_002213。主结果文件为 AOA-算术优化分析结果_20260324_002213.xlsx,实际工作表为 参数边界设置运行汇总稳定性统计收敛曲线最佳解最佳适应度结果解读图表清单

当前主图文件位于 charts/best_box.pngcharts/convergence.png。这个目录还有一个需要如实记录的工程现象:目录内部又出现了 results/AOA-算术优化分析结果_20260324_002316/,其中包含新的工作簿、图目录和 repro_aoa.py。这说明当前 repro 不是在外部独立目录落结果,而是在主结果目录内部再次生成一层 results/... 子目录。

repro_aoa.py 不走 repro_inputs,而是直接写入 objective_name = 'Sphere(球形)'n_runs = 3seed = 42,并把 output_dir 指到 BASE_DIR / 'results'。因此这篇文档应明确区分两层口径:外层 20260324_002213 是主实验目录,内层 results/AOA-算术优化分析结果_20260324_002316 是复现再生产物。论文正文如果只汇报主实验,应只引用外层工作簿和外层 charts/ 图文件,不应把内层再次导出的结果混写成同一轮主实验输出。

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

本篇对应的软件源码目录是 具体的算法3/优化与多目标/AOA-算术优化。软件实现支持内置测试函数和上传数据代理优化;上传模式读取 csv/xlsx/xls 后识别数值特征与目标列,并通过随机森林代理模型连接到 AOA 搜索。文档中关于 MOA、MOP 以及乘除加减四类位置更新公式可以保留,但应明确这些公式服务于当前单目标连续优化实现,不代表软件已经扩展到多目标或离散约束版本。

当前较新的结果目录包括 results/AOA-算术优化分析结果_20260517_113039-优化模式results/AOA-算术优化分析结果_20260517_113050-上传数据代理优化。主工作簿同时保留英文审计表和中文说明表,常见工作表包括 SummaryProblemAOA_ParamsBoundsRun_SummaryHistory_MeanHistory_AllBest_SolutionCharts参数边界设置运行汇总稳定性统计收敛曲线最佳解最佳适应度结果解读图表清单结果说明;上传模式额外出现 UploadedProblemUploadedDataSurrogateMetrics。中文表适合普通用户阅读,英文表适合复核字段与程序变量。

当前稳定图表为 charts/convergence.png,用于解释最优适应度随迭代变化;本轮较新目录未固定导出箱线图,因此不应把箱线图写成必有产物。复现脚本位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式会把输入复制到 repro_inputs/aoa_sample.xlsx,运行后再进入 repro_outputs/。文档中应继续保留“外层主结果目录”和“复现再生产物目录”的区分。