正在加载中...

展开本页目录
算法教程CSA-变色龙群优化

CSA-变色龙群优化

No.177 · 在线教程

CSA-变色龙群优化 的真实核心位于:

CSA-变色龙群优化

1. 方法概述

CSA-变色龙群优化 的真实核心位于:

  • core/csa.py
  • core/csa_calculator.py
  • core/excel_handler.py
  • core/benchmarks.py

这份实现对应 Chameleon Swarm Algorithm。其主循环同时包含:

  1. 基于个体历史最优与全局最优的探索更新
  2. 速度驱动的猎捕更新
  3. 个体历史最优与全局最优的贪心刷新

设第 \(i\) 个体位置为 \(x_i^{(t)}\),速度为 \(v_i^{(t)}\),历史最优为 \(p_i^{(t)}\),群体最优为 \(g^{(t)}\)。

2. 时间调度参数

当前实现按时间计算四个核心系数。首先是惯性样式系数

$$ \omega(t)=\Big(1-\frac{t}{T}\Big)^{\rho\sqrt{t/T}} \tag{1} $$

其次是两个随时间变化的搜索系数

$$ p_1(t)=p_{1,0}\exp\!\Big(-2\big(\tfrac{t}{T}\big)^2\Big) \tag{2} $$

$$ p_2(t)=\frac{p_{2,0}}{1+\exp\!\big(\frac{-t+T/2}{100}\big)} \tag{3} $$

以及一个衰减项

$$ \mu(t)=\gamma\exp\!\Big(-\big(\alpha\tfrac{t}{T}\big)^\beta\Big) \tag{4} $$

这些公式都直接写在 core/csa.py 中,不是 UI 假参数。

3. 位置与速度更新

3.1 探索分支

代码以 0.9 的概率进入基于群体信息的探索更新:

$$ x_i^{(t+\frac{1}{2})} =x_i^{(t)} +p_1(t)\big(p_{k(i)}^{(t)}-x_i^{(t)}\big)r_1 +p_2(t)\big(g^{(t)}-x_i^{(t)}\big)r_2 \tag{5} $$

其中 \(p_{k(i)}^{(t)}\) 是随机抽到的另一个个体历史最优,\(r_1,r_2\sim U(0,1)\)。

3.2 跳跃分支

其余 0.1 的概率会围绕全局最优执行重定位:

$$ x_i^{(t+\frac{1}{2})} =g^{(t)}+\mu(t)\Big((u-l)\odot r+l\Big)\odot s \tag{6} $$

其中 \(s\in\{-1,1\}^d\) 是随机符号向量。

3.3 速度更新与猎捕位移

随后不管来自哪一条分支,都会继续做速度更新:

$$ v_i^{(t+1)} =\omega(t)v_i^{(t)} +p_1(t)\big(p_i^{(t)}-x_i^{(t+\frac{1}{2})}\big)r_3 +p_2(t)\big(g^{(t)}-x_i^{(t+\frac{1}{2})}\big)r_4 \tag{7} $$

再利用加速度形式推进位置:

$$ x_i^{(t+1)} =x_i^{(t+\frac{1}{2})} +\frac{\big(v_i^{(t+1)}\big)^2-\big(v_i^{(t)}\big)^2}{2a(t)} \tag{8} $$

其中

$$ a(t)=2590\big(1-e^{-\log t}\big) \tag{9} $$

但由于 \(t=1\) 时理论上 \(a(1)=0\),代码专门把它钳成 1e-10,避免首轮出现除零。

3.4 历史最优与群体最优

若当前位置更优,则刷新个体历史最优:

$$ p_i^{(t+1)}= \begin{cases} x_i^{(t+1)}, & f(x_i^{(t+1)})<f(p_i^{(t)})\\ p_i^{(t)}, & \text{否则} \end{cases} \tag{10} $$

随后全局最优取所有个体历史最优里的最优者。

4. 上传代理优化与输出结果

上传模式下,程序会先训练随机森林代理模型:

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

再把 spec.objective 传给 CSA 做最小化搜索。若上传方向为 max,则该方向已经编码进 spec.objective 里,最终导出时再恢复原始口径。

真实 Excel 工作表为:

  • 原始数据
  • 参数
  • 边界设置
  • 运行汇总
  • 收敛曲线
  • 最佳解
  • UploadedData(上传模式)
  • SurrogateMetrics(上传模式)
  • 结果解读
  • 图表清单

其中 运行汇总 保存的不是多次运行记录,而是单次优化后的若干统计量,例如 best_fitnesscurve_meancurve_std

5. 实现说明与注意事项

