简介

  • 粒子群优化算法(PSO)是由Eberhart博士和Kennedy博士于1995年提出的,是一种基于迭代的优化算法。其是基于模拟鸟类捕食行为进行研究的。
  • PSO中,每个优化问题的解都是搜索空间中的一只鸟,我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值,每个粒子还有一个速度决定它们飞翔的方向和距离。粒子们追随当前的最优粒子在解空间中搜索。
  • PSO初始化为一群随机粒子,然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。其一:粒子本身所找到的最优解,称为个体极值pBest;其二:整个种群目前找到的最优解,称为全局极值gBest。(向自己学习和向他人学习来优化自己)

速度和位置的更新及对应参数介绍

速度和位置的更新

每个粒子的速度和位置都以随机方式进行初始化。而后粒子就朝着全局最优和个体最优的方向靠近。
参数解释:

有关c1,c2的补充:
1)低的值允许粒子在被拉回前可以在目标区域外徘徊,高的值则导致粒子突然冲向或超越目标区域;
2)若c1 = 0,则粒子没有认知能力,在粒子的相互作用下,容易陷入局部极值点;
3)若c2 = 0,粒子间没有社会信息共享,算法变成一个多起点的随机搜索;
4)若c1 = c2 = 0,粒子将一直以当前速度飞行,直到到达边界。通常c1,c2在[0,4]之间,一般取c1 = c2 = 2

算法流程图

用PSO优化算法求Rosenbrock函数的极值

Rosenbrock函数


x1,x2的范围均在[-2.048,2.048]之间

目标函数fun.m文件

function y = fun(x)
y=100 * (x(1).^2 - x(2)).^2 + (1 - x(1)).^2;
end

主函数PSO.m文件

clc
clear
%%绘制目标函数曲线
figure(1);
[x,y] = meshgrid(-2.048:0.1:2.048,-2.048:0.1:2.048);
%输入平方时,要在“^”前加“.”,否则可能有错
z = 100 * (x.^2 - y).^2 + (1 - x).^2;
mesh(x,y,z);
xlabel('x');ylabel('y');zlabel('f(x,y)');
title('Rosenbrock函数');
hold on
%%参数初始化
c1 = 2;
c2 = 2;
maxgen=100; %进化次数
sizepop=10; %种群规模Vmax=0.5;  %最大速度
Vmin=-0.5;  %最小速度
popmax=2;   %最大位置
popmin=-2;  %最小位置%%产生初始粒子和速度
for i=1:sizepop%随机产生一个种群pop(i,:)=2*rands(1,2); %初始种群  rands中的参数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:maxgen for 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);endendyy(i)=fitnesszbest;
end
%%结果分析
figure(2);
plot(yy)
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

结果图示如下:
图一:Rosenbrock函数图像

图二:进化代数和适应度之间的关系

有关其他函数的画法及其优化与上述类似,不再赘述。

PSO算法的改进

加惯性权重PSO


对速度更新方程加惯性权重w。当粒子群到达局部最优附近时,粒子速度的更新主要由第一项来决定。由于固定参数的PSO算法的w通常小于1,粒子的速度将会越来越小,甚至停止运动,发生早熟收敛。
1)若w = 0,由于速度本身没有记忆性,只取决于粒子当前位置和其历史最好位置pbest和gbest,所以,粒子群将收缩到当前的全局最好位置,更像一个局部算法;
2)若w不为0,微粒有扩展搜索空间的趋势,即有全局搜索能力;
3)用惯性权重来控制前面的速度对当前速度的影响,较大的w可以加强PSO的全局搜索能力,较小的w能加强局部搜索能力。

故往往会在PSO算法前期将w设置的较大些,使其可以基本访问到解空间的所有解;当到算法后期,已经快接近最优解的时候,将w的值设置的较小一些,增加局部搜索能力,使之更快的逼近最优解。

加收缩因子PSO

加收缩因子k有助于确保PSO算法收敛。

通常

收缩因子控制系统行为最终收敛,且可以有效搜索不同的区域,该法能得到高质量的解。

注意:迭代次数、种群规模、初始速度和位置等参数都会影响算法的性能

