获取更多资讯,赶快关注上面的公众号吧!

文章目录

  • 粒子场优化Particle Field Optimization
    • PSO
    • Bare Bones Particle Swarm(BBPS)
    • Particle Field Optimization,PFO算法
    • 如何影响PFO抽象
    • PFO实现

粒子场优化Particle Field Optimization

加拿大的Nathan Bell和B. John Oommen于2015年,提出了一种新的、抽象的粒子群优化(PSO)系统视角,视图抛弃单个粒子构成的群体,而是通过 场(field)或分布(distribution) 来描述每个粒子。各种场的更新策略类似于汤普森采样(Thompson’s sampling)。通过这种抽象,提出了新的粒子场优化算法(Particle Field Optimization,PFO),从而利用这一新的视角来实现与传统PSO完全不同的模型和行为。

PSO

基本PSO可以参考之前的博文——群体智能之粒子群优化(PSO),这里不再赘述。

Bare Bones Particle Swarm(BBPS)

BBPS是PSO的一种变体,它试图模拟基本粒子群算法的高层行为,同时使用一种更简单的粒子更新策略。对基本粒子群优化系统的观察表明,即使没有复杂的速度和加速度分量,也可以实现非常相似的行为模式。此外,在系统处于群体停滞状态(即当个人和全局最佳点保持不变时)时,使用标准速度策略对单个粒子的观察产生了钟形曲线非常明显的直方图。通过这一现象导致可以推测:即不必处理粒子的速度和加速度,每个粒子只需对通过近似所观察到的直方图所构造的随机分布进行抽样就可以得到更新。

BBPS彻底消除了粒子的速度分量,仅通过采样高斯分布来确定粒子的下一位置。该高斯分布在每个维度上是随机构造和采样的,其均值为全局最优解个体历史最优的平均值,方差为全局最优解和个体最优解在各个维度上上的绝对距离。给定一个位置为X⃗i\vec{X}_{i}Xi​为的粒子iii,其个体最优点为P⃗i\vec{P}_{i}Pi​,全局最优点为P⃗g\vec{P}_{g}Pg​,则粒子的下一位置通过下式确定:

Pm→=P⃗i+P⃗g2,X⃗i=N→(Pm→,σ2→)\overrightarrow{P_{m}}=\frac{\vec{P}_{i}+\vec{P}_{g}}{2}, \quad \vec{X}_{i}=\overrightarrow{\mathcal{N}}\left(\overrightarrow{P_{m}}, \overrightarrow{\sigma^{2}}\right) Pm​​=2Pi​+Pg​​,Xi​=N(Pm​​,σ2)

其中N→\overrightarrow{\mathcal{N}}N表示逐个维度创建高斯随机向量的函数,且以Pm→\overrightarrow{P_{m}}Pm​​为中心,σ\sigmaσ是每个维度上的标准偏差向量,比例于P⃗i\vec{P}_{i}Pi​和P⃗g\vec{P}_{g}Pg​在每个维度上的绝对差值。

该更新策略比基本的粒子群速度策略稍微抽象一些,因为粒子不再在空间中飞行,但群体的一般行为保持不变。在更高的层次上,算法仍然涉及到一群在解空间中移动的粒子,这些粒子受到其个体最优位置的记忆和全局最优位置的通信的影响。

Particle Field Optimization,PFO算法

虽然BBPS引入了抽象的方法用于更新粒子的位置,但是如果仔细观察这种变化的后果,就有可能抽象到更高层次上,从而发现全新的视角。

首先分析一下,单个粒子在这两种模型的贡献是什么。在基本的PSO中,单个粒子包含:当前位置、当前速度和个体最优位置。为了确定下一次迭代中粒子的下一位置,这些分量都是必需的。粒子的在下一迭代中的位置取决于其当前位置和速度。更新后的速度反过来又取决于粒子的当前速度、个体最优位置和种群全局最优位置。粒子的每个分量都会对更新函数有贡献,必须进行维护以便在下一迭代中使用。

