BA-蝙蝠算法
BA-蝙蝠算法 的真实核心位于:
BA-蝙蝠算法
1. 方法概述
BA-蝙蝠算法 的真实核心位于:
core/ba_calculator.pyui/upload_widget.pyui/results_widget.pyutils/problem_definition.py
这份实现对应 Bat Algorithm,完整维护了经典 BA 的几组状态量:
- 位置
pop - 速度
vel - 频率
freq - 响度
loudness - 脉冲率
pulse_rate
设第 \(i\) 只蝙蝠在第 \(t\) 轮的位置为 \(x_i^{(t)}\),全局最优位置为 \(x_\star^{(t)}\)。
2. 目标函数与问题模式
2.1 基准函数与上传代理
基准模式支持:
SphereRosenbrockRastriginAckleyGriewankSchwefel
上传模式下,会先训练随机森林代理模型:
$$ \hat y(x)=\mathrm{RandomForestRegressor}_{300}(x) \tag{1} $$
与本窗口其它算法不同,这个目录在上传模式中直接把
$$ f(x)=\hat y(x) \tag{2} $$
作为真实目标值传给 BA;若用户选择最大化,则 _run_single() 直接改用“大者更优”的比较函数,而不是显式取负。
2.2 多次运行统计
若运行 \(R\) 次,程序会记录每次最优值 \(f_r^\star\),并计算
$$ \bar f=\frac{1}{R}\sum_{r=1}^{R} f_r^\star \tag{3} $$
以及样本标准差,用于评价稳定性。
3. BA 更新公式
3.1 频率、速度与全局搜索
对第 \(i\) 只蝙蝠,代码先采样
$$ \beta_i\sim U(0,1) \tag{4} $$
并计算频率
$$ f_i=f_{\min}+(f_{\max}-f_{\min})\beta_i \tag{5} $$
随后更新速度与候选位置:
$$ v_i^{(t+1)}=v_i^{(t)}+\big(x_i^{(t)}-x_\star^{(t)}\big)f_i \tag{6} $$
$$ \tilde x_i^{(t+1)}=x_i^{(t)}+v_i^{(t+1)} \tag{7} $$
3.2 局部搜索
若随机数满足
$$ r>\texttt{pulse\_rate}_i \tag{8} $$
则代码改为围绕当前全局最优做局部搜索:
$$ \tilde x_i^{(t+1)}=x_\star^{(t)}+\varepsilon\cdot \texttt{local\_step}\cdot \overline{A}^{(t)}, \qquad \varepsilon\sim U(-1,1)^d \tag{9} $$
其中 \(\overline{A}^{(t)}\) 是当前种群响度均值。
3.3 接受准则
候选解满足“更优且随机数小于响度”时才被接受:
$$ x_i^{(t+1)}= \begin{cases} \tilde x_i^{(t+1)}, & \tilde f_i \text{ 更优且 } u<A_i^{(t)}\\ x_i^{(t)}, & \text{否则} \end{cases} \tag{10} $$
3.4 响度与脉冲率更新
一旦接受新解,响度和脉冲率按经典 BA 形式更新:
$$ A_i^{(t+1)}=\alpha A_i^{(t)} \tag{11} $$
$$ r_i^{(t+1)}=r_{0}\Big(1-e^{-\gamma (t+1)}\Big) \tag{12} $$
这里的 alpha 与 gamma 都来自 UI 参数页。
4. 输出结果与导出
真实 Excel 工作表为:
参数边界设置运行汇总收敛曲线最佳解最佳适应度结果解读UploadedData(上传模式)SurrogateMetrics(上传模式)图表清单初始群体初始速度最终群体最终速度
其中 初始速度 默认全为零,最终速度 反映了整个 BA 过程后保留下来的速度向量。
若维度为 2,代码还会额外尝试导出等高线与最优轨迹图;若 n_runs>1,则会再生成最优值箱线图。
5. 实现说明与注意事项
从真实代码看,这个目录应明确说明:
- 上传模式不是“代理目标取负后统一最小化”,而是直接把
predict_actual作为目标,再由minmax比较函数决定优劣。 - 局部搜索触发条件写成
rand > pulse_rate[i],这和部分教材中的不等号方向完全一致,但文档里最好写明。 - 新解只有在“更优且随机数小于当前响度”时才真正接受。
- 结果导出会保留初始/最终群体与速度矩阵,这在当前窗口其它优化算法里并不常见。
- 多次运行时,最终导出的
初始群体和最终群体只取第一次运行,不是所有运行的拼接结果。
6. 论文写作模板
可在论文“方法部分”中写为:
“本文采用蝙蝠算法对连续变量优化问题进行求解。首先,在给定边界内初始化蝙蝠种群的位置、速度、频率、响度和脉冲率,并根据目标函数确定初始全局最优解;其次,利用频率控制速度与位置更新,在需要时围绕当前全局最优解执行局部随机搜索;随后,依据‘候选解更优且随机数小于当前响度’的接受准则刷新个体状态,并同步更新响度与脉冲率;最后,输出最优解、最优适应度、收敛曲线以及初始/最终群体信息,用于分析算法的搜索行为与稳定性。”
7. 单篇终审补充
7.1 表格标题模板
运行汇总表可写为:表X BA 多次独立运行结果汇总。收敛曲线表可写为:表X BA 各迭代最优值变化。最佳解表可写为:表X BA 求得的最优解向量。最佳适应度表可写为:表X BA 最终最优适应度。初始群体与最终群体表可写为:表X BA 初始与最终种群状态对比。
7.2 图表题注模板
convergence.png可写为:图X 蝙蝠算法收敛曲线。- 二维等高线与最优轨迹图可写为:图X BA 在二维目标函数上的搜索轨迹。
- 多次运行箱线图可写为:图X BA 多次运行最优值分布箱线图。
7.3 结果解释模板段落
“由 运行汇总、最佳解 与 最佳适应度 可见,BA 能够通过频率调节、局部搜索和响度-脉冲率动态更新逐步逼近更优解。图X 所示 convergence.png 展示了算法在迭代中的最优值变化;若曲线在前期快速改善、后期平稳,则说明搜索已由全局探索逐渐过渡到局部精修。初始群体 与 最终群体 的对比还可用于分析种群在搜索后期的聚集程度。若 n_runs>1 并导出了箱线图,则应结合其分布范围讨论算法稳定性,而不是仅报告单次最优结果。”
7.4 全量强化补充
本次全量强化绑定的真实上传验证目录为 具体的算法3/优化与多目标/BA-蝙蝠算法/results/manual_upload_verify_20260328/BA-蝙蝠算法_结果_20260328_113216。主结果文件为 BA-蝙蝠算法_结果_20260328_113216.xlsx,实际工作表为 参数、边界设置、运行汇总、收敛曲线、最佳解、最佳适应度、结果解读、UploadedData、SurrogateMetrics、图表清单、初始群体、初始速度、最终群体、最终速度。
当前真实图位于 charts/ 子目录,包括 convergence.png 与 best_box.png。这说明本次结果目录实际保留了多次运行最优值分布图,但未导出二维轨迹图;论文若要讨论稳定性,可直接引用 best_box.png,不要保留并不存在的二维轨迹图占位。
复现脚本为 repro_ba.py,其输入口径为 source_file = 'repro_inputs/ba_sample.xlsx',且参数中显式保留 n_runs = 2 与 problem_mode = 'upload_surrogate'。因此这篇文档应把复现描述为“上传代理模式下、带两次独立运行统计的 BA 复现”,同时结合 SurrogateMetrics 说明代理模型误差与优化结果之间的关系。
8. 软件实现核查补充(2026-07)
本篇对应的软件源码目录是 具体的算法3/优化与多目标/BA-蝙蝠算法。软件实现把频率、响度、脉冲率、种群规模、迭代次数、多次运行等参数接入连续优化流程,并同时支持优化模式与上传数据代理优化模式。上传模式读取 csv/xlsx/xls 后训练随机森林代理模型,因此软件中的 best_fitness 在上传模式下是代理目标上的优化显示值,需要结合 SurrogateMetrics 解释。
当前较新的代表性目录为 results/BA-蝙蝠算法分析结果_20260517_112942-优化模式 与 results/BA-蝙蝠算法分析结果_20260517_113005-上传数据代理优化。主工作簿 BA_results_*.xlsx 包含 结果摘要、结果说明、字段说明、Summary、Problem、Algorithm_Params、Bounds、Run_Summary、History_Mean、History_All、Best_Solution、Convergence_BestRun、Explanation、Charts、Initial_Population、Initial_Velocity、Final_Population,优化模式还可包含 Final_Velocity;上传模式额外包含 UploadedProblem、UploadedData、SurrogateMetrics。这些表比理论公式更直接反映当前软件的实际计算链路。
图表当前稳定输出为 图表/convergence.png,部分历史目录还存在 best_box.png,但较新实跑不应默认写成必有箱线图。复现代码位于 复现代码/优化模式/ 或 复现代码/上传数据代理优化/,上传模式会复制输入到 repro_inputs/ba_sample.xlsx,并在 repro_outputs/ 中再生成一套工作簿、图表和复现脚本。文档中如果讨论种群演化,应优先引用 Initial_Population、Initial_Velocity、Final_Population、Final_Velocity 等实际工作表。