正在加载中...

展开本页目录
算法教程AFT-阿里巴巴四十大盗

AFT-阿里巴巴四十大盗

No.170 · 在线教程

AFT-阿里巴巴四十大盗 的真实核心位于:

AFT-阿里巴巴四十大盗

1. 方法概述

AFT-阿里巴巴四十大盗 的真实核心位于:

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

这份实现是单目标连续优化版 AFT,支持:

  1. 内置基准函数 F1-F9
  2. 上传数据后训练代理模型再优化

算法状态里最重要的四个量是:

  • x_th:当前盗贼位置
  • best:每个盗贼自己的历史最优
  • x_ab:阿里巴巴位置
  • gbest:全局最优盗贼位置

设第 \(i\) 个盗贼在第 \(t\) 轮的位置为 \(x_i^{(t)}\in\mathbb{R}^d\),搜索域为

$$ \Omega=\{x\in\mathbb{R}^d\mid l_j\le x_j\le u_j\} \tag{1} $$

初始种群按均匀分布生成:

$$ x_i^{(0)}\sim U(l,u) \tag{2} $$

2. 目标函数与问题模式

2.1 基准函数与最大化

基准模式下,若原始目标为 \(f(x)\),最大化通过取负转成最小化:

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

因此 AFT 主循环内部始终按“更小更优”处理。

2.2 上传代理优化

上传模式下,会先从数值数据训练一个随机森林代理模型:

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

然后把代理目标写成

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

最终导出时,程序再把最优值和收敛曲线映射回原始目标方向。

3. AFT 更新机制

3.1 感知潜力与跟踪距离

每轮迭代都会先计算两个时间相关系数:

$$ P_p(t)=0.1\log\!\Big(2.75\big(\tfrac{t}{T}\big)^{0.1}\Big) \tag{6} $$

$$ T_d(t)=2\exp\!\Big(-2\big(\tfrac{t}{T}\big)^2\Big) \tag{7} $$

其中 \(T\) 是最大迭代次数。

3.2 运动项

代码先为每个盗贼随机选一个跟随对象 followers[i],然后构造运动项

$$ m_i=T_d(t)\big(best_i-x^{ab}_i\big)r_1 +T_d(t)\big(x^{ab}_i-best_{f(i)}\big)r_2 \tag{8} $$

其中 \(r_1,r_2\sim U(0,1)\)。

3.3 三种更新情形

接着根据两次随机分支进入三类情形:

$$ x_i^{(t+1)}=g^{best}+s_i\,m_i, \qquad \text{若 } u_1\ge 0.5,\ u_2>P_p(t) \tag{9} $$

$$ x_i^{(t+1)}=l+T_d(t)(u-l)\odot r, \qquad \text{若 } u_1\ge 0.5,\ u_2\le P_p(t) \tag{10} $$

$$ x_i^{(t+1)}=g^{best}-s_i\,m_i, \qquad \text{若 } u_1<0.5 \tag{11} $$

其中 \(s_i=\mathrm{sign}(u_3-0.5)\in\{-1,1\}\)。

这说明当前实现并不是教科书里只写“搜索 / 跟踪 / 偷窃”概念描述,而是严格按三分支位置公式执行。

3.4 历史最优与阿里巴巴位置

若新位置仍在允许范围内,则 x_ab[i] 更新为新解;若新适应度优于该盗贼历史最优,则

$$ best_i\leftarrow x_i^{(t+1)} \tag{12} $$

并进一步更新全局最优 gbest

4. 边界处理、多次运行与输出结果

边界支持三种模式:

$$ x\leftarrow \begin{cases} \mathrm{clip}(x,l,u), & \texttt{clip}\\ \text{越界维度重采样}, & \texttt{random}\\ \text{保留原值并依赖可行性判断}, & \texttt{strict} \end{cases} \tag{13} $$

runs=R,程序会用 seed + r - 1 作为每次运行的随机种子,并统计

$$ \bar f=\frac{1}{R}\sum_{r=1}^{R} f_r \tag{14} $$

以及对应标准差。随后再用最佳运行的种子重跑一遍,只保留该次的初始群体与最终群体用于导出。

真实 Excel 工作表为:

  • Metrics
  • Parameters
  • InitialPopulation
  • FinalPopulation
  • Runs
  • Convergence
  • BestSolution
  • UploadedData(仅上传模式)
  • SurrogateMetrics(仅上传模式)
  • Charts