在BBPS模型中,移除了速度项,单个粒子只保留了当前位置和个体最优位置。然而,不同于基本PSO,粒子的更新不需要这两个分量,具体来说,下一迭代中粒子的位置与当前迭代中粒子的位置无关。当更新粒子时,下一位置是通过采样一个高斯随机分布来生成的,而这个高斯随机分布又是通过粒子的个体最优位置和全局最优位置来构造的。位置创建后,该位置只用于一个目的,即更新粒子的个体最优位置。之后,使用种群的个体最优位置更新全局最优位置,所以全局最优位置也不直接依赖于粒子的当前位置。

因此是可以将位置分量从模型中完全移除的,通过修改更新操作以直接处理粒子的个体最优位置同时保持等效行为,而不再存储和维护粒子的当前位置。对构造的随机分布进行采样,就可以得到一个新的位置,如果新位置的值优于个体最优位置的值,那么就使用新位置更新粒子个体最优位置。可以看出区别就在于这个新生成的位置是临时的,而不必为了下一代进行维护。该抽象模型下的算法行为保持不变,但是需要重新审视原始PSO中的隐喻和概念。

移除粒子的当前位置分量后,单个粒子现在只包含一个个体最优位置,粒子不再作为空间中的显式点存在。从概念上讲,粒子的个体最优位置是粒子对其迄今为止评价过的最优位置所保持的记忆,而全局最最优位置可以被认为是种群的集体记忆。这两个记忆定义了用于更新粒子的随机分布。尽管粒子不再作为空间中的一个显式点存在,我们可以相反地,把粒子在空间中的位置看作是由随机分布本身定义的。这是因为这个分布代表了粒子可能位置的概率场。从这个角度来看,粒子是以自身记忆和群体集体记忆定义的随机场存在的。

随着个体种群的新概念的出现,算法的高层视角发生了巨大的变化。一群粒子在空间中飞行的比喻不再恰当地描述算法的高级概念。相反,现在的算法由一群粒子场组成,这些粒子场以不同的方式在空间中移动。因为这些粒子场的位置被定义为随机分布,评估一个粒子场的当前位置是不确定的,所以这些粒子场不一定要移动去探索新的点。这些粒子场在空间中保持静止,直到个体的最优位置改变,或者种群的全局最优位置改变。这个粒子场的总体本身可以被看作是粒子的随机场,定义为由每个个体分布组成的混合分布。这个种群水平分布可以被认为是一个粒子群的抽象表示,代表下一个迭代中所有可能的粒子位置的概率分布。虽然行为是类似,但是这种高级概念的观点与BBPS算法有显著的不同。然而,有了这个新视角,就有可能探索改进或改变算法行为的新方向。

如何影响PFO抽象

有了BBPS算法的这个新视角,我们可以开始采取步骤,使用这种抽象的哲学来实现新算法。在这个抽象的BBPS模型中,种群中的每个个体在每次迭代中都会生成并评估一个新点,从而保持个体代表单个粒子的概念。然而,没有必要在我们的新模型中维护这个比喻,因此我们可以从不同的角度来处理候选解的生成和评估。

与传统粒子群算法中让每个个体直接代表一个候选解不同,我们以一种更间接的方式使用种群来探索解空间。总的来说,这个种群代表了一个复杂的,有限的混合分布,由一个简单的多元高斯分布的基本集合组成,这些分布是由粒子场个体定义的。传统上,每个人都会生成并评估一个新解。然而,这个种群分布可以用另一种方式来指导搜索。

候选解是通过对这个种群级的分布进行采样生成的。虽然种群水平分布是复杂的,但抽样过程是简单的。种群水平分布是已知分量分布的有限混合分布。因此,对这种复杂的种群水平分布进行抽样是一个简单的问题,即随机选择一个底层分量分布。在种群的上下文中,这意味着随机选择一个粒子场个体,然后对定义该粒子场位置的多元高斯分布进行采样。

一旦生成和评估了候选解位置,种群中的每个粒子场个体都会被更新。每个个体使用从其自身分布中生成的候选解进行更新。如果一个候选解优于个体最优位置,则个体最优位置设为该解。这样,种群定义了一个随机分布来指导搜索和生成候选解,然后用候选解更新种群,重新定义下一次迭代的搜索区域。

