粒子/遗传群优化算法中的粒子(代码方面)是什么?

What are the particles (code wise) in Particle / Genetical Swarm Optimization algorithm?

编辑 嗨,我正在尝试实施粒子(或遗传)群优化。然而,我已经卡在第一步了...

我对如何初始化粒子以及这些粒子(就代码而言)是什么感到困惑。

我找到了有关算法(单独)和实现的各种信息,但没有找到我想要的信息...

谁能解释一下,好吗?

谢谢。

安德莉亚

如果您熟悉 Python,我使用 deap 学习了遗传算法和 pso。他们有一些优秀的教程和文档。

定义: PSO 通过拥有大量候选解决方案(此处称为粒子)并根据简单的数学公式在搜索 space 中四处移动这些粒子来优化问题。粒子的移动由搜索中找到的最佳位置引导-space 当粒子找到更好的位置时更新这些位置。

什么是粒子?

粒子有当前位置、速度和过去位置的记录。每个粒子都有自己的速度和位置更新规则。

优化搜索是如何工作的?

您 运行 算法进行给定的迭代次数。在每次迭代中更新每个粒子的速度和位置。然后希望你找到最好的解决方案或者足够好的解决方案。

具体例子。

假设您的搜索 objective 是为了寻找星星。在每次迭代中,我们都会找到最接近找到恒星的粒子。然后沿该方向移动所有其他粒子。

图片由 wirelesstech

提供

如果您要问 "How do I represent each particle in my program",那么您可能希望它们成为您要编写的 class 的对象。例如,您可能有一个 "Particle" class 包含该粒子的位置和状态信息,然后您将拥有这些粒子的集合,并且在算法的每次新迭代中您可以循环通过那个集合来对每个粒子做任何必须发生的事情。 – 凯文·威尔斯