5. 实现说明与注意事项

从真实代码看,这个目录应明确写出以下实现特征:

  1. AFT 内部统一按最小化执行,最大化是通过目标取负实现的。
  2. PpTd 都是显式时间函数,不是固定常数。
  3. strict 边界模式下,越界解不会被裁剪,只会因为 _within_bounds() 失败而不更新 x_ab 与历史最优。
  4. 上传模式本质是“随机森林代理模型 + AFT”,并且会把训练集上的 rmse/mae/r2 写入结果表。
  5. 多次运行时,导出的 InitialPopulationFinalPopulation 只对应最佳运行,不是所有运行的拼接结果。

6. 论文写作模板

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

“本文采用阿里巴巴四十大盗优化算法对连续变量优化问题进行求解。首先,在给定搜索边界内初始化种群,并根据目标函数或上传代理模型计算个体适应度;其次,结合算法内部的时间调度参数与随机扰动机制,对个体位置进行迭代更新,并在每轮更新后执行边界处理与贪心保优;随后,对多次独立运行结果进行均值与稳定性统计;最后,输出收敛曲线、最优解、最优适应度及运行汇总结果,用于分析算法的搜索效果与鲁棒性。”

7. 单篇终审补充

7.1 表格标题模板

  • Metrics 表可写为:表X AFT 多次独立运行统计结果。
  • Parameters 表可写为:表X AFT 参数设置与问题边界说明。
  • Runs 表可写为:表X AFT 各次运行最优值对比。
  • Convergence 表可写为:表X AFT 逐代最优适应度变化。
  • BestSolution 表可写为:表X AFT 求得的最优解向量。

7.2 图表题注模板

  • convergence.png 可写为:图X 阿里巴巴四十大盗优化算法收敛曲线。
  • best_fitness_boxplot 对应图可写为:图X AFT 多次运行最优值分布箱线图。

7.3 结果解释模板段落

“由 MetricsRunsBestSolution 可见,AFT 在多次独立运行下能够得到较稳定的最优目标值,且最优解向量在重复实验间没有出现异常漂移。图X 所示 convergence.png 表明算法在前期具有较快的搜索改进速度,后期逐步趋于稳定。若同时导出了箱线图,则可进一步结合其分布宽度评价算法的鲁棒性。对于上传代理优化场景,应同步报告 SurrogateMetrics,以说明最优结果的代理模型可信度。”

7.4 全量强化补充

本次全量强化绑定的真实上传验证目录为 具体的算法3/优化与多目标/AFT-阿里巴巴四十大盗/results/manual_upload_verify_20260328/AFT-阿里巴巴四十大盗分析结果_20260328_110351。主结果文件为 AFT_results_20260328_110351.xlsx,实际工作表为 MetricsParametersInitialPopulationFinalPopulationRunsConvergenceBestSolutionUploadedDataSurrogateMetricsCharts

同目录下实体图为 AFT_results_20260328_110351_plots/convergence_curve.png;复现再次运行后还会生成 aft_repro.xlsxaft_repro_plots/convergence_curve.png。论文中如果只陈述主实验,应优先引用首层 AFT_results_20260328_110351.xlsx 与对应主图,不要把复现再生产物混入主结果叙述。

复现脚本为 repro_aft.py,其参数中 problem_mode = 'upload_surrogate',输入文件口径为 source_file = 'repro_inputs/aft_sample.xlsx',并在运行时解析为结果目录下的 repro_inputs/aft_sample.xlsx。因此这篇文档应明确写成“上传代理优化模式的 AFT 复现”,同时结合 UploadedDataSurrogateMetrics 解释代理模型来源和拟合可靠性。

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

  • 当前上传验证主结果目录应写作 具体的算法3/优化与多目标/AFT-阿里巴巴四十大盗/results/manual_upload_verify_20260328/AFT-阿里巴巴四十大盗分析结果_20260328_110351
  • 正文应围绕 MetricsParametersInitialPopulationFinalPopulationRunsConvergenceBestSolutionUploadedDataSurrogateMetricsCharts 来写。
  • 图证应对应 AFT_results_20260328_110351_plots/convergence_curve.png,并把主结果和 aft_repro.xlsx 区分开。
  • 复现脚本应按 repro_aft.py + repro_inputs/aft_sample.xlsx 的口径说明,并标明当前是上传代理优化模式。