这种种群指导搜索的概念将我们引向一个新的、独特的算法的下一步。由于由种群生成的复杂分布是有限的混合分布,因此对分布应用加权机制是一件简单的事情。通过加权每个粒子场对种群分布的贡献,有可能将额外的信息纳入搜索过程中,独立于底层的粒子群算法过程。

最后,由于粒子场个体的种群不再直接代表候选解,因此在每次迭代中生成和计算的候选解数量不再需要与种群的大小相等。所以,可以通过使用不同的相对种群和候选解点池大小来进一步修改行为。由于粒子群分布的性质,改变粒子群中粒子场个体的数量会影响该分布的分辨率。

PFO实现

考虑到这些变化,我们现在已经脱离了传统的粒子群优化算法范式,并得到了一种新的、独特的算法,并将其称为粒子场优化(PFO)。该算法由粒子场个体的种群和候选解点的点池组成。粒子场个体的种群使用粒子群算法(PSO)原理来指导求解空间的搜索,通过生成和评估候选解点池来进行求解。与传统的粒子群优化算法相似,PFO算法由初始化阶段和仿真阶段组成,仿真阶段循环直到满足一定的终止条件,并返回算法所找到的最优解作为输出。作为参数,该算法接受初始化范围、种群大小和池大小。种群大小参数指定粒子场个体的数量,这些粒子场个体构成了用于指导搜索的种群池大小参数指定在每一步仿真中要生成和评估的候选解的数量。还需要指定一个加权函数,对每个个体对整个种群分布的贡献进行加权。

初始化阶段用于初始化粒子场个体的数量。一个粒子场个体只存储一个个体的最佳位置,因此对这些个体的初始化很简单。通过对初始化范围定义的均匀随机分布进行抽样,给每个个体分配一个初始的最优点。

仿真阶段循环,直到满足终止条件,通常是最大迭代次数。每个迭代由两个阶段组成。在第一阶段,生成候选解。这些候选解是通过对粒子场个体种群定义的混合分布进行采样产生的。对于点池中的每个点,我们做如下操作:根据某种加权方案,从种群中随机选择一个粒子场个体,然后,通过对被选择个体定义的随机分布进行抽样来生成点。这种随机分布是利用个体的最优位置,和全局(或邻域)最优点来构造的,与BBPS方法相同。给定一个个体最优位置为P⃗i\vec{P}_{i}Pi​和全局最优位置为P⃗g\vec{P}_{g}Pg​的粒子场,候选解点c⃗i\vec{c}_{i}ci​的位置可以根据下式确定:
Pm→=P⃗i+P⃗g2,σ2→=∣P⃗i−P⃗g∣,c⃗=N→(Pm→,σ2→)\overrightarrow{P_{m}}=\frac{\vec{P}_{i}+\vec{P}_{g}}{2}, \quad \overrightarrow{\sigma^{2}}=\left|\vec{P}_{i}-\vec{P}_{g}\right|, \quad \vec{c}=\overrightarrow{\mathcal{N}}\left(\overrightarrow{P_{m}}, \overrightarrow{\sigma^{2}}\right) Pm​​=2Pi​+Pg​​,σ2=∣∣∣​Pi​−Pg​∣∣∣​,c=N(Pm​​,σ2)

一旦生成了候选解,就可以对目标函数进行评估。在点池中的每个候选解都生成之后,第二阶段开始。在这个阶段,将更新粒子场个体的种群。每个个体使用从自己的分布中生成的候选解集来更新自己的最优位置。每个个体从相关的候选解集中选择最最优位置。如果最优关联候选解优于个体最优位置,个体将其最佳发现点设为与该候选解点相等。然后清空候选解池,模拟继续到下一个迭代。

一旦满足终止条件,则返回全局最优发现点作为算法的输出。算法见算法1。

