(转载)基本粒子群算法及惯性权重分析(matlab实现)

1 理论基础

        粒子群算法(particle swarm optimization,PSO)是计算智能领域,除了蚁群算法、鱼群算法之外的一种群体智能的优化算法。该算法最早由Kennedy和Eberhart在1995年提出的。PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,找到食物最简单有效的策略就是搜寻当前距离食物最近的鸟的周围区域。PSO算法是从这种生物种群行为特征中得到启发并用于求解优化问题的,算法中每个粒子都代表问题的一个潜在解,每个粒子对应一个由适应度函数决定的适应度值。粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。
        PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用位置、速度和适应度值三项指标表示该粒子特征,适应度值由适应度函数计算得到,其值的好坏表示粒子的优劣。粒子在解空间中运动,通过跟踪个体极值Pbest和群体极值Gbest更新个体位置。个体极值Pbest是指个体所经历位置中计算得到的适应度值最优位置,群体极值Gbest是指种群中的所有粒子搜索到的适应度最优位置。粒子每更新一次位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度值更新个体极值Pbest和群体极值Gbest位置。

2 案例背景

2.1 问题描述

        本案例寻优的非线性函数为

        matlab绘图代码和图像如下:

[x,y]=meshgrid(-1.2:0.01:1.2);
z=sin( sqrt(x.^2+y.^2) )./sqrt(x.^2+y.^2)+exp((cos(2*pi*x)+cos(2*pi*y))/2)-2.71289;
mesh(x,y,z)

        从函数图形可以看出,该函数有很多局部极大值点,而极限位置为(0,0),在(0,0)附近取得极大值。

2.2 解题思路及步骤

基于PSO算法的函数极值寻优算法流程图如图2所示。

        其中,粒子和速度初始化随机初始化粒子速度和粒子位置;根据式(13-3)计算粒子适应度值;根据初始粒子适应度值确定个体极值和群体极值;根据式(13-1)与式(13-2)更新粒子速度和位置;根据新种群中粒子适应度值更新个体极值和群体极值。
        本案例中,适应度函数为函数表达式,适应度值为函数值。种群粒子数为20,每个粒子的维数为2,算法迭代进化次数为300。

3 MATLAB程序实现

        根据PSO算法原理,在MATLAB中编程实现基于PSO算法的函数极值寻优算法。
