【智能优化算法详解】粒子群算法PSO量子粒子群算法QPSO

1.粒子群算法PSO

博主言简意赅总结-算法思想:大方向下个体自学习探索+群体交流共享   对比适应度找到最优点  

背景

粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization), 缩写为 PSO。粒子群优化算法是一种进化计算技术(evolutionary computation),1995 年由Eberhart博士和 kennedy 博士提出,源于对鸟群捕食的行为研究 。 该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。 粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。

粒子群优化算法(Particle Swarm Optimization,PSO)是一种启发式优化算法,通过模拟鸟群或鱼群等自然界中的群体行为来求解优化问题。

在PSO算法中,将待优化的问题看作一个多维空间中的搜索问题,将解空间中的每个候选解看作一个粒子,并将每个粒子的位置视为该解的可能解。每个粒子都有自身的位置和速度,同时根据自己的经验和群体的经验来调整自己的位置和速度,从而找到最优解。

PSO算法的基本思想是,通过不断地更新粒子的速度和位置来搜索解空间。每个粒子根据自身的经验和群体的经验来更新自己的速度和位置。具体而言,每个粒子根据当前的速度和位置以及自身历史最优位置和群体历史最优位置来计算新的速度和位置。通过不断地迭代更新,粒子群逐渐向全局最优解靠拢。

PSO算法相比于其他优化算法具有简单、易于实现和收敛速度快等特点,适用于解决连续优化问题和离散优化问题。在实际应用中,PSO算法已经被广泛应用于函数优化、机器学习、数据挖掘等领域,并取得了较好的效果。

基础知识

1.某个粒子(点)的移动,是有大小,有方向的。

2.有大小,有方向的东西叫向量。

3.位置就是坐标。
如下图中A为全局最优点,接下来用数学表达式进行描述C点向A点移动过程。

1.C点坐标(2,3)变到A点坐标(1,1):
(1,1)=(2,3)+𝛼 → 𝛼 = (1,1) − (2,3) = (−1, −2)
2.求出𝛼 为(−1, −2),𝛼 就表示这个移动的向量,C点可以直接移动到A点:
(1,1)=(2,3)+(−1, −2)
3.现在可以想到采取一个简单的策略便于后面理解算法原理,C点不是直接移动到A点,想看一下在过程中有无全局最优点。在向A点方向移动的过程中,有可能有更好的全局最优点,𝛼向量乘一个𝑟𝑎𝑛𝑑,还是这个方向移动,但不是一下子就移动到A点,移动rand单位的(-1,-2)向量:
(x,y)=(2,3)+𝑟𝑎𝑛𝑑 ∗ (−1, −2)

算法原理

在前面基础知识章节举的例子是一个2维的空间,如果用群优化神经网络可能有上百上千个参数,就形成了D维。

假设在一个D维的目标搜索空间中,有N个粒子(种群大小)组成一个群落,其中第i个粒子表示为一个D维的向量,即位置

第i个粒子的“飞行”速度也是一个D维的向量(每个粒子有自己的方向),记为:

有全局最优方向,每个粒子也有自己的最优方向,类似于我们有自己的想法,你觉得自己的想法好,同时他人也在说自己的想法好,现在要做的就是你坚持自己的想法同时也考虑向他人想法好的地方的去学习,因此大家都这样子去齐心协力去做,对于全局来说肯定是好的。发现好的想法就进行一次更新迭代。

在第t次迭代的第i个粒子向第t+1次迭代进化时,根据如下式子更新位置:

每次迭代分析最佳位置,再次进行更新迭代,更新位置

上式其中的, Xij(t+1)为t+1代Xi的位置(j=1,2,…,D 维度)

其中,Xij(t)加上更新的下一代方向Vijt+1,实现t代xi的位置更新到t+1代xi的位置,更新位置。

其中,更新的下一代方向Vij(t+1)由以下三项组成:

  • 其中三项对应于: 惯性(自身)+ 局部方向 + 全局方向
  • 第一项的Vij(t)为原本自身大小和方向
  • 第二项的Pij(t)表示个体极值(个体最优位置),Pij(t)-Xij(t)表示向个体最优位置飞行的大小和方向
  • 第三项的Pgj(t)表全局最值(全局最优位置),Pgj(t)-Xij(t)表向全局最优位置飞行的大小和方向
  • 三个参数:参数w(惯性权重)和c1(个体学习系数)和c2(全局学习系数)
  • r1(t)和r2(t)为随机数

以上就是PSO算法的原理,接下来举例理解以上过程:

如下图中,假设某粒子当前位置C,个体极值位置B,全局最优位置A,那么该粒子下一步的运动状态如图中蓝色线所示。图中B对应上式中的𝑝𝑖,A对应𝑝𝑔,黄色向量为当前速度方向,绿色向量为向个体极值飞行步长,红色为向全局最值飞行步长。

蓝色线(下一步方向)=红(全局最优方向)+黄(自身惯性(上一次飞行方向))+绿(个体找到的最优方向)

  • 下一步方向是红、黄、绿三者的方向合成向量
  • 若下一步到达c'不是优的地方还没有C好,就不更新C的位置为C',还保留原本的C位置,C位置不再动,其它的点进行更新

算法流程

 输入 : 参数𝜔:一般0.5 − 0.8, 𝑐1, 𝑐2:一般0.1 − 2, 𝑣𝑚𝑎𝑥(指定搜索速度), 𝑥𝑚𝑎𝑥(指定搜索空间):取决于优化函数

Step1:初始化种群𝑥;

Step2:计算个体 适应度*;
Step3:更新粒子速度−>更新粒子位置*;
Step4:并计算新位置的适应度,若新位置适应度更高,则将该粒子的位置进行更新,否则不更新。
Step5:判断是否满足终止条件* ,是则退出,否则返回Step2。
输出 :输出最优值。
注: *1. 一般的,我们优化目标是 最小化 一个 函数值 。所以个体计算出的 函数值越小,适应度越高 。(选适应度高的)
 *1. max 𝑓 = min −𝑓(最大f等于最小的负f)
*2. 注意更新速度后,先进行速度边界检测,一般采用 𝑣(𝑣 > 𝑣 𝑚𝑎𝑥 ) = 𝑣 𝑚𝑎𝑥(超出边界则设为最大) ,位置同理。
*3. 常见终止条件为设定迭代进化次数、适应度 n 代不再变

算法优缺点

优点: 1)原理比较简单,实现容易,参数少。
缺点: 1)易早熟收敛至局部最优、迭代后期收敛速度慢的。
解释:标准粒子群算法的参数是固定的。𝜔描述的是粒子的“惯性”,在进化前期𝜔应该大一些,保
证各个粒子独立飞行充分搜索空间,后期应该小一点,多向其他粒子学习。 𝑐1, 𝑐2分别向个体极值和全局极值最大飞行步长。前期𝑐1应该大一些,后期𝑐2应该大一些,这样就能平衡粒子的全局搜索能力和局部搜索能力。3个参数共同影响了粒子的飞行方向,导致即使其他粒子找到更好的,但是当前粒子惯性太大,不能很快的飞向更优的位置。
针对标准PSO的缺点,通常有如下的改进:
1.实现参数的自适应变化。
2.引入一些其他机制,比如随机的因素,速度、位置的边界变化−后期压缩最大速度等。
3.结合其他智能优化算法:遗传算法、免疫算法、模拟退火算法等等,帮助粒子跳出局部最优,改善收敛速度。

2.量子粒子群算法QPSO

具有量子行为的PSO算法(QPSO)是在经典的粒子群算法(PSO算法)的基础上改进形成,它主要是结合了量子物理的思想修改了PSO的“进化”方法(即更新粒子位置的方法),在更新粒子位置时重点考虑各个粒子的当前局部最优位置信息和全局最优位置信息,具体方法见下面“具有量子行为的微粒群算法的运算过程”的描述。

QPSO 加入了量子力学的思想。在量子力学中,粒子可以同时处于多个状态,这就是量子叠加的概念。QPSO 引入了类似的概念,允许粒子同时处于多个位置。这样一来,搜索空间就会更加广阔,粒子们就有更大的机会找到最优解。

另外,QPSO 还考虑了量子干涉的概念。在量子力学中,粒子之间会相互干涉,影响彼此的运动轨迹。QPSO 中的粒子也会相互影响,这样可以增加搜索的多样性,防止陷入局部最优解。

运算过程

对标准的PSQ算法而言,算法收敛速度很快,但极易陷入局部最优。为了解决之一不足,2004年,孙俊[46]从量子力学角度出发提出了量子粒子群(QPSO)算法,QPSO算法的全局搜索能力要远远优于一般的PSO算法。QPSO算法与PSO算法是两种不同的运动方式,并不是在PSO算法的位置与速度更新公式上添加算子,因在理论上QPSO算法与PSO算法的复杂度是相当的。

在QPSO算法中,粒子被认为具有量子行为并参考了量子力学中量子的不确定性原理,故无法同时确定粒子的位置与速度的精确值。QPSO算法中粒子的更新是通过观测得到新个体,即给定一个概率去观测粒子,那么就会得到它得一个位置,对于每个粒子来说,会随机产生多个概率,利用蒙特卡罗思想进行观测,得到多个个体,然后选取个体最优,并依次评价其余个体,最终得到下代个体,如此进行搜索[47]。QPSO算法中粒子没有速度矢量,其位置迭代公式为:

基于平均最优位置的OPSO算法。对于QPSO,在迭代过程中通过个体极值与全局极值的相关信息进行下一步搜索,迭代未期,群体多样性会急剧恶化,个体容易陷入局部最优,故而孙俊等在算法中引入了平均最优位置(mean bestposition,mbest)。平均最优位置就是所有粒子个体最优位置的平均,其表达式为:

在QPSO中,粒子群按照下面的三个式移动位置,QPSO算法的进化方程式为:

QPSO与PSO的比较

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:文本编辑器 - vim

Linux:文本编辑器 - vim vim基本操作普通模式模式切换移动光标复制粘贴删除替换撤销 底行模式行号查找 vim基本操作 Vim(Vi Improved)是一款功能强大的文本编辑器,是Unix/Linux系统中广泛使用的编辑器之一。它源于上世纪70年代开发的Vi编辑器&#xff0…

C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

今日继续我的C#学习笔记,今日开始学习打开使用千兆网口来进行与西门子PLC的通信: 文章提供整体代码、解释、测试效果截图、整体测试工程下载: 主要包含的知识有:下载NuGet程序包、西门子PLC及通信协议、搭建虚拟的S7通信仿真环境…

为了进阿里拿Offer,逼得我两个月吃透了这些Java高级面试题解析,终于上岸

JVM与调优 21 题及答案解析 JVM的内存结构。 JVM方法栈的工作过程,方法栈和本地方法栈有什么区别。 JVM的栈中引用如何和堆中的对象产生关联。 可以了解一下逃逸分析技术。 gc的常见算法 CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the wo…

51.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色选择的模拟与截取

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:如果看不懂、不知道现在做的什么,那就跟着做完看效果&…

制造业、能源等传统行业进行数字化转型时要注意哪些问题?

制造业、能源等传统行业在进行数字化转型时需要注意以下几个关键问题: 1、明确转型目标和战略规划:企业需要根据自身的业务特点、市场需求和长远发展目标,制定清晰的数字化转型战略。包括确定转型的重点领域、预期成果、时间表和资源投入。 …

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例) nodejs构建配置 官方教程 注意:下图的dist是vue项目打包目录名称,根据实际名称配置 # input your command here cnpm cache clean --force cnpm install cnpm run build 主机部署配置 rm -rf /home/vipcardmall/frontend/ mkdir -p /home/…

计算分数和-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第48讲。 计算分数和&#…

3 突破编程_前端_SVG(rect 矩形)

1 rect 元素的基本属性和用法 在SVG中&#xff0c;<rect> 元素用于创建矩形。 <rect> 元素有一些基本的属性&#xff0c;可以用来定义矩形的形状、位置、颜色等。以下是这些属性的详细解释&#xff1a; x 和 y &#xff1a;这两个属性定义矩形左上角的位置。 x …

[dvwa] sql injection(Blind)

blind 0x01 low 1’ and length(version()) 6 # syntax: substr(string , from<start from 1>, cut length) 1’ and substr(version(),1,1) ‘5’ # 1’ and substr(version(),2,1) ‘.’ # 1’ and substr(version(),3,1) ‘7’ # 1’ and substr(version(),4,…

leetcode 322

leetcode 322 题目 例子 思路 记忆化搜索&#xff0c;使用数组&#xff0c;记录val的最少硬币数量&#xff1b; 递归加bfs; 代码实现 #include <vector> #include <climits> // For INT_MAX #include <algorithm> // For minclass Solution { public:int…

C#下Httpclient post请求获取令牌

1.postman测试ok 2.C#代码 public static async Task<string> testGetToken(string URL, string param){string responseBody "eee";//using (var clientHandler new HttpClientHandler()){ var handler new HttpClientHandler();handler.ServerCertificat…

响应实践!赛宁网安亮相第二届全国先进技术成果转化大会

4月8日&#xff0c;第二届全国先进技术成果转化大会&#xff08;以下简称“大会”&#xff09;在苏州隆重举行。大会由江苏省国防科学技术工业办公室、苏州市人民政府、先进技术成果长三角转化中心主办。赛宁网安作为全球一流数字孪生靶场服务商&#xff0c;携数字孪生靶场、网…

element-ui的按需引入报错解决:MoudleBuildFailed,完整引入和按需引入

官网&#xff1a; Element - The worlds most popular Vue UI framework 1.完整引入 &#xff08;1&#xff09;下载&#xff1a; npm i element-ui -S &#xff08;2&#xff09;引入&#xff1a; 在 main.js 中写入以下内容&#xff1a; import Vue from vue; impor…

Linux进阶篇:centos7扩展root分区:LVM应用案例

centos7扩展root分区&#xff1a;LVM应用案例 当服务器根分区或者是root分区存储空间快用完的时候&#xff0c;并且重要的数据都在root分区下&#xff0c;当如何应对&#xff0c;没关系坐好&#xff0c;分分钟解决它&#xff0c;我们可以进行分区扩容。 一 添加一块新的硬盘 …

鸿蒙应用开发之图案密码锁组件

前面学习了导航组件,现在来学习另一个密码设置和验证组件,这种组件比较常用。因为当用触屏手机之后,屏幕上就可以滑动操作,比普通PC电脑要多一些功能了。早前的密码都是输入数字,没有滑动输入九宫格的密码。 大体如下面的界面: 采用这种密码,一般情况下是不用记住数字,…

汇编——SSE打包整数

SSE也可以进行整数向量的加法&#xff0c;示例如下&#xff1a; ;sse_integer.asm extern printfsection .datadummy db 13 align 16pdivector1 dd 1dd 2dd 3dd 4pdivector2 dd 5dd 6dd 7dd 8fmt1 db "Packed Integer Vector 1: %d, %d, %d, %d",…

【鹅厂摸鱼日记(二)】(生活篇)初到深圳的人情冷暖

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:重生之我在鹅厂摸鱼⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多知识   &#x1f51d;&#x1f51d; 摸鱼日记 1. 前言2. 鹅厂的人文关怀…

论文笔记:NEFTune: Noisy Embeddings Improve Instruction Finetuning

iclr 2024 reviewer 评分 5666 1 论文思路 论文的原理很简单&#xff1a;在finetune过程的词向量中引入一些均匀分布的噪声即可明显地提升模型的表现 2 方法评估

2024年第二届交通运输与建筑工程国际会议(IACTCE2024)

2024年第二届交通运输与建筑工程国际会议&#xff08;IACTCE2024&#xff09; 会议简介 本次会议旨在为从事交通建设工程等相关领域的专家学者、工程技术人员和研发人员提供一个平台&#xff0c;分享科研成果和前沿技术&#xff0c;了解学术发展趋势&#xff0c;拓宽研究思路…

docker 安装canal

一、新建文件夹 新建文件夹logs, 新建文件canal.properties instance.properties docker.compose.yml canal.propertie 修改如下&#xff1a; 修改instance.properties内容如下 1.1 canal.properties ################################################# ######### …