编辑嗨,我正在尝试实现粒子(或遗传)群优化。但是,我已经陷入了第一步……
我对如何初始化粒子以及这些粒子(就代码而言)是什么感到困惑。
我找到了关于算法(单独)和实现的各种信息,但没有找到我想要的信息......
谁能解释一下,好吗?
谢谢。
安德里亚。
编辑嗨,我正在尝试实现粒子(或遗传)群优化。但是,我已经陷入了第一步……
我对如何初始化粒子以及这些粒子(就代码而言)是什么感到困惑。
我找到了关于算法(单独)和实现的各种信息,但没有找到我想要的信息......
谁能解释一下,好吗?
谢谢。
安德里亚。
如果您熟悉 Python,我使用deap学习了遗传算法和 pso 。他们有一些优秀的教程和文档。
定义: PSO 通过拥有大量候选解决方案(这里称为粒子)并根据简单的数学公式在搜索空间中移动这些粒子来优化问题。粒子的运动由搜索空间中找到的最佳位置引导,这些位置随着粒子找到更好的位置而更新。
什么是粒子?
粒子具有当前位置、速度和过去位置的记录。每个粒子都有自己的速度和位置更新规则。
优化搜索如何工作?
您针对给定的迭代次数运行算法。在每次迭代中更新每个粒子的速度和位置。然后希望您找到最好的解决方案或足够好的解决方案。
具体例子。
想象一下,您的搜索目标是找到星星。在每次迭代中,我们都会找到最接近恒星的粒子。然后沿该方向移动所有其他粒子。
图片由无线技术提供
如果您问“我如何表示程序中的每个粒子”,那么您可能希望它们成为您将编写的类的对象。例如,您可能有一个“粒子”类,其中包含该粒子的位置和状态信息,然后您将拥有这些粒子的集合,并且在算法的每次新迭代中,您都可以遍历该集合以执行任何操作必须发生在每个粒子上。——凯文·威尔斯