粒子场优化(Particle Field Optimization,PFO)相关推荐

  1. 【控制】粒子群优化(PSO,Particle Swarm Optimization)算法及 Matlab 仿真实现

    文章目录 定义 对比模拟捕食 通俗解释 粒子抽象 关于速度和位置 速度和位置的更新 标准PSO算法流程 标准PSO算法的流程 PSO流程图解 学习因子 c1.c2c_1.c_2c1​.c2​ 分析 仿 ...

  2. Particle Swarm Optimization粒子群优化算法(PSO算法)概念及实战

    Particle Swarm Optimization 粒子群算法(PSO算法) 定义 粒子群算法,又称粒子群优化算法(Particle Swarm Optimization),缩写为 PSO, 是近 ...

  3. 一文搞懂什么是粒子群优化算法(Particle Swarm Optimization,PSO)【附应用举例】

    Python代码链接放文末. 本文参考了很多张军老师<计算智能>的第六章知识. 本文来源:https://blog.csdn.net/qq_44186838/article/details ...

  4. 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

    01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 ...

  5. 粒子群算法 PSO(Particle Swarm Optimization)——原理及实现

    文章目录 1. 粒子群算法的概念 2. 粒子群算法分析 3. PSO算法的流程和伪代码 4. PSO算法举例 5. PSO算法的matlab实现 1. 粒子群算法的概念 粒子群优化算法(PSO:Par ...

  6. 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解...

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...

  7. Robot path planning in uncertain environment using multi-objective particle swarm optimization

    这是一篇2013年的文章,不确定环境下的多目标粒子群路径规划 10.1016/j.neucom.2012.09.019 Keywords:Robot path planning. Particle s ...

  8. 优化器 (optimization)

    优化器 (optimization) 粒子群优化算法(PSO:Particle swarm optimization) 下载链接 粒子群优化算法 是一种进化计算技术(evolutionary comp ...

  9. 向量算子优化Vector Operation Optimization

    向量算子优化Vector Operation Optimization 查看MATLAB命令View MATLAB Command 示例显示Simulink®编码器™ ,将生成向量的块输出,设置为标量 ...

  10. 2018/8/30-31 A social learning particle swarm optimization for scalable optimization.

    信息:  2015年    Informatica science 题目: A social learning particle swarm optimization for  scalable op ...

最新文章

  1. Mybatis缓存机制理解及配置
  2. Hyperledger Fabric PHP SDK
  3. c# forbidden.html,c# – 如何使用Forbidden状态web api返回ModelState
  4. SpringBoot高级-消息-AmqpAdmin管理组件的使用
  5. python 近期用到的基础知识汇总(主要是skimage的相关矩阵变化函数)(二)
  6. 怎么打开mysql服务_服务器网站打开速度过慢,怎么进行自检?
  7. 《Java编程思想》读后感
  8. 使用idea进行svn分支管理-初稿
  9. 利用python实现端口扫描
  10. telnet linux 退格键无法生效
  11. 改造家里的开关成为智能开关,保留原有开关控制,零火版,基础入门(一)
  12. 微信开发遇到的那些坑
  13. Python2.7字符编码详解
  14. Chrome安装插件Save All Resources
  15. COLA 4.0:应用架构的最佳实践
  16. cocos做飞机大战笔记【敌机发射子弹】
  17. Python绘制传统相关性矩阵/下三角相关性矩阵/重点相关性矩阵
  18. 各大电商平台API接口调用、拼多多API接口获得淘宝商品详情
  19. 解决kafka启动成功后然后又关闭了的问题
  20. android之简单的BMI计算器

热门文章

  1. SVN快速上手使用(适用于新入职同事)
  2. redis中集群的故障恢复
  3. dls 深度受限搜索java_JAVA深入学习(栈和队列)之栈
  4. python文件写入_python读写不同编码txt文件
  5. java w3c解析xml乱码_下载xml 中文乱码
  6. vs不能调试_20200717调试记录(五十四)
  7. Vue:vue将按需引入element抽成单独js文件
  8. C#:常用字符整理自用
  9. 制作网页先写html还是css,制作网页是先学html还是css
  10. 自动驾驶_视觉定位_高德公开课