【问题标题】:How does Particle Swarm Optimization reach a final solution?粒子群优化如何达到最终解决方案?
【发布时间】:2014-04-30 00:14:41
【问题描述】:

我明白每个粒子都是特定函数的解,每个粒子和群体都在不断地寻找最佳解。如果在第一次迭代后找到了全局最佳值,并且没有将新粒子添加到混合中,那么循环不应该退出并且找到的第一个全局最佳值是最合适的解决方案吗?如果是这种情况,那么使 PSO 比仅遍历列表更好。

【问题讨论】:

  • 据我所知,你永远不知道你是否已经达到了一个全局的解决方案。验证这一点需要枚举解决方案数量中的多项式。
  • 据我了解,在每次迭代中,粒子都会朝着当前的最佳解决方案(局部或全局)移动。如果您不知道当前的最佳解决方案,粒子不会只是随机移动而不是蜂拥而至使整个过程无用吗?
  • 确实,当前最佳解决方案。但是您的问题询问了有关 global 解决方案的问题。而且不可能有效地确定您是否达到了全局最优。
  • 我的措辞不好。一个例子可能会澄清我想问的问题。假设有 20 个粒子。 PSO 运行它的第一次迭代并找到当前的最佳解决方案。这不是所有粒子中最好的解决方案,我们可以在那里退出 PSO 吗?

标签: algorithm mathematical-optimization particle-swarm


【解决方案1】:

你的术语有点不对劲。简单 PSO 是对一个向量 x 的搜索,它使某个标量目标函数 E(x) 最小化。它通过创建许多候选向量来做到这一点。称他们为 x_i。这些是“粒子”。它们在位置和变化率(也称为速度)上随机初始化,这与移动粒子的概念一致,即使该粒子可能具有多于 3 个维度。

简单的规则描述了位置和速度如何随时间变化。选择规则使得每个粒子 x_i 趋向于随机地向减少 E(x_i) 的方向移动。

这些规则通常涉及跟踪“迄今为止看到的单个最佳 x_i 值”并进行调整,以便所有粒子通常倾向于随机变化的最佳值。因此,这些粒子像嗡嗡作响的蜜蜂一样蜂拥而至,作为一个群体朝着一个共同目标前进,但随着时间的推移,个体蜜蜂会出现许多偏差,这会导致共同目标发生变化。

不幸的是,一些文献将此目标或迄今为止看到的最佳粒子值称为“全局最小值”。在优化中,全局最小值有不同的含义。全局最小值(当存在“关系”时可能有多个)是 x 的值 - 在可能的 x 值的整个域中 - 产生 the 唯一的最小可能值E(x)。

PSO 绝不保证找到全局最小值。实际上,您的问题有点荒谬,因为通常永远不知道何时找到全局最小值。你会怎么做?在大多数问题中,您甚至都不知道 E 的梯度(它给出了将 E 取为较小值的方向,即下坡)。这就是您首先使用 PSO 的原因。如果您知道梯度,您几乎可以肯定使用比 PSO 更快地找到答案的数值技术。如果没有渐变,您甚至无法确定是否找到了局部最小值,更不用说全局了。

相反,您通常能做的最好的事情就是在找到局部最小值时“猜测”。为此,您可以让系统运行,同时观察“迄今为止看到的最佳粒子”的更新频率和更新程度。当更改变得不频繁和/或很小时,您就宣布胜利。

另一种表达方式是,PSO 用于解决以下问题.例如。您是沃尔玛,任何可以节省/赚更多钱的商店的定位方式都很有趣。

以所有这些为背景,让我们回顾一下您的具体问题:

如果在第一次迭代后找到了全局最佳值,并且没有新粒子添加到混合中,那么循环不应该退出并且找到的第一个全局最佳值是最合适的解决方案吗?

没有答案,因为无法确定是否找到了全球最佳。这群嗡嗡作响的粒子可能会在下一次迭代或从现在开始的十万亿次迭代中找到新的最佳状态。你很少知道。

如果是这种情况,是什么让 PSO 比仅遍历列表更好?

我不太明白你的意思。 PSO 正在模仿成群的生物实体(如虫子和畜群动物)的行为方式。通过这种方式,它类似于遗传算法、模拟退火、神经网络和其他使用以下逻辑的解决方案查找器系列:自然,无论是物理的还是生物的,都具有已知良好的优化过程。让我们利用它们并尽最大努力在软件中模拟它们。我们利用自然比我们自己设计的任何简单迭代做得更好。

【讨论】:

  • 关于“遍历列表”:如果这意味着遍历所有可能的组合,那是不现实的,因为the size of the search space 用于 NP-complete 或 NP-hard 问题。
【解决方案2】:

给定一个函数,粒子群试图找到一个解决方案(一个向量),该解决方案将最小化(或有时最大化,取决于问题)该函数的值。

如果你碰巧知道解的最小值(假设为论证,它是 0)并且 如果您有幸在第一步中生成了为您提供 0 的解决方案,那么您可以退出循环并停止算法。

这就是说;您在初始化时随机生成该解决方案的概率无限很小。

实际上,当您想使用 PSO 求解时,您很可能不知道最小值,因此您无法将其用作停止条件。

粒子群优化,优化过程不是随机初始步骤发生的方式,而是通过以社会和认知成分确定的速度适应初始解而发生的修改。

  • 社交组件由当前评估的群体全局最佳解决方案组成
  • 认知组件由当前解决方案看到的最佳位置组成。

此调整将使粒子沿着全局最佳和当前最佳之间的一条线移动 - 希望它们之间有更好的解决方案。

我希望能以某种方式回答这个问题

【讨论】:

    【解决方案3】:

    只是在回答中添加一些内容,您的问题似乎与“我什么时候应该停止我的 PSO?”这一常见问题有关。每个人在启动 swarm 时都会面临一个问题,因为(如上所述)您永远不知道您是否达到了全局最佳解决方案(非常具体的目标函数除外)。

    大多数 PSO 实现中已经存在的常用技巧: 1-只是限制迭代次数,因为处理时间总是有限制的(并且您可以通过自我评估评估目标所花费的时间来实施不同的方法将迭代次数转换为时间限制)。 2- 当优化的进展开始变得微不足道时停止算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多