初探粒子群优化算法(PSO)[通俗易懂]

初探粒子群优化算法(PSO)[通俗易懂]初探粒子群优化算法(PSO)粒子群优化算法简介PSO的优点PSO的缺点PSO的原理及基本概念算法描述参数分析粒子群的拓扑结构初始化时的前人经验粒子群优化算法简介粒子群优化算法(PSO)最初是由Kennedy和Eberhart博士于1995年受人工生命研究的结果启发,在模拟鸟群觅食过程中的迁徙和群集行为时提出的一种基于群体智能的演化计算技术。PSO是一种随机全局优化技术,通过粒子间的相互作用发现复杂搜索空间中的最优区域。由于PSO算法独特的优势,在工程领域中收到研究者的广泛关注。PSO算法归根到底是一

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

粒子群算法matlab实现:点击这里

粒子群优化算法简介

粒子群优化算法(PSO)最初是由Kennedy和Eberhart博士于1995年受人工生命研究的结果启发,在模拟鸟群觅食过程中的迁徙和群集行为时提出的一种基于群体智能的演化计算技术。
PSO是一种随机全局优化技术,通过粒子间的相互作用发现复杂搜索空间中的最优区域。由于PSO算法独特的优势,在工程领域中收到研究者的广泛关注。
PSO算法归根到底是一种利用随机法求多维函数特定区域的最值的算法。

PSO的优点

(1)相对于其他寻优算法,需要调整的参数较少。
(2)算法实现较为简单,效率较高。
(3)鲁棒性较好。
(4)相对于其他寻优算法,PSO容易收敛。

PSO的缺点

(1)易陷入局部最优解中
(2)难以得到精确的最优解
(3)PSO的机理性研究较少,缺乏严密的数学指导。

因此PSO算法适用于处理高维的,具有多个局部最优解的,对结果精确性要求不高的优化问题。

PSO的原理及基本概念

PSO的原理是模仿鸟群觅食的原理:
单个鸟→单个粒子
鸟群→有许多粒子组成的粒子群
鸟群的觅食行为→粒子群通过一定规律的随机运动,搜寻区域内的最优解

算法描述

在D维区域里存在m个粒子
其中第i个粒子的位置为一个矢量:xi={xi1 , xi2 , xi3…xiD}
其中第i个粒子的速度为一个矢量:vi={vi1 , vi2 , vi3 …viD}
第i个粒子搜索到的最优位置为:pi={pi1 , pi2 , pi3 …piD}
整个粒子群搜索到的最优位置为:pgbest={pgbest1 , pgbest2 , pgbest3 …{pgbestD}

第i个粒子在k次迭代时的速度为:
v i d k + 1 = ω v i d k + c 1 r 1 ( p i d − x i d k ) + c 2 r 2 ( p g b e s t d − x i d k ) v^{k+1}_{id}=ωv^{k}_{id}+c_1r_1(p_{id}-x^k_{id})+c_2r_2(p_{gbestd}-x^k_{id}) vidk+1=ωvidk+c1r1(pidxidk)+c2r2(pgbestdxidk)
其中i = 1,2,3…m ; d = 1,2,3…D
ω成为惯性参数;c1,c2称为学习因子,是一个正常数;r1,r2为随机数;等号右边的三项分别是:历史速度的记忆、认知部分、社会部分。

位置更新公式:
x i d k + 1 = x i d k + v i d k + 1 x^{k+1}_{id}=x^{k}_{id}+v^{k+1}_{id} xidk+1=xidk+vidk+1
每次更新的速度控制在一个最大速度vmax以下。

算法流程:

在这里插入图片描述算法终止条件有两种:
(1)达到最大迭代步数
(2)得到可接受的满意解

参数分析

(1)惯性参数ω:
ω代表对原先速度的记忆程度,依据原先的速度进行惯性运动。
较大的ω使粒子更易跳出局部最优解,获得更强的全局寻优能力,但也会使效率降低,不宜收敛;较小的ω容易陷入局部最优解,但更易收敛。

当问题空间较大时,ω不应为一个常数。在前期可以使ω较大以获得更强的全局寻优能力,后期ω变小可以提高收敛速度。这个功能可以由线性递减权值公式实现:
ω = ω m a x − ( ω m a x − ω m i n ) ∗ r u n r u n m a x ω=ω_{max}-(ω_{max}-ω_{min})*\frac{run}{run_{max}} ω=ωmax(ωmaxωmin)runmaxrun
(2)学习因子c1,c2
c1,c2分别代表粒子动作来自认知部分和社会部分的权重。
c1=0时,为无私型粒子群算法,丧失群体多样性,容易陷入局部最优解。
c2=0时,为自私型粒子群算法,没有信息的社会共享,收敛速度减慢。
c1>c2>0时,适用于多峰优化问题。
c2>c1>0时,适用于多峰优化问题。

自适应或动态加速度系数是基于迭代次数对两个系数进行动态调节。其中c1随代数增加而减小,c2随代数增加而增大。

c 1 = ( c 1 f − c 1 i ) t T M A X + c 1 i c_1=(c_{1f}-c_{1i})\frac{t}{T_{MAX}}+c_{1i} c1=(c1fc1i)TMAXt+c1i

c 2 = ( c 2 f − c 2 i ) t T M A X + c 2 i c_2=(c_{2f}-c_{2i})\frac{t}{T_{MAX}}+c_{2i} c2=(c2fc2i)TMAXt+c2i
实验建议:c1f=0.5,c1i=2.5;c2f=2.5,c2i=0.5

(3)粒子的最大速度vmax
粒子最大速度:维护算法探索能力和开发能力的平衡。速度增大,粒子的探索能力增强,但容易飞过最优解。速度减小,开发能力较大,但容易陷入局部最优。

粒子群的拓扑结构

一种是将群体中所有粒子都作为粒子的邻域,这样的结构叫做全局粒子群算法这种结构下,粒子的认知部分是自己的历史最优解;社会部分是粒子全体的全局最优值。
另一种是将群体中的部分个体作为粒子的邻域,这样的结构叫做局部粒子群算法这种结构下,粒子的认知部分是自己的历史最优解;社会部分是粒子邻域内的全局最优值。

全局粒子群算法的收敛能力更强,但容易陷入局部最优解;局部粒子群算法全局寻优能力更强,但收敛速度较慢。

初始化时的前人经验

粒子数一般取20-40,对较难或特定类别的问题可以取100-200。
最大速度通常设定为粒子的范围宽度。
将c1和c2统一为一个控制参数φ=c1+c2。当φ=4.1时具有良好的收敛效果。
ω=0.7298和c1=c2=1.497时算法有较好的收敛性能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183223.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月11日 上午11:36
下一篇 2022年10月11日 上午11:46


相关推荐

  • 卸载Oracle 12c

    卸载Oracle 12c完全卸载 Oracle12c 前言 1 停止服务 Oracle 服务 2 卸载 Oracle 软件合理的创建标题 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中 居左 居右 SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的 KaTeX 数学公式新的甘特图功能 丰富你的文章 UML 图表 FLowchart 流程图导出与导入导出导入前言你好 卸载 Oracle 和卸载普通软件不一样 本文主要简述如何完全卸载 Oracle12c 主要分

    2026年3月26日
    2
  • 96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦

    96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时间送达!还记得前段时间风靡技术界的“猪脸识别”吗?据了解,在知乎上与此有关的仅仅一个问题的浏览量就超过了35万,”猪脸识别”是JDD-2017京东金融全球数据探索者大赛的四大赛题之一,自从京东金融JDD大赛启动,就掀起了好大一波关注。而最近,这个与“猪脸识别”有关的JDD—2017京东金融全球数据探索者大赛经过多轮

    2022年6月21日
    29
  • python modis数据拼接_python读取modis数据

    python modis数据拼接_python读取modis数据本期记录只上干活,废话不多说,主要是后面与HEG配合使用,实现一系列研究与反演操作。python环境:Python3.5.2+Pycharm模块包:pyhdf安装方法(命令行输入):pipinstallpyhdf一、获取hdf数据集:frompyhdf.SDimportSDHDF_FILR_URL=”E:\Persona_project\Py-Program\RS\modis\M…

    2025年6月24日
    6
  • 【可视化爬虫】scrapinghub 可视化抓取 portia环境搭建全过程

    【可视化爬虫】scrapinghub 可视化抓取 portia环境搭建全过程文章目录scrapinghub可视化抓取portia环境搭建全过程一、install_deps:安装系统级依赖二、install_splash:安装splash三、install_python_deps:安装python依赖四、安装ember.js五、安装并配置nginx六、ember.js依赖安装scrapinghub可视化抓取portia环境搭建全过程一、insta…

    2025年6月3日
    5
  • Lamp架构_公司网络架构与配置

    Lamp架构_公司网络架构与配置1.LAMP简介与概述1.1LAMP平台概述LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言1.2LAMP各组件作用(平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Wind..

    2022年10月17日
    7
  • mybatiscodehelperpro 激活码(注册激活)

    (mybatiscodehelperpro 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
    1.3K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号