从真实代码看,这个目录有几个必须写清的实现细节:

  1. c1c2 虽然作为参数暴露出来,但在 core/csa.py 主循环里实际上没有被使用。
  2. 代码里写了 _rotation(),但主循环明确注释掉了旋转阶段,所以当前版本并不会执行旋转更新。
  3. 为避免首轮除零,a(t) 在 \(t=1\) 时被强制替换为很小的正数,这属于实现层面的数值修补。
  4. 当前实现没有 n_runs 多次运行逻辑,只有单次优化。
  5. 上传模式本质仍然是“随机森林代理模型 + CSA 搜索”,而不是 CSA 直接对原始样本表进行运算。

6. 论文写作模板

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

“本文采用变色龙群优化算法对连续变量优化问题进行求解。首先,在给定边界内初始化个体位置、速度、个体历史最优和群体最优,并依据时间计算惯性样式系数及多组搜索调度参数;其次,个体以较高概率执行基于历史最优与全局最优的探索更新,以较低概率执行围绕群体最优的跳跃重定位;随后,再结合速度驱动的猎捕位移更新当前位置,并以贪心方式刷新个体历史最优与群体最优;最后,输出最优解、运行汇总、收敛曲线和代理优化结果,用于评价算法的寻优效果。”

7. 单篇终审补充

7.1 表格标题模板

  • 运行汇总 表可写为:表X CSA 最优值与收敛统计汇总。
  • 收敛曲线 表可写为:表X CSA 各迭代最优适应度变化。
  • 最佳解 表可写为:表X CSA 求得的最优解向量。
  • 图表清单 表可写为:表X CSA 导出图表索引。

7.2 图表题注模板

  • convergence.png 可写为:图X 变色龙群优化算法收敛曲线。

7.3 结果解释模板段落

“由 运行汇总收敛曲线最佳解 可见,CSA 在当前实现下能够通过探索更新、跳跃重定位和速度驱动猎捕位移逐步逼近更优区域。图X 所示 convergence.png 展示了最优适应度随迭代的变化过程,可据此判断算法是在前期快速改进还是在后期缓慢逼近最优值。由于当前版本未启用旋转阶段且只执行单次运行,因此论文中应如实写作单次优化结果,而不宜将其表述为包含完整多次重复试验的稳定性结论。”

7.4 全量强化补充

本次全量强化绑定的真实结果目录为 具体的算法3/优化与多目标/CSA-变色龙群优化/results/CSA-变色龙群优化分析结果_20260324_012045。主结果文件为 CSA-变色龙群优化分析结果_20260324_012045.xlsx,实际工作表为 原始数据参数边界设置运行汇总收敛曲线最佳解结果解读图表清单。当前主图文件为 charts/convergence.png

这篇文档需要特别把“主程序支持上传代理”和“当前复现实例是 benchmark 函数”区分开写。虽然该工作簿中含有 原始数据,但当前 repro_csa.py 并没有使用 repro_inputs 或上传文件,而是直接把 objective_name 设为 F1,并将 output_dir 写成相对目录 results。也就是说,这个结果目录对应的是标准测试函数口径的实跑与复现,不是上传样本驱动复现。

因此正文里若说明可复现性,应写成“CSA 支持上传代理优化,但当前绑定证据目录的 repro 实例采用 benchmark/F1 问题直接复算”。不要把这一份 repro_csa.py 误写成 repro_inputs/... 驱动,也不要把 原始数据 表泛化理解成来自用户上传表的副本;在这类优化算法中,它更接近求解过程或问题配置关联数据的导出结果。

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

本篇对应的软件源码目录是 具体的算法3/优化与多目标/CSA-变色龙群优化。软件实现提供优化模式与上传数据代理优化模式,上传模式将 csv/xlsx/xls 数值表转成随机森林代理问题后再执行 CSA。理论部分关于变色龙搜索、速度更新、跳跃重定位和猎捕阶段可以保留,但说明软件结果时必须以工作簿中的 ProblemCSA_Paramsproblem_mode 为准。

当前较新的代表性目录为 results/CSA-变色龙群优化分析结果_20260517_121004-优化模式results/CSA-变色龙群优化分析结果_20260517_121016-上传数据代理优化。主工作簿同时保留英文审计表和中文说明表,包括 SummaryProblemCSA_ParamsBoundsRun_SummaryHistory_MeanHistory_AllBest_SolutionCharts参数边界设置运行汇总稳定性统计收敛曲线最佳解最佳适应度结果解读图表清单结果说明;上传模式额外包含 UploadedProblemUploadedDataSurrogateMetrics。如果正文使用中文表名,应在附录或字段说明中保留英文表对应关系,便于审计。

当前稳定图表为 charts/convergence.png,用于展示最优目标值随迭代变化。复现脚本位于 复现代码/优化模式/复现代码/上传数据代理优化/,上传模式输入副本为 repro_inputs/csa_sample.xlsx,复现结果进入 repro_outputs/。旧文中提到 benchmark/F1 的历史结果可以作为旧证据保留,但当前较新结果已能覆盖上传代理模式,因此用户说明中应优先按最新两类模式解释。