文章 "群体优化算法:粒子群(PSO)"

 

新文章 群体优化算法:粒子群(PSO)已发布:

在本文中,我将研究流行的粒子群优化(PSO)算法。 之前,我们曾讨论过优化算法的重要特征,如收敛性、收敛率、稳定性、可伸缩性,并开发了一个测试台,并研究了最简单的 RNG 算法。

由于我采用了与图例 2 中描述的本系列的第一篇文章(我将在未来继续这样做)相同的结构来构建算法,因此我们将算法连接到测试台并不困难。

当在测试台运行时,我们将看到类似于下面显示的动画。 在这种情况下,我们可以清楚地看到一群粒子的行为。 群体行为真的很像自然界中的群体。 在函数的热图上,它以密集云的形式移动。

您可能还记得,黑色圆圈表示函数的全局最优值(最大值),而黑点表示在当前迭代时获得的搜索算法的最佳平均坐标。 我解释一下平均值的来源。 热图在坐标上是二维的,正在优化的函数可以包含数百个变量(测量值)。 故此,结果按坐标取平均值。

n1

  基于 Skin 测试函数的 PSO

n2

  基于 Forest 测试函数的 PSO

n3

  基于 Megacity 测试函数的 PSO

正如您在动画中看到的,测试表明 PSO 可以很好地应对平滑的第一个函数,但仅在优化两个变量的时候。 随着搜索空间维度的增加,算法的效率急剧下降。 这在第二个和第三个离散函数上尤其明显。 结果明显比上一篇文章中描述的随机算法更差。 我们将回到结果,并在形成结果比较表格时详细讨论它们。

作者:Andrey Dik

 
很好的算法比较!我猜想,如果在整个搜索过程中对惯性权重项(w)进行线性阻尼,就能增强蜂群的局部搜索能力,加快收敛速度。大多数文献建议将 w 的下限 设定为 0.4。我发现 PSO 方案在使用该值时对各类问题都非常有效。
 
koehnw 下限 设定为 0.4。我发现 PSO 方案在使用该值时对各类问题都非常有效。

感谢您的评论!是的,可以将系数与迭代联系起来,就像一群灰狼在优化算法中做的那样。

遗憾的是,并非所有文章都有英文版。
群体优化算法:蚁群优化 (ACO) https://www.mql5.com/ru/articles/11602
群体优化算法:人工蜂群 (ABC) https://www.mql5.com/ru/articles/11736
群体优化算法:一群灰狼的优化 (GreyWolf Optimizer - GWO):https://www.mql5.com/ru/articles/11785

估算表
 

这些关于元启发式优化技术的 文章太棒了!安德烈,你的工作非常出色,你能与我们分享这么多经验,真是令人难以置信,谢谢你!

@METAQUOTES 请考虑在优化器中实现这些元启发式优化目标!

用户可以在 OnTester() 中轻松设置:

OptimizerSetEngine("ACO"); // 蚂蚁群优化
OptimizerSetEngine("COA")); // cuckoo 优化算法
OptimizerSetEngine("ABC")); // 人工蜂群
OptimizerSetEngine("GWO")); // 灰狼优化器
OptimizerSetEngine("PSO")); // 粒子群优化



来自巴西的谢意

 
Vinicius Barenho Pereira #:

这些关于元启发式优化技术的 文章太棒了!安德烈,你的工作非常出色,你能与我们分享这么多经验,真是令人难以置信,谢谢你!

@METAQUOTES 请考虑在优化器中实现这些元启发式优化目标!

用户可以在 OnTester() 中轻松设置:


来自巴西的谢意

感谢您的评论!每一篇新文章对我来说都是一个新发现,我很高兴您与我同在。

 
谢谢你,但我恐怕已经超出了我的知识范围。