粒子群算法笔记

article/2025/10/1 10:08:53

实质:在定义域随机放置多个变量,不断跳跃,同步寻找最优解。寻找方向受单个粒子与全部粒子的最优位置共同影响。单个粒子按照公式不断迭代寻找当新位置。多个变量聚集在某一点时,该点即是最优解。

控制其搜索速度(步长)的因素有两个,使其兼备全局搜索能力和局部搜索能力,减少错过最优解几率

  • 距离自身最优距离
  • 距离群体最优距离
状态转移方程:

img

img

img:代表优化问题在D维空间上的一个解,对应于粒子群中第i个粒子的位置

img:代表第i个粒子所经历的所有路程上最优的位置,即其在飞翔过程中离目标函数最优解最近的位置

img:代表所有粒子经历过的路程上的最优位置(可以认为是所有个体最优位置当中的最优位置)

img:代表粒子i的飞翔速度

参数说明:
  1. 粒子数m:一般为20-40。根据实际定义。
  2. 惯性因子img:一般在0.6-0.75.影响步长(即影响 全局/局部 搜索能力)。
  3. 加速常数 c1 ,c2 : 控制速度的影响因素的权重。一般取2左右的值。
  4. 常数r1 , r2 :在[0,1]之间随机数。
  5. v,x:步长和位移值。
基本粒子群算法

权重 w 为1.

算法改进

https://blog.csdn.net/xuehuafeiwu123/article/details/52299628

线性递减:前期有较高的全局搜索能力以找到合适的种子,后期有较高的开发能力,以加快收敛速度,故惯性权重递减。

学习因子、惯性权重是改进粒子群算法的关键
更新函数决定了粒子群算法的本质能力。

matlab实现
  1. 初始化种群(位置和速度
  2. 权重随迭代次数的增加而降低(线性递减
  3. 计算粒子适应度,将各个粒子的位置和适应度储存在Pbest中,将Pbest中适应度最优个体的位置和速度储存在Gbest中
  4. 根据公式更新粒子的速度和位移
  5. 将各个粒子与前一个最优位置比较,如果较好,则将其设置为当前最优位置
  6. 比较当前的Pbest与上一周期的Gbest,更新Gbest
  7. 达到迭代次数或者达到精度,停止。否则返回第二步

说明:

  • 为防止粒子位置超过最大区间,设定界限,在粒子位置与步长进行迭代时,超过边界最值的则设定为最值
  • r1,r2为随机数

matlab代码实现(后期改多维也很方便)

%	fitness		目标函数
%	N			粒子数目
%	c1,c2		学习因子	一般取2
%	w			权重
%	M			最大迭代次数	具体看精度要求
%	D			自变量个数/空间维度	由目标函数决定
%	a			上界
%	b			下界
%	Pbest		个体最优位置
%	PVbest		个体最优适应度
%	Gbest		种群最优位置
%	GVbest		种群最优适应度
%	目标函数	a = -10;
b = 10;
wmax = 0.75;
wmin = 0.25;
vmin = -10;
vmax = 10;
N = 10;
D = 1;
M = 100;
c1 = 2;
c2 = 2;%初始化种群  
%多维时可以考虑 x = Xmin(i)+(Xmax(i)-Xmin(i))*rand(1,D);
%			  v = Vmin(i)+(Vmax(i)-Vmin(i))*rand(1,D);
for i = 1:Nfor j = 1:Dx(i,j) = unifrnd(a,b);v(i,j) = (vmin+vmax)/2+randn*(vmax-vmin)/(2*2);%约95.4%数值分布在距离平均值有2个标准差之内的范围 故除以2end
end
%因速度以定义域中点为中心 成标准正态分布 故需保证所有粒子都在定义域中
for i = 1:Nfor j = 1:Dif v(i,j) < vminv(i,j) = vmin;elseif v(i,j) > vmaxv(i,j) = vmax;endend
end
%权重下降
for i = 1:Mw(i) = wmax - ((wmax-wmin)/M)*i;
end
%初始化粒子适应度
Pbest = x;
PVbest = fitness(x(:,1));
%初始化全局最优
Gbest = Pbest(1);
GVbest = PVbest(1);
for i = 2:Nif GVbest>PVbest(i)Gbest = Pbest(i);GVbest = PVbest(i);end
end
%迭代开始
for t = 1:Mfor	i = 1:Nv(i) = w(i)*v(i) + c1*rand*(Pbest(i)-x(i)) +c2*rand*(Gbest-x(i));x(i) = x(i) + v(i);%边界处理index = find(x(i,:)<a | x(i,:)>b);x(i,:) = unifrnd(a,b);%更新最优粒子 根据实际确定if fitness(x(i))< PVbest(i)Pbest(i) = x(i);PVbest(i) = fitness(x(i));endif PVbest(i) > GVbestGbest = Pbest(i);GVbest = PVbest(i);endend%每代最优值Tbest(t) = GVbest;endfigureplot(Tbest);xlable('迭代次数');ylable('适应度值');title('适应度进化曲线');%目标函数 因此设定中只有一维,故
function y = fitness(x)y = x^2;
end

http://chatgpt.dhexx.cn/article/3jhFvpHa.shtml

相关文章

粒子群算法及C++实现

参考博客 https://www.cnblogs.com/alan666/p/8311804.html https://blog.csdn.net/weixin_39059031/article/details/103723843 https://blog.csdn.net/weixin_40679412/article/details/80571854 https://blog.csdn.net/daaikuaichuan/article/details/81382794 https://blo…

粒子群算法详解

一.产生背景 ❃粒子群算法(particleswarm optimization&#xff0c;PSO)由Kennedy和Eberhart在1995年提出&#xff0c;该算法对于Hepper的模拟鸟群(鱼群)的模型进行修正&#xff0c;以使粒子能够飞向解空间&#xff0c;并在最好解处降落&#xff0c;从而得到了粒子群优化算法。…

高铁列车粒子群算法及改进粒子群算法多目标单目标运行优化设计

问题介绍 根据表1、2、3 所列数据&#xff0c;以能耗、运行时间、舒适性为目标分别设计列车运行速度—距离曲线&#xff1b;完成单目标以及多目标优化下的列车运行对比&#xff1b;选择其中一种方案&#xff0c;设计列车速度跟踪控制算法并进行性能分析。 1 列车参数设置表优化…

智能优化算法之粒子群算法

1、粒子群优化算法概述 粒子群优化算法(PSO&#xff1a;Particle swarm optimization) 是一种进化计算技术&#xff08;evolutionary computation&#xff09;。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想&#xff1a;是通过群体中个体之间的协作和信息共享来寻找最优…

基于群智能的三维路径规划算法 2 —— 粒子群算法

目录 1 PSO算法的基本理论2 PSO算法程序设计流程3 MATLAB编程实现4 算法举例5 函数1 unifrnd函数 1 PSO算法的基本理论 将三个散点看做一个粒子 惯性分量就是 v i − 1 d v^d_{i-1} vi−1d​ 粒子群&#xff08;PSO&#xff09;算法是依托群鸟觅食的模型寻找最优解。群体特征…

粒子群算法(2)

上一期&#xff1a;粒子群算法&#xff08;1&#xff09; 线性递减惯性权重 惯性权重w体现的是粒子继承先前的速度的能力&#xff0c;Shi,Y最先将惯性权重w引入到粒子群算法中&#xff0c;并分析指出一个较大的惯性权值有利于全局搜索&#xff0c;而一个较小的权值则更利于局部…

粒子群算法简介

粒子群算法简介 前言 本文内容借鉴于 刘衍民的博士论文:“粒子群算法的研究及应用”. 现有的大多数群智能算法,如:乌鸦算法、鸽子算法、蚁群算法、萤火虫算法和灰狼优化算法等&#xff0c;都可以归类为粒子群算法.(个人觉得,这些算法就是整个稀奇古怪的名字,颇有舞文弄墨,强…

粒子群算法(1)

粒子群算法 1.入门 粒子群算法&#xff0c;其全称为粒子群优化算法(Particle Swarm Optimization,PsO)。它是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的搜索算法。 2.什么是启发式算法&#xff1f; 启发式算法百度百科上的定义:一个基于直观或经验构造的算法,在可…

粒子群优化算法

背景 1995 年&#xff0c;Kennedy 和 Eberhart 两位博士共同 提出了粒子群优化算法 (Particle swarm optimization&#xff0c; PSO) PSO 算法中&#xff0c;将鸟群的个体位置或食物当作优化问题的解&#xff0c;利用群体中个体与最优个体以及个体之间的信息交互&#xff0c;引…

粒子群算法

粒子群算法简介 粒子群算法&#xff0c;其全称为粒子群优化算法(Particle Swarm Optimization,PSO) 。它是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的搜索算法。粒子群算法属于启发式算法也叫智能优化算法&#xff0c;其基本思想在于通过群体中个体之间的协作和信息…

粒子群(PSO)算法的理解与应用

最近在学习粒子群算法&#xff0c;看了很多资料都有点摸不清头脑&#xff0c;直到看了一篇博客中超级简洁的粒子群C实现代码&#xff0c;才明白粒子群算法的原理&#xff0c;真心感谢博主&#xff0c;在此贴出博主的博客地址&#xff1a; http://blog.sina.com.cn/s/blog_4ed02…

6套粒子群算法(内含matlab代码)

粒子群算法(1)----粒子群算法简介 一、粒子群算法的历史 粒子群算法源于复杂适应系统&#xff08;Complex Adaptive System,CAS&#xff09;。CAS理论于1994年正式提出&#xff0c;CAS中的成员称为主体。比如研究鸟群系统&#xff0c;每个鸟在这个系统中就称为主体。主体有适…

粒子群算法(PSO)详解

1 粒子群PSO算法简介 1.1 维基百科的解释 粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;&#xff0c;或称粒子群优化&#xff0c;是属于人工智能算法&#xff0c;公元1995年由肯尼迪&#xff08;Kennedy&#xff09;与埃伯哈特&#xf…

优化算法——粒子群算法(PSO)

一、粒子群算法的概述 粒子群算法(PSO)属于群智能算法的一种&#xff0c;是通过模拟鸟群捕食行为设计的。假设区域里就只有一块食物&#xff08;即通常优化问题中所讲的最优解&#xff09;&#xff0c;鸟群的任务是找到这个食物源。鸟群在整个搜寻的过程中&#xff0c;通过相互…

粒子群算法(PSO) 介绍

算法理解 粒子群算法&#xff0c;又叫鸟群算法&#xff0c;可见是受鸟群捕食行为的启发。它属于遗传算法、群智算法。粒子群算法关注于粒子的两个属性&#xff1a;位置和速度。每个粒子在空间中单独搜寻&#xff0c;它们记得自己找到的过最优解&#xff0c;也知道整个粒子群当…

【优秀作业】粒子群算法

粒子群优化算法 一、概述 粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;的思想来源于对鸟捕食行为的模仿&#xff0c;最初&#xff0c;Reynolds.Heppner 等科学家研究的是鸟类飞行的美学和那些能使鸟群同时突然改变方向&#xff0c;分散…

Dex加固与反编译

编译与反编译 编译 将java代码转换为Dalvik字节码 将res资源文件、AndroidManifest.xml等配置文件编译为二进制文件 反编译 将DEX文件转换为jar包或者Smali文件 将二进制资源文件还原为资源源码文件 编译与反编译是相对的过程&#xff0c;转换过程分别由编译器和反编译器实…

编译与反编译

编译&#xff1a;高级语言转换成计算机认识的低级语言 编译的主要的目的是将便于人编写、阅读、维护的高级语言所写作的源代码程序&#xff0c;翻译为计算机能解读、运行的低级语言的程序&#xff0c;也就是可执行文件。 反编译&#xff1a;Java的反编译&#xff0c;一般是将…

反编译网站

最近帮一个公司反编译了一个他们在用的网站&#xff0c;是一个印照片&#xff0c;然后群(384389229)里面的伙伴们&#xff08;专指&#xff1a;魂牵悲梦&#xff09;&#xff0c;叫我写个反编译的教程出来&#xff0c;由于前面时间很忙&#xff0c;一拖再拖到了现在终于有空就写…

编译/反编译

1.Android APK 1.软件 1.apktool 1.作用&#xff1a;反编译apk或重新打包apk 2.dex2jar 1.作用&#xff1a;将Android的可执行文件.dex转换为.jar 3.jd-gui 1.作用&#xff1a;方便阅读jar文件的代码工具 2.步骤 1.通过apktool将apk软件反编译2.使用dex2jar将classes.dex文件转…