【PSO】PSO原始算法

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

PSO粒子群优化算法由由Kennedy和Eberhart于1995年提出。模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的。

  • 每个寻优的问题解都被想像成一只鸟,称为“粒子”。
  • 所有粒子都在一个D维空间进行搜索。 所有的粒子都由一个fitness function 确定适应值以判断目前的位置好坏。
  • 每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。
  • 每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。

PSO优化算法中每个粒子下一步的移动方向都结合了惯性,自己的历史最优位置,和种群历史最优位置。算法前期倾向于个体自由探索,后期逐渐收敛于群体最优解。

我们定义适应度函数为f(x),粒子群优化算法每个粒子可以看作是空间中的1个点,求解参数的维度(问题空间)是N,那么第i个粒子的位置Xi就是一个N维的向量,它的速度Vi也是一个N维的向量。粒子下一时刻的位置=当前位置+当前速度向量。

粒子当前时刻的速度更新公式:

  • w是惯性系数,非负数
  • V(k,id)—第k次迭代粒子i飞行速度矢量的第d维分量
  • X(k,id)  —第k次迭代粒子i位置矢量的第d维分量
  • c1,c2加速度常数,调节学习最大步长
  • r1,r2—两个随机函数,取值范围[0,1],以增加搜索随机性

 

算法流程图:

  1. 初始化粒子群
  2. 计算每个粒子的适应度
  3. 更新V和X
  4. 判断是否到达算法退出条件,否则跳至2
  5. 退出

 

代码的python实现:

class PSO():# 粒子群初始化def __init__(self, pN, dim, max_iter):self.w = 0.3self.c1 = 0.2self.c2 = 0.2self.r1 = 0.1self.r2 = 0.1self.pN = pN  # 粒子数量self.dim = dim  # 搜索维度self.max_iter = max_iter  # 迭代次数self.limit = limit# 初始化粒子群self.X = np.random.random((pN, dim))self.V = np.zeros_like(self.X)self.pbest = self.Xself.gbest = self.X[0]  # 先假设第1颗粒子是最好的位置self.p_fit = np.ones(self.pN) * float('-inf')self.fit = float('-inf')  # 全局最佳适应值,初始化为负无穷self.fit_function = fitness_functiondef iterator(self):# 更新粒子群位置for epoch in range(self.max_iter):# 更新gbest/pbestfor i in range(self.pN):                score = self.fit_function(self.X[i])if (score > self.p_fit[i]):  # 更新个体最优self.p_fit[i] = scoreself.pbest[i] = self.X[i]if (score > self.fit):  # 更新全局最优best_particle = iself.gbest = self.X[i]self.fit = self.p_fit[i]# 更新粒子群位置for i in range(self.pN):self.V[i] = self.w * self.V[i] + self.c1 * self.r1 * (self.pbest[i] - self.X[i]) + \self.c2 * self.r2 * (self.gbest - self.X[i])self.X[i] += self.V[i]

 


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

相关文章

【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 升级。并不只是操作上,感觉是要优化输出资源的…

IOS切图直接作为Android切图使用

跳槽到新公司之后,发现工作真心挺坑的,基本没什么流程规范,职责分工也不明确,整天瞎折腾。。。,慢慢的开始怀念起老东家了。 在新公司UI只提供ios的切图给开发,其实他们不会做android切图。。。&#xff0c…

Group Convolution与Depthwise Convolution

转自:Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution - 云社区 - 腾讯云 写在前面 Group Convolution分组卷积,最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分…

Graph Cut(图割)详解

原文地址:http://blog.csdn.net/zouxy09/article/details/8532111 Graph cuts是一种十分有用和流行的能量优化算法,在计算机视觉领域普遍应用于前背景分割(Image segmentation)、立体视觉(stereo vision)、…