粒子群优化算法

PSO算法

粒子群算法(Particle,Swarm Optimization,PSO)由Kennedy和Eberhart于1995年提出,算法模仿鸟群觅食行为对优化问题进行求解。

粒子群算法中每个粒子包含位置和速度两个属性,其中,位置代表了待求问题的一个候选解,速度决定了粒子飞行的方向和距离。

  1. 位置向量
    X i t = ( x i 1 t , x i 2 t , ⋯ x i , D t ) (1) X_i^t = (x_{i1}^t,x_{i2}^t,\cdots x_{i,D}^t) \tag{1} Xit=(xi1t,xi2t,xi,Dt)(1)
  2. 速度向量
    V i t = ( v i 1 t , v i 2 t , ⋯ v i , D t ) (2) V_i^t = (v_{i1}^t,v_{i2}^t,\cdots v_{i,D}^t) \tag{2} Vit=(vi1t,vi2t,vi,Dt)(2)

算法超参数

  • w w w:惯性权重,表示粒子在下一次迭代中应在多大程度上保持先前的运动方向和速度;
  • c 1 c_1 c1:个体学习因子,表示粒子在下一次迭代中飞向自己到过的最优位置的意愿;
  • c 2 c_2 c2:社会学习因子,表示粒子在下一次迭代中飞向群体到过的最优位置的意愿;
  • NP:种群大小;
  • Gmax:最大迭代数。

寻优公式

PSO通过粒子追随自己当前找到的个体最优解(pbest)和群体最优解(gbest)来完成优化。

  • 速度更新:
    V i t + 1 = w V i t + c 1 r 1 ( p b e s t i t − x i t ) + c 2 r 2 ( g b e s t t − x i t ) (3) V_i^{t+1}=wV_i^t+c_1 r_1(pbest_i^t-x_i^t) + c_2 r_2(gbest^t-x_i^t) \tag{3} Vit+1=wVit+c1r1(pbestitxit)+c2r2(gbesttxit)(3)
    其中, p b e s t i t pbest_i^t pbestit表示前 t t t轮迭代中第 i i i个粒子的最好位置, g b e s t t gbest^t gbestt表示前 t t t轮迭代中所有粒子的最好位置。 r 1 , r 2 r_1,r_2 r1,r2是D维向量,每一维元素是在[0,1]区间上均匀分布的随机数。
  • 位置更新
    X i t + 1 = X i t + V i t + 1 (4) X_i^{t+1}=X_i^t+V_i^{t+1} \tag{4} Xit+1=Xit+Vit+1(4)

初始化

初始解应当覆盖整个搜索空间,一般采用均匀分布随机生成初始解。
x i j 0 = x i , j m i n + r a n d ( 0 , 1 ) ⋅ ( x i , j m a x − x i , j m i n ) (5) x_{ij}^0=x_{i,j}^{min}+rand(0,1) \cdot (x_{i,j}^{max} - x_{i,j}^{min}) \tag{5} xij0=xi,jmin+rand(0,1)(xi,jmaxxi,jmin)(5)
其中,rand(0,1)表示0-1之间的随机数, x i j m a x x_{ij}^{max} xijmax x i j m i n x_{ij}^{min} xijmin分别表示该问题第j个维度变量的上下界。

伪代码


输入:超参数 ( w , c 1 , c 2 , N P , G m a x ) (w,c_1,c_2,NP,Gmax) (w,c1,c2,NP,Gmax)和搜索边界 X m i n X_{min} Xmin X m a x X_{max} Xmax
输出:最优解
1:初始化
2:根据式(5)初始化位置种群X和速度种群V
3:记录个体最优pbest和群体最优gbest
4:优化搜索
5:For G = 1:Gmax
6: \qquad For i = 1:NP
7: \qquad \qquad 根据式(3)更新速度向量 V i G V_i^G ViG
8: \qquad \qquad 根据式(4)更新位置向量 X i G X_i^G XiG
9: \qquad \qquad If f ( X i G ) < p b e s t i f(X_i^G) < pbest_i f(XiG)<pbesti
10: \qquad \qquad \qquad p b e s t i = f ( X i G ) pbest_i = f(X_i^G) pbesti=f(XiG)
11: \qquad \qquad End
12: \qquad End
13: \qquad 更新群体最优 g b e s t gbest gbest
14:End


