分散飞虫优化算法 (Fine-Tuning Dispersive Flies Optimisation)
直译的话其实是分散苍蝇优化,有点幽默hhh
前言
本文属于搬运内容,让我们向原作者致敬!向 Leon Fedden 致敬! 原文链接将附于文章末尾。本文章为开源内容。希望诸位在学习之后也能如此一般开枝散叶!
这是一个自然启发或归因的算法系列的第三部分。您可以通过以下链接找到第一部分(关于没有免费的午餐定理)和第二部分(DFO 的应用)。下一部分将介绍随机扩散搜索(Stochastic Diffusion Search)。
这篇文章只是对 DFO 算法的简要回顾。我将重点介绍其在各种误差表面上的关键应用特点。如果您想了解 DFO 的基础知识,建议先阅读系列文章的第二部分(链接见上文)。(这里博主随后会补上的,稍等哈~)
研究 DFO 这样的算法非常有趣,因为它涉及构建极其简单的智能体,这些智能体之间的相互作用会产生复杂的行为,这些行为可以应用于解决多种类型的问题。
快速定位误差表面的全局最优解(error surface’s global optimum)
对于误差表面这一含义不理解的朋友请看本文!点击这里!QAQ(博主用心搬运的呢)
下图中,您一眨眼就会错过的是 DFO 快速找到误差表面全局最优解的过程。这里,DFO 正在最大化问题表面(在图表标题中称为“奖励”)。问题表面的最大值显示为红色,最小值为蓝色。小黑点表示苍蝇种群,较大的白点表示当前迭代中表现最佳的苍蝇。
QAQ(这其实应该是个动图GIF,之后会优化支持)

如果问题更复杂呢?
假设问题表面是动态变化的,并且具有多峰性。这无疑是一个更难的挑战。如果仍然以上述方式天真地应用 DFO,将会出现效果不佳的情况,如下图所示:

如上所示,当前迭代的奖励值很少达到最优。此外,表面的探索也不尽如人意。这种天真的解决方案存在以下几个问题:
- 随机化方法不够优化
- 缺乏精英主义(即没有保护最佳个体)
- 最重要的是,更新苍蝇位置的方法存在问题。
改进方法
1. 优化位置重置规则
我们可以通过改变当均匀分布采样值小于扰动阈值时苍蝇位置坐标的重置方式来实现小幅改进。在天真的算法中,每只苍蝇的位置在每个维度上是独立更新或随机重置的,这往往导致苍蝇在边界上被限制为沿垂直线或水平线重置(如上图所示)。

通过改进,我们可以让每只苍蝇的所有位置坐标完全随机重置,而不是仅在单个维度上进行。这种方法更具随机性。此外,还需将扰动阈值乘以维度数(这里是二维),以确保保留可比较数量的随机重置。
2. 添加精英主义规则
精英主义规则规定:表现最好的前 n 个苍蝇不会被更新或重置。这一贪婪策略可以确保我们不会降低表现最好的苍蝇的效率。
3. 改进位置更新规则
这是最关键的修改。在原始方法中,每只苍蝇的位置更新时,会移动到其最佳邻居的位置,并进一步向全局最佳苍蝇靠拢。这种方式隐含地假设问题是单峰分布的,因此对于多峰问题并不理想。
改进方法是:将苍蝇的位置更新为其最佳邻居的位置,并沿着从原始位置到最佳邻居位置的向量方向移动。
优化后的效果
上述改进后的结果如下所示——对于多峰问题,追踪效果明显提升:

感谢阅读!希望未来能再次吸引您的注意力!