PSO算法及其对函数优化问题的处理+PSO算法改进相关推荐

  1. AI:人工智能领域算法思维导图集合之有监督学习/无监督学习/强化学习类型的具体算法简介(预测函数/优化目标/求解算法)、分类/回归/聚类/降维算法模型选择思路、11类机器学习算法详细分类之详细攻略

    AI:人工智能领域算法思维导图集合之有监督学习/无监督学习/强化学习类型的具体算法简介(预测函数/优化目标/求解算法).分类/回归/聚类/降维算法模型选择思路.11类机器学习算法详细分类(决策树/贝叶 ...

  2. 路径规划算法:基于灰狼优化(GWO)的路径规划算法- 附代码

    路径规划算法:基于灰狼优化(GWO)的路径规划算法- 附代码 文章目录 路径规划算法:基于灰狼优化(GWO)的路径规划算法- 附代码 1.算法原理 1.1 环境设定 1.2 约束条件 1.3 适应度函 ...

  3. 算法实验--主函数只有五行的Floyed的算法以及最短路径输出

    Floyed算法 原理: Floyed-Warshall 算法用来找出每对点之间的最短距离.它需要用邻接矩阵来储存边,这个算法通过考虑最佳子路径来得到最佳路径. 点 i 到点 j 的距离 :dista ...

  4. 麻雀优化算法_多种智能优化算法应用案例分享-附代码

    1.智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码_Jack旭的博客-CSDN博客​blog.csdn.net 2.智能优化算法 ...

  5. 【智能优化算法】基于全局优化的改进鸡群算法求解单目标优化问题(ECSO)附matlab代码

    1 简介 智能算法分为两种,一种是群体智能算法(swarmintelligencealgorithm),该算法大多模拟自然界中动植物的特有行为,并将其表达成数学语言,从而进行迭代寻优,如模拟蝙蝠回声定 ...

  6. C语言快速排序算法及三种优化方式

    C语言快速排序算法及三种优化方式 C语言快速排序算法及三种优化方式 原理 快速排序复杂度分析 1 时间复杂度 2 空间复杂度 快速排序代码实现 1 普通快速排序 2 快速排序优化1-三数取中优化不必要 ...

  7. 百度SEO优化要怎么样避免蓝天算法的排查?

    目前,许多国内网站管理员使用高权重站点或新闻源站点来出售辅助目录和软件广告以获取利润,从而导致搜索引擎上出现许多低质量的垃圾文章,严重影响了用户的搜索体验.因此,百度发布了"蓝天算法&quo ...

  8. 基于matlab的捕食算法,【优化求解】基于matlab细菌觅食算法的函数优化分析【含Matlab源码 217期】...

    一.简介 实际生活需求促进了最优化方法的发展.近半个多世纪以来,由于传统优化方法的不足,一些具有全局优化性能且通用性强的进化算法,因其高效的优化性能.无需问题精确描述信息等优点,受到各领域广泛的关注和 ...

  9. 粒子群优化算法实现寻找函数最值

    粒子群算法简介 粒子群优化(Particle Swarm Optimization, PSO),又称微粒群算法,是由J. Kennedy和R. C. Eberhart等于1995年开发的一种演化计算技 ...

  10. 【学习笔记】【算法】【智能优化】粒子群优化(PSO)

    [学习笔记][算法][智能优化]粒子群优化(PSO) 文章目录 [学习笔记][算法][智能优化]粒子群优化(PSO) 1 算法背景 1.1 背景 1.2 基础知识 2 算法原理 2.1 基本原理 2. ...

最新文章

  1. 微型计算机滑动平均值滤波器方程,微型计算机控制技术期末复习2011.ppt
  2. 设计模式(一) 策略模式
  3. 3d标注_告别繁琐,浩辰3D「文本特征」让设计更智慧!
  4. 饿了么“多等5分钟”后,美团外卖宣布给骑手留出8分钟...
  5. 如何调整金格电子章服务器印章_电子签章赋能勘察设计新动力
  6. 哈,我再xp Professional上安装SqlServer2005桌面管理器
  7. 服务器装系统提示获取分区失败,u盘安装系统分区错误解决方法
  8. 时间服务器+注册表,注册表缺失导致Windows Server 2008 R2时钟服务W32time不能自启
  9. php 页面缓存的做法,使用php进行页面缓存
  10. 鼠标右键没有新建选项怎么办
  11. 梦想CAD软件(控件)图层介绍
  12. 元胞自动机 C实现 + OpenCV界面
  13. JS或JQuery动态创建Html元素的一些方法
  14. 博客写作小技巧【2】:段落首行缩进、添加分割线……
  15. linux运维之磁盘利用率100%教你做人
  16. arm linux 串口 蓝牙,arm linux串口藍牙工具移植及使用
  17. ARM:g-sensor重力传感器电路原理图、I2C控制器数据手册、g-sersor芯片数据手册
  18. 基于 RICS-V 架构的单周期处理器设计(含所有格式指令)—— 逻辑部件概述
  19. Go 操作 ElasticSearch 实战
  20. 不习惯PDF编辑?用迅读PDF转换器

热门文章

  1. MTK logo.bin手动制作(个人博客:浏览器直接输入wugn.tech)
  2. QQ空间欢迎动画代码大全
  3. 7-4 行为模式解析-摆脱被动和畏缩的行为模式,掌握职场主动权
  4. 将前端传过来的base64加密图片保存到本地,并且判断来自于哪个终端
  5. 元气骑士双人远程联机指南
  6. “0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”
  7. 杭州最美的骑行路线在此!趁着春天蹬车撒欢去!
  8. 百度智能api接口汇总
  9. C语言中 \0 代表什么?
  10. 如何将手机的网络代理给电脑 win10