注:优化算法并不保证能够得到问题的最优解,因此,算法输出的最优解并非问题的整体最优解,而是搜索过程中最好的一个解。

实验

实验选取二维的平方和函数,函数的最小值在点(a,b)取得,最小值为0。
f ( x 1 , x 2 ) = ( x 1 − a ) 2 + ( x 2 − b ) 2 (6) f(x_1,x_2) = (x_1 - a)^2 + (x_2-b)^2 \tag{6} f(x1,x2)=(x1a)2+(x2b)2(6)

实验参数如下:

参数
问题维度D2
种群数NP30
最大进化次数Gmax50
惯性系数 w w w0.5
个体学习因子 c 1 c_1 c11
社会学习因子 c 2 c_2 c21
取值范围(-100,100)

粒子群算法搜索过程
粒子群算法收敛曲线

最优值最差值平均值标准差
6.663e-144.767e-126.490e-139.266e-13

代码获取

关注微信公众号数学模型与算法回复 粒子群算法获取python代码

参考文献

[1] Storn R , Price K .Differential Evolution – A Simple and Efficient Heuristic for global Optimization over Continuous Spaces[J].Journal of Global Optimization, 1997, 11:341-359.DOI:10.1023/A:1008202821328.
[2] Das S , Abraham A , Chakraborty U K ,et al.Differential Evolution Using a Neighborhood-Based Mutation Operator[J].IEEE Transactions on Evolutionary Computation, 2009, 13(3):526-553.DOI:10.1109/TEVC.2008.2009457.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/363965.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年最强网络安全学习路线,详细到直接上清华的教材!

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 前排提示&#xff1a;文末有CSDN官方认证Python入门资料包&#xff01; 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言…

mysql 慢查询调优实战

目录 异常现象&#xff1a;进行复现&#xff1a;寻找原因&#xff1a;解决办法&#xff1a;办法一&#xff1a;指定执行索引办法二&#xff1a;先按二级索引里字段排序&#xff0c;再按id排序办法三&#xff1a;取消排序 最终方案&#xff1a;复盘&#xff1a; 异常现象&#x…

基于springboot+vue的校园赛事资讯网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

搜维尔科技:【简报】元宇宙数字人赛道,优秀作品《星云时报》赏析

AI 对人们来说是一种新产业&#xff0c;而人们对于它未来会面临的议题仍有许多疑虑&#xff0c;因此我们用新闻报导的方式列举一些有趣且具有可能性的标题&#xff0c;希望能让 大家了解 AI 在未来可能会带来什么问题&#xff0c;以及我们应该采取的态度。 学校&#xff1a; 新…

C++(17)——list的模拟实现

前面的文章中&#xff0c;介绍了&#xff0c;的模拟实现&#xff0c;本篇文章将介绍对于的模拟实现。 目录 1. list的基本结构&#xff1a; 2. list功能实现&#xff1a;尾部插入元素&#xff1a; 3. list迭代器的实现&#xff1a; 4. list功能实现&#xff1a;在任意位置前…

vue2 导入使用vue-codemirror详解

目录 vue2 导入使用vue-codemirror详解1 介绍2 安装使用2.1 安装 vue-codemirror2.2 使用 codemirror2.2.1 引入 3 配置详情3.1 语言模式配置3.2 自动高度设置3.4 主题配置 4 总结 vue2 导入使用vue-codemirror详解 1 介绍 vue-codemirror是一个基于Vue的代码在线编辑器组件&…

【jenkins】主从机制及添加Slave节点操作

一、master-slave 日常构建Jenkins任务中&#xff0c;会经常出现下面的情况&#xff1a; 自动化测试需要消耗大量的 CPU 和内存资源&#xff0c;如果服务器上还有其他的服务&#xff0c;可能会造成卡顿或者宕机这样的情况&#xff1b; Jenkins 平台上除了这个项目&#xff0c…

把成绩私发给家长

与家长保持及时、有效的沟通对于学生的成长至关重要。但有时候&#xff0c;我会选择将学生的成绩私发给家长&#xff0c;而不是在公共场合公布。这样做有以下几个原因。 保护学生的隐私。每个学生都拥有自己的个人信息&#xff0c;这包括学习成绩。在公共场合公布成绩&#xf…

Sqoop数据迁移工具

概述 Apache Sqoop&#xff08;SQL-to-Hadoop&#xff09;项目旨在协助RDBMS与Hadoop之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下&#xff0c;轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中&#xff1b;同时也可以把数据从 Hadoop 系统…

【计算机二级考试C语言】C递归

目录 C 递归 数的阶乘 实例 斐波那契数列 实例 C 递归 递归指的是在函数的定义中使用函数自身的方法。 举个例子&#xff1a; 从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&#xff1f;"从…

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业?

都 2024 年了&#xff01;程序员的到底出路在哪里&#xff01;&#xff1f;继续卷技术&#xff1f;晋升管理层&#xff1f;还是转业&#xff1f; 1&#xff09;程序员的难处2&#xff09;程序员专业方向3&#xff09;大数据3.1.大数据开发涉及到哪些技术3.2.大数据开发涉及到的…

VxTerm:SSH工具中的中文显示和乱码时的相关信息和一些基本的知识

当我们写的程序含有控制台(Console)输出时&#xff0c;如果输入内容包含中文时&#xff0c;我们一般需要知道下面的信息&#xff0c;才能正确的搞清楚怎么处理中文显示的问题&#xff1a; 1、实际程序或文件中的实际编码&#xff1a; Linux下的应用程序和文本文件&#xff0c;…

2024年最佳的免费UI设计工具推荐

随着用户界面设计行业的蓬勃发展&#xff0c;越来越多的设计师加入到用户界面设计中来。选择一个方便的用户界面设计工具尤为重要&#xff01;除了传统的用户界面设计工具外&#xff0c;在线用户界面设计工具也受到越来越多设计师的青睐。这种不受时间、地点和计算机配置限制的…

centos7.6安装Docker详细步骤(无坑版教程)

一、安装前必读 在安装 Docker 之前&#xff0c;先说一下配置&#xff0c;我这里是Centos7 Linux 内核&#xff1a;官方建议 3.10 以上&#xff0c;3.8以上貌似也可。 注意&#xff1a;本文的命令使用的是 root 用户登录执行&#xff0c;不是 root 的话所有命令前面要加 sudo…

uniapp 使用canvas 画海报,有手粘贴即可用(拆成组件了,看后面)

1.直接使用 html部分 <view click"doposter">下载海报</view> <canvas canvas-id"myCanvas" type2d style"width: 370px; height: 550px;opcity:0;position: fixed;z-index:-1;" id"myCanvas" />js 部分 drawBac…

【数据结构】(三)树Tree

目录 1、基本概念 2、二叉树Binary Tree 3、树、森林与二叉树的转换 4、赫夫曼树Huffman Tree与赫夫曼编码Huffman Coding 1、基本概念 &#xff08;1&#xff09;树&#xff08;Tree&#xff09;是 n&#xff08;n ≥\geq 1&#xff09;个节点的有限集&#xff0c;n 0时称…

JavaScript基础(一)旧版基础笔记总结

开新藩&#xff08;虽然博主早以前已经学过了&#xff09;&#xff0c;从0开始复习JS&#xff0c;一方面应对毕设&#xff0c;一方面后期可能找找实习&#xff0c;一方面复试可能也会涉及到吧&#xff0c;说起这个最近越等越焦虑QAQ&#xff0c;还要一个月才出分呢...... 本帖先…

HubSpot CRM是什么?有什么功能和特点?

HubSpot CRM&#xff08;Customer Relationship Management&#xff0c;客户关系管理&#xff09;是一款由HubSpot公司开发的免费的、云端的CRM软件。HubSpot CRM致力于帮助企业更好地管理客户关系&#xff0c;提高销售效率&#xff0c;同时通过集成多个营销、销售和服务工具&a…

springboot mybatis-plus 项目分层笔记

整体定义 config: 配置项&#xff0c;包含configuration注解 constants: 常量类enums: 枚举 exceptions: 全局异常处理&#xff0c;自定义异常&#xff0c;RestControllerAdvice 注解 fia3: 三大器依据执行顺序&#xff1a;过滤器filter、拦截器interceptor、切面aop 简称 fia…

中科大计网学习记录笔记(一):Internet | 网络边缘

计算机网络 前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面…