PSO简介

article/2025/10/26 0:30:00

粒子群优化算法(Particle Swarm Optimization,PSO)

PSO算法对每个粒子的要求

  • 所有粒子都在一个D维空间中进行搜索
  • 所有粒子都由一个适应函数确定适应值以判断目前位置的好坏
  • 每个粒子都有记忆功能,可以记住寻找到的最佳位置
  • 每个粒子有一个速度和飞行方向

粒子群优化算法求最优解:(D维空间中,有N个粒子)

  • 粒子i的位置: X i = ( x i 1 , x i 2 , . . . x i D ) X_i=(x_{i1},x_{i2},...x_{iD}) Xi=(xi1,xi2,...xiD),将 X i X_i Xi带入适应函数 f ( x i ) f(x_i) f(xi)求适应值
  • 粒子i的速度: V i = ( v i 1 , v i 2 , . . . v i D ) V_i=(v_{i1},v_{i2},...v_{iD}) Vi=(vi1,vi2,...viD)
  • 粒子i自身经历最好的位置: p b a s t i = ( p i 1 , p i 2 , . . . p i D ) pbast_i=(p_{i1},p_{i2},...p_{iD}) pbasti=(pi1,pi2,...piD)
  • 粒子种群经历过最好的位置: g b a s t = ( g 1 , g 2 , . . . g D ) gbast=(g_{1},g_{2},...g_{D}) gbast=(g1,g2,...gD)
  • 在d ( 1 ≤ d ≤ D ) (1{\leq}d{\leq}D) (1dD)维的位置变化范围限定在 [ X m i n , d , X m a x , d ] [X_{min,d},X_{max,d}] [Xmin,d,Xmax,d]内。(保证所有粒子在有限可控范围内进行迭代)
  • 速度变化范围限定在 [ − V m a x , d , V m a x , d ] [-V_{max,d},V_{max,d}] [Vmax,d,Vmax,d]内。(保证粒子速度变化可控)

粒子群算法迭代过程

粒子i的第d维速度跟新公式:
V i d k = W V i d k − 1 + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( g b e s t d − x i d k − 1 ) V^{k}_{id}=WV^{k-1}_{id}+c_{1}r_{1}(pbest_{id}-x^{k-1}_{id})+c_{2}r_{2}(gbest_{d}-x^{k-1}_{id}) Vidk=WVidk1+c1r1(pbestidxidk1)+c2r2(gbestdxidk1)

W V i d k − 1 WV^{k-1}_{id} WVidk1:粒子先前的速度矢量

c 1 r 1 ( p b e s t i d − x i d k − 1 ) c_1r_1(pbest_{id}-x^{k-1}_{id}) c1r1(pbestidxidk1):本粒子找到的最优解,自我认知部分

c 2 r 2 ( g b e s t d − x i d k − 1 ) c_{2}r_{2}(gbest_{d}-x^{k-1}_{id}) c2r2(gbestdxidk1):群体找到的最优解,社会经验部分

粒子i的第d维位置更新公式:

x i d k = x i d k − 1 + v i d k − 1 x^{k}_{id}=x^{k-1}_{id}+v^{k-1}_{id} xidk=xidk1+vidk1

x i d k − 1 x^{k-1}_{id} xidk1:之前迭代中的位置信息

v i d k − 1 v^{k-1}_{id} vidk1:当前的速度矢量

  • v i d k v^k_{id} vidk:第k次迭代粒子i飞行速度矢量的第d维分量
  • x i d k x^k_{id} xidk:第k次迭代粒子i位置矢量的第d维分量
  • c 1 , c 2 c_1,c_2 c1,c2:加速度常数,调节学习最大步长
  • r 1 , r 2 r_1,r_2 r1,r2:两个随机函数,取值范围[0,1],以增加搜索随机性
  • w:惯性权重,非负数,调节对解空间的搜索范围。(w值越大,全局搜索能力越强,局部搜索能力越弱)

粒子群优化算法流程图

在这里插入图片描述

惯性权重,线性递减权值

主要解决问题:前期粒子群比较分散时,提高全局搜索能力;后期粒子群比较集中时,提高局部收敛精度。至此w不宜为固定常数。
W = W m a x − ( W m a x − W m i n ) × r u n r u n m a x W=W_{max}-(W_{max}-W_{min}){\times}{\frac{run}{run_{max}}} W=Wmax(WmaxWmin)×runmaxrun

  • W m a x W_{max} Wmax:最大惯性权重
  • W m a n W_{man} Wman:最小惯性权重
  • r u n run run:当前迭代次数
  • r u n m a x run_{max} runmax:本次算法迭代总次数

其中较大的w有较好的全局搜索能力,较小的W有较强的局部收敛能力。次公式完成的任务就是:随着迭代次数的增加,惯性权重W不断减小,从而使得PSO算法在前期具有较强的搜索能力,在后期具有较强的收敛能力。

粒子群算法构成要素

群体大小m

  • 当m很小:陷入局部最优解的可能性很大

  • 当m很大:虽然PSO效果好,但是效率会变慢,比较冗余

权重因子

惯性因子:W

  • 当W=1时,为基本粒子群算法
  • 当W=0时,将失去对粒子本身的速度记忆(会造成粒子随机性过重,使得寻优更加困难)

学习因子: c 1 , c 2 c_1,c_2 c1,c2

  • c 1 r 1 ( p b e s t i d − x i d k − 1 ) c_1r_1(pbest_{id}-x^{k-1}_{id}) c1r1(pbestidxidk1):当 c 1 c_1 c1=0,无私型粒子群算法(会迅速丧失群体多样性,容易陷入局部最优)
  • c 2 r 2 ( g b e s t d − x i d k − 1 ) c_{2}r_{2}(gbest_{d}-x^{k-1}_{id}) c2r2(gbestdxidk1):当 c 2 c_2 c2=0,自我认知型粒子群算法(完全没有信息社会共享,导致算法收敛速度过低)

邻域拓扑结构

  • 全局粒子群算法,将种群所有粒子都设为邻域
    • 收敛速度快
    • 容易陷入局部最优
  • 局部粒子群算法,只将部分粒子设为邻域,邻域随迭代次数线性变大,最后邻域扩展到整个粒子群
    • 收敛速度慢
    • 但是不容易陷入局部最优

http://chatgpt.dhexx.cn/article/lY8F6840.shtml

相关文章

PSO优化问题

PSO import matplotlib.pyplot as plt import numpy as np import random as rd np.set_printoptions(precision3,suppressTrue)class PSO():"""用于求解最小值"""def __init__(self,pop_scale,dim,maxV,pop_bnd,maxiter):self.pop_scale pop_…

利用PSO求解TSP问题

简介 PSO(粒子群算法)是群智能算法的一种,其他的群智能算法还有蚁群算法,遗传算法等。其他的智能算法还有模拟退火。之前看过一段时间的PSO,商务智能课程最后的大作业便想用一下,刚好在github上看到有人用模拟退火解决TSP…

【PSO】PSO原始算法

PSO粒子群优化算法由由Kennedy和Eberhart于1995年提出。模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的。 每个寻优的问题解都被想像成一只鸟,称为“粒子”。所有粒子都在一个D维空间进行搜索。 所有的粒子都由一个fitness function…

【PSO运输优化】基于MATLAB的PSO运输优化算法的仿真

1.软件版本 matlab2013b 2.本算法理论知识 问题是,假设我有一个收集轨道,上面有5个采集堆,这5个采集堆分别被看作一个4*20的矩阵(下面只有4*10),每个模块(比如:A31和A32的元素含量…

粒子群算法(PSO)

理论: 粒子群优化算法(PSO)是一种智能优化算法,也是一种元启发式算法,最初是由Eberhart和Kennedy提出的,其模拟了鸟群捕食行为,通过一定的搜索策略,使得多个粒子在多维搜索空间中寻…

粒子群算法(PSO)简介及Python实现

一、概述 粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization) ,缩写为PSO.粒子群优化算法是一种进化计算技术(evolutionary computation),1995年由Eberhart博士和kennedy 博士提出,源于对鸟群捕食的行为研…

mac中如何在PS中使用Cutterman工具快速切图

简介 cutterman是安装在PS软件中的一款智能自动切图插件,用法简单方便,很受设计者们喜欢,导出的图片格式有多种选择,而且还可以针对不同机型选择如苹果系统、安卓系统或电脑端使用。 工具/原料 Photoshoppsd格式图层图片 方法/…

sketch android 切图,Sketch如何快速切图?三分钟教你掌握切图方案

相信有相当一部分的设计同行在工作中碰到各种各样切图尺寸大小的问题,针对Sketch如何快速切图这个问题,今天小编特意出了一篇有关sketch切图尺寸教程的文章,学会了包你三分钟之内掌握设置切图方案的技巧,然后更安心的把剩余时间花…

切图教程,app切图命名总结

再根据自己的习惯对APP切图命名进行整理总结。 结语: 作为一个有强迫症的设计师,希望产出是有缜密的思维逻辑,当然包括细节。 文字有的部分参考其它文章,整理后根据自己的工作经验作出的总结。 自己也还在不断的摸索与学习。 声明…

PS切图方法

方法一:直接右击选中图层,另存为.png文件 方法二:对于分离的几个图层,右击shift选中,ctrE合并图层,再用方法一 方法三:利用切片工具进行切图: 方法四:PS插件切图&#…

PS中的切图

文章目录 图层切图切片切图PS插件切图附:常见的图片格式 PS 有很多的切图方式:图层切图、切片切图、PS 插件切图等。 图层切图 最简单的切图方式:右击图层 --> 导出 PNG 切片。 如果发现某张图片它的文字和背景是分离的,那么…

真正的ps切图方法(前端必看)

看了很多ps切图方法,真的感觉都不是很满意,可能说不是很合适我们前端的用法,毕竟我们要获取的是某一个图层里面的小图片,不需要获取全部切图,好了,废话不多说,看方法。 1.选中所在的图层&#x…

ps 快速切图

前端实战系列之---两种快速切图的方法 今天给大家分享一下我自己在前端工作中的一些切图小技巧,虽然好的UI会给我们把图切好,但是他们切的图不一定百分之百符合我们的需求,所以还是自己动手丰衣足食嘛,看本教程之前希望大家能先看…

切图工具:又一个处理大图的例子

工具下载 有些同学对处理大图还是不太明白,这里再仔细写一个例子,希望能有所帮助。 基本情况: 1、使用高德地图; 2、朋友使用12级地图截屏做底图,制作的源图为17级,分辨率为40960*40960; 由于…

地图切图工具:初步实现顺序法批量切图处理,用于处理大图

工具:https://blog.csdn.net/bq_cui/article/details/47372005 (20190504) 由于技术限制,本工具无法打开超级大图。切图时如果遇到一个很大的源图片,工具会难以处理,一般是跳出内存溢出提示,点击…

houdini 之copy to points

将第一个输入中的几何图形复制到第二个输入的点上。 属性备注Source Group几何体来源Target Points要复制到的目标点集合Show Guide Geometry是否显示该操作预览流程Pack and Instance在复制之前将输入几何体打包到嵌入式打包图元中。这导致输入几何被每个副本共享(…

如何利用Photoshop进行快速切图

在UI设计中我们常常使用Ai来进行矢量图的绘制,然后导入Ps中进行设计、排版和导出。 在以前的版本中,切图一直是个很麻烦的事情,要么依托于脚本,要么手动一张张导出,很不方便,这种窘况在Photoshop CC 2015…

图像分割之图割(Graph Cut)

基本概念 这里介绍一种用于n维图像数据的边界优化和区域分割的分割技术。该分割算法来自论文:Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images。该方法通过交互式的或自动的定位一个或多个代表“物体”的点以及一…

4. PS切图

4.1常见的图片格式 jpg图像格式: JPEG ( .JPG )对色彩的信息保留较好,高清,颜色较多,我们产品类的图片经常用jpg格式的gif图像格式 : GIF格式最多只能储存256色,所以通常用来显示简单图形及字体,但是可以保存透明背景和动画效果,实际经常用于一些图片小动画效果png图像格式&am…

Photoshop 实时切图功能 Generate

大家好,我是笨笨,笨笨的笨,笨笨的笨,谢谢!!! 本文发表在【湖边的小屋遗址】 转载请注明出处 Generate web assets in Photoshop CC 貌似就是以前的 Ctrl Shift Alt s 升级。并不只是操作上,感觉是要优化输出资源的…