%% 清空环境
clc
clear%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;maxgen=300;   % 进化次数  
sizepop=20;   %种群规模Vmax=0.5;
Vmin=-0.5;
popmax=2;
popmin=-2;%% 产生初始粒子和速度
for i=1:sizepop%随机产生一个种群pop(i,:)=2*rands(1,2);    %初始种群V(i,:)=0.5*rands(1,2);  %初始化速度%计算适应度fitness(i)=fun(pop(i,:));   %染色体的适应度
end%% 个体极值和群体极值
[bestfitness bestindex]=max(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值%% 迭代寻优
for i=1:maxgenfor j=1:sizepop%速度更新V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));V(j,find(V(j,:)>Vmax))=Vmax;V(j,find(V(j,:)<Vmin))=Vmin;%种群更新pop(j,:)=pop(j,:)+V(j,:);pop(j,find(pop(j,:)>popmax))=popmax;pop(j,find(pop(j,:)<popmin))=popmin;%适应度值fitness(j)=fun(pop(j,:)); endfor j=1:sizepop%个体最优更新if fitness(j) > fitnessgbest(j)gbest(j,:) = pop(j,:);fitnessgbest(j) = fitness(j);end%群体最优更新if fitness(j) > fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endend yy(i)=fitnesszbest;    end
%% 结果分析
plot(yy)
title('最优个体适应度','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
        最优个体适应度值变化如图3所示。

 

        最终得到的最优个体适应度值为1.0053,对应的粒子位置为(0.0015,-0.0008),PSO 算法寻优得到最优值接近函数实际最优值,说明PSO算法具有较强的函数极值寻优能力。

4 延伸阅读

4.1 惯性权重的选择

        惯性权重w体现的是粒子继承先前的速度的能力,Shi.Y最先将惯性权重引入PSO算法中,并分析指出一个较大的惯性权值有利于全局搜索,而一个较小的惯性权值则更利于局部搜索。为了更好地平衡算法的全局搜索与局部搜索能力,Shi.Y提出了线性递减惯性权重(linear decreasing inertia weight,LDIW),即

4.2 w变化的算法性能分析

        算法参数设置:种群规模20,进化300代。每个实验设置运行100次,将100次的平均值作为最终结果。在上述的参数设置下,运用5种w取值方法对函数进行求解,并比较所得解的平均值、失
效次数和接近最优值的次数,来分析其收敛精度、收敛速度等性能。每种w的算法进化曲线如图13-5所示。
        本案例中,将距离最优解1.0054误差为0.01的解视为接近最优解,将0.8477及更小的解视为陷入局部最优的解。
        由图13-5和表13-1可以看出,惯性权重w不变的粒子群优化算法虽然具有较快的收敛速度,但其后期容易陷入局部最优,求解精度低;而几种w动态变化的算法虽然在算法初期收敛稍慢,但在后期局部搜索能力强,利于算法跳出局部最优而求得最优解,提高了算法的求解精度。
        式(13-5)中w动态变化方法,前期w变化较慢,取值较大,维持了算法的全局搜索能力;后期w变化较快,极大地提高了算法的局部寻优能力,从而取得了很好的求解效果。

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

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

相关文章

粒子群算法优化的OTSU图像分割

文章目录 1 基本概念2 算法实现3 算法优化举例4 算法构成要素分析5算法优缺点分析6 算法图像分割中应用 1 基本概念 粒子群优化算法&#xff08;PSO&#xff09;&#xff1a;它是进化算法的一种&#xff0c;它源于鸟群捕食的行为研究&#xff0c;基本思想是通过群体中个体之间…

机器学习(四十三):使用粒子群优化进化神经网络

文章目录 神经网络粒子群优化 (PSO)粒子常数迭代实现构建神经网络神经网络优化函数配置PSO优化PSO可视化K折交叉PSO优化K折查看结果神经网络 神经网络是机器学习算法,它学习如何使用训练示例来完成任务。该算法模拟我们大脑的行为来学习数据中的模式。 我们在神经网络中有三…

生成树与快速生成树(STP、RSTP)原理

STP生成树&#xff08;IEEE 802.1D&#xff09; 为什么需要生成树&#xff1f; 链路聚合技术只有线路的冗余&#xff0c;没有设备的冗余&#xff0c;如果要做设备上的冗余&#xff0c;就可以做生成树。表面上看生成树的作用是做设备冗余时&#xff0c;防止成环的一种途径&…

改进粒子群算法,遗传粒子群优化算法GAPSO,混沌粒子群算法CPSO,matlab程序

改进粒子群算法&#xff0c;遗传粒子群优化算法GAPSO&#xff0c;混沌粒子群算法CPSO&#xff0c;matlab程序 ID:91100672404209154专业算法工程师

2021-10-06 粒子群算法记录学习

粒子群算法的寻优算法记录学习&#xff08;由于时间关系未添加代码&#xff09; 粒子群算法&#xff08;PSO&#xff09;是计算智能领域&#xff0c;除了蚁群算法&#xff0c;鱼群算法之外的一种群体智能的优化算法。PSO算法源于对鸟类捕食行为的研究&#xff0c;鸟类捕食时&am…

粒子群算法原理|python实现|参数调优

粒子群算法是比较有名的群体智能算法之一&#xff0c;其他群体智能算法还包括蚁群算法、鱼群算法、人工蜂群算法等。今天学习一下粒子群算法。 文章目录 算法原理&#xff08;Inspiration&#xff09;优化过程python实现参数调优w参数的设置参数 c i c_i ci​的设置速度范围的…

STP生成树原理

环路引起的问题 二层交换网络 随着局域网规模的不断扩大&#xff0c;越来越多的交换机被用来实现主机之间的互连。如果交换机之间仅使用一条链路互连&#xff0c;则可能会出现单点故障&#xff0c;导致业务中断。为了解决此类问题&#xff0c;交换机在互连时一般都会使用冗余…

系统发育树的美化~Figtree(图文教程)

前言 figtree是一款用于进化生物学的进化树作图软件&#xff0c;常用于进化树的美化&#xff0c;可以设置颜色、名称、样式等参数。官网如下&#xff1a; FigTreehttp://tree.bio.ed.ac.uk/software/figtree/ 一、Figtree的安装 进入figtree的官网后&#xff0c;点击下图箭…

MEGA软件——系统发育树构建方法(图文讲解) 转载

转载&#xff1a;http://www.plob.org/2012/12/02/4927.html 一、序列文本的准备 构树之前先将目标基因序列都分别保存为txt文本文件中&#xff08;或者把所有序列保存在同一个txt文本中,可以用“>基因名称”作为第一行&#xff0c;然后重起一行 编辑基因序列&#xff09;&a…

粒子群算法介绍、matlab实现及相关改进

粒子群算法介绍、matlab实现及相关改进 参数 N&#xff1a;粒子数量 ⟹ \Longrightarrow ⟹一般取[20,40]&#xff0c;对于较难或者特定类别的问题&#xff0c;可以取[100,200]; D&#xff1a;决策变量维度 iter_Max&#xff1a;最大迭代次数 X&#xff1a;决策变量 V&…

文件树生成器

文件树生成 (批处理指令) 就是一个WIN的批处理指令 前言 最近在编写文档时,发现数据量有点多,并且文件的位置繁杂,于是就想着弄一个文件树的软件, 发现 Win 的的 CMD 命令中有tree这个指令, 于是就弄了下BAT 文件 好处 整体因人而异 我说说,我觉得的优点 可以快速的帮我…

STP生成树详解_01

一 、生成树协议产生的背景 1、局域网中出现的主要问题&#xff1a; 1) 网络互联 交换机和网线 2) 广播过多 分隔广播域 vlan 3) 局域网中终端设备较多&#xff0c;200台以上的计算机互通&#xff0c;需要多台交换机&#xff1f; 多台交换机之间如何连线&#xff1f; 交换机…

粒子群算法实现之python

python实现粒子群算法 粒子群算法&#xff08;PSO&#xff09;&#xff0c;又可以叫做鸟群算法&#xff0c;是学者观察模仿鸟群的行为而发展的一种智能搜索算法&#xff0c;和遗传算法一样&#xff0c;也是一种群智能算法。 总的来说&#xff0c;粒子群算法也是一种进化算法&a…

【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;

李华明Himi 原创,转载务必在明显处注明&#xff1a; 转载自 【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/472.html 一直以来Himi特别想在游戏中使用粒子系统&#xff0c;但是之前做J2me与Android中发现使用粒子做的效果都会造成游戏运行内存的一…

第十二讲:生成树概念及STP技术应用

在传统的交换网络中&#xff0c;设备通过单条链路进行连接&#xff0c;当某一个点或是某一个链路发生故障时可能导致网络无法访问&#xff0c;解决这种问题的办法是在网络中提供冗余链路&#xff0c;但是交换机网络中的冗余链路会产生广播风暴、MAC地址失效等现象&#xff0c;最…

粒子群算法及其改进

1 粒子群算法介绍 求解非线性最优化问题时&#xff0c;有一种比较常用的算法为智能体算法&#xff0c;这里我们介绍的粒子群算法就隶属于智能体算法。 粒子群算法是模拟鸟寻找食物&#xff1a;一群鸟在随机的搜索食物。在这个区域里只有一块食物&#xff0c;所有的鸟都不知道食…

系统发育树的生成与美化(MEGA7和iTOL)--1.MEGA7生成系统发育树

#小白学习生成系统发育树 1.序列准备-本文中的数据LOC号是在文献中的附件中所找到的&#xff0c;然后在Phytozome v13中逐个查找氨基酸序列&#xff0c;需要输入所查找的物种名称&#xff0c;以及基因号&#xff0c;如下图所示&#xff1a; 下滑看到蛋白质序列 然后将蛋白质序…

PCL 基于最小生成树(MST)获取单木骨架(粗)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 提取的过程大体上分为两个部分:生成单木MST(最小生成树)以及基于该MST获取大致的骨架结构(线条)。 具体的计算过程如下所述: 1、首先应用Delaunay三角剖分来构造初始图。Delaunay三角剖分是MST计算的基础,因…

详解综合学习粒子群算法——CLPSO(附该文作者给出的matlab代码)

最近团队出了两篇基于CLPSO[1]的改进算法&#xff0c;这里根据自己的理解分析一下这个综合学习的算法&#xff0c;并将文章作者给出的源代码分享出来供大家学习&#xff1a;https://download.csdn.net/download/Bernard_S/12612817 (免费下载&#xff0c;本身就是从作者的主页搬…

进化算法之粒子群算法和Matlab实现(多维)

&#xff08;粒子群算法进阶讲解传送门&#xff1a;(https://blog.csdn.net/DBLLLLLLLL/article/details/103036067) &#xff09; 前面一篇文章介绍了遗传算法&#xff0c;这里再介绍一种进化算法&#xff0c;称为粒子群算法。同遗传算法类似&#xff0c;粒子群算法也是仿照了…