我知道每个粒子都是特定功能的解决方案,每个粒子和群体都在不断寻找最佳解决方案。如果在第一次迭代后找到全局最佳值,并且没有新的粒子被添加到混合中,那么循环不应该退出并且找到的第一个全局最佳粒子是最合适的解决方案吗?如果是这种情况,那么PSO比仅仅迭代列表更好。
答案 0 :(得分:5)
你的术语有点过时了。简单PSO是搜索向量x,其最小化一些标量目标函数E(x)。它通过创建许多候选向量来实现。称他们为x_i。这些是“粒子”。它们在位置和变化率上随机初始化,也称为速度,这与移动粒子的概念一致,即使该粒子可能具有多于3个维度。
简单的规则描述了位置和速度如何随时间变化。选择规则使得每个粒子x_i随机地沿着减小E(x_i)的方向移动。
规则通常涉及跟踪“到目前为止看到的单个最佳x_i值”,并且进行调整以使所有粒子倾向于通过随机变化朝向最佳值。因此,粒子像嗡嗡作响的蜜蜂一样聚集在一起朝着共同的目标前进,但是由于个体蜜蜂的许多偏差,随着时间的推移,会导致共同的目标发生变化。
令人遗憾的是,有些文献称这一目标或迄今为止所见的最佳粒子值是“全球最小值”。在优化中,全局最小值具有不同的含义。全局最小值(当最好的“关系”时可以有多个)是x的值 - 在可能的x值的整个域中 - 产生 唯一的最小可能值E(x)的
PSO绝不保证找到全局最小值。事实上,你的问题有点荒谬,因为当找到全局最小值时,通常永远不会知道。你好吗?在大多数问题中,你甚至不知道E的梯度(它给出了将E取向为较小值的方向,即下坡)。这就是您首先使用PSO的原因。如果你知道渐变,你几乎可以肯定使用数字技术,比PSO更快地找到答案。如果没有渐变,您甚至无法确定是否已找到 local 最小值,更不用说全局
了。相反,当找到本地最小值时,您通常可以做的最好的事情是“猜测”。你可以通过让系统运行,同时观察“到目前为止看到的最佳粒子”的更新频率和频率。当变化变得不频繁和/或变小时,你宣布胜利。
另一种说法就是PSO用于减少E(x)总是好的问题和“你会得到任何你能得到的东西”的问题,无论你是否有信心你得到的是最好的。例如。你是沃尔玛,任何寻找商店的方式都可以节省/赚更多的钱。
以这一切为背景,让我们回顾一下您的具体问题:
如果在第一次迭代后发现全局最佳,并且没有新的粒子被添加到混合中,那么循环是否应该退出并且第一个全局最佳找到的是最合适的解决方案?
没有答案,因为没有办法确定全球最佳状态。嗡嗡声的粒子群可能会在下一次迭代或从现在开始的十万亿次迭代中找到新的最佳状态。你很少知道。
如果是这样的话,是什么让PSO比只是遍历列表更好?
我并不完全理解你的意思。 PSO模仿了虫群和群体动物等生物实体的行为方式。以这种方式,它类似于遗传算法,模拟退火,神经网络和使用以下逻辑的其他解决方案查找器系列:物理和生物的自然都具有已知良好的优化过程。让我们利用它们并尽力在软件中模拟它们。我们使用自然比我们自己设计的任何简单迭代做得更好。
答案 1 :(得分:0)
给定一个函数,粒子群试图找到解决方案(向量),该解决方案将最小化(或有时最大化,取决于问题)该函数的值。
如果您碰巧知道解决方案的最小值(假设为了论证,则为0)AND 如果你足够幸运能够生成第一步为0的解决方案,那么你可以退出循环并停止算法。
那说;您在初始化时随机生成该解决方案的概率无限小。
在大多数实际术语中,当您想要使用PSO来解决时,很可能您不会知道最小值,因此您将无法将其用作停止条件。
粒子群优化,优化过程不是随机初始步骤发生的方式,而是通过使初始解与社会和认知成分确定的速度相适应而发生的修改。
此调整将使粒子沿着全局最佳和当前最佳之间的线移动 - 希望它们之间有更好的解决方案。
我希望以某种方式回答这个问题
答案 2 :(得分:0)
只是为了回答一些问题,你的问题似乎与#34的常见问题有关;何时我应该停止我的PSO?"启动群体时每个人都面临的一个问题(如上所述)你永远不知道你是否达到了全球最佳解决方案(除了非常具体的目标函数)。
大多数PSO实施中已经存在的常用技巧: 1-只是限制了一些迭代次数,因为处理时间总是存在限制(并且您可以通过自我评估评估目标所花费的时间来实现将迭代次数转换为时间限制的不同方法)。 当优化进度开始无关紧要时,请停止算法。