粒子群算法的起源

1995年,受到鸟群觅食行为的规律性启发,James Kennedy和Russell Eberhart建立了一个简化算法模型,经过多年改进最终形成了粒子群优化算法(Particle Swarm Optimization, PSO) ,也可称为粒子群算法

粒子群优化算法的基本思想

粒子群算法的思想源于对鸟群觅食行为的研究,鸟群通过集体的信息共享使群体找到最优的目的地。如下图,设想这样一个场景:鸟群在森林中随机搜索食物,它们想要找到食物量最多的位置。但是所有的鸟都不知道食物具体在哪个位置,只能感受到食物大概在哪个方向。每只鸟沿着自己判定的方向进行搜索,并在搜索的过程中记录自己曾经找到过食物且量最多的位置,同时所有的鸟都共享自己每一次发现食物的位置以及食物的量,这样鸟群就知道当前在哪个位置食物的量最多。在搜索的过程中每只鸟都会根据自己记忆中食物量最多的位置和当前鸟群记录的食物量最多的位置调整自己接下来搜索的方向。鸟群经过一段时间的搜索后就可以找到森林中哪个位置的食物量最多。

粒子群算法的特点

粒子群算法具有收敛速度快、参数少、算法简单易实现的优点(对高维度优化问题,比遗传算法更快收敛于最优解),但是也会存在陷入局部最优解的问题。

Matlab代码

fun

function y = fun(x)
%函数用于计算粒子适应度值
%x           input           输入粒子
%y           output          粒子适应度值 y=-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+exp(1);%y=x(1)^2-10*cos(2*pi*x(1))+10+x(2)^2-10*cos(2*pi*x(2))+10;

PSO

%% 该代码为基于PSO的函数极值寻优
clc
clear%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;maxgen=500;   % 进化次数
sizepop=100;   %种群规模Vmax=1;
Vmin=-1;
popmax=5;
popmin=-5;%% 产生初始粒子和速度
for i=1:sizepop%随机产生一个种群pop(i,:)=5*rands(1,2);    %初始种群V(i,:)=rands(1,2);  %初始化速度%计算适应度fitness(i)=fun(pop(i,:));   %染色体的适应度
end%% 个体极值和群体极值
[bestfitness bestindex]=min(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,:)+0.5*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);

PSOMutation


%% 该代码为基于变异粒子群算法的函数极值寻优算法
%% 清空环境
clc
clear%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;maxgen=500;   % 进化次数
sizepop=100;   %种群规模Vmax=1;
Vmin=-1;
popmax=5;
popmin=-5;%% 产生初始粒子和速度
for i=1:sizepop%随机产生一个种群pop(i,:)=5*rands(1,2);    %初始种群V(i,:)=rands(1,2);  %初始化速度%计算适应度fitness(i)=fun(pop(i,:));   %染色体的适应度
end%% 个体极值和群体极值
[bestfitness bestindex]=min(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,:)+0.5*V(j,:);pop(j,find(pop(j,:)>popmax))=popmax;pop(j,find(pop(j,:)<popmin))=popmin;if rand>0.98     pop(j,:)=rands(1,2);end%适应度值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);

粒子群优化算法的寻优算法——非线性函数极值寻优Matlab相关推荐

  1. 粒子群算法的寻优算法-非线性函数极值寻优

    粒子群算法的寻优算法-非线性函数极值寻优 1.算法概述 粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法.微粒群算法.或微粒群优化算法.是通过模拟鸟群 ...

  2. 《MATLAB 神经网络43个案例分析》:第4章 神经网络遗传算法函数极值寻优——非线性函数极值寻优

    <MATLAB 神经网络43个案例分析>:第4章 神经网络遗传算法函数极值寻优--非线性函数极值寻优 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB ...

  3. 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用

    本微信图文利用神经网络进行非线性函数数据的拟合并通过遗传算法对训练后的神经网络进行非线性函数极值寻优.

  4. 如何利用神经网络结合遗传算法进行非线性函数极值寻优(2)

    如何利用神经网络结合遗传算法进行非线性函数极值寻优

  5. Python实现PSO粒子群优化支持向量机回归模型(svr算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 在污水处理全过程中,为了更好地使解决后的水达到环保标准,在污水处 ...

  6. 【机器学习】基于蚁群算法的多元非线性函数极值寻优

    如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习. If you like the content here, you can give me the greates ...

  7. 【回归预测-FNN预测】基于粒子群优化前馈网络实现对婚姻和离婚数据回归预测附matlab代码

    ​1 内容介绍 (婚姻和离婚数据)) Marriage and Divorce Dataset | Kaggle 数据集信息: 此数据包含 31 列 (100x31).前 30 列是特征(输入),即年 ...

  8. 粒子群优化算法(PSO)简介及MATLAB实现

    目录 粒子群优化算法概述 PSO算法步骤 PSO(粒子群优化算法)与GA(遗传算法)对比 PSO的MATLAB实现 粒子群优化算法概述 • 粒子群优化(PSO, particle swarm opti ...

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

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

最新文章

  1. 查找二叉树中出现次数最多的数 Find Mode in Binary Search Tree
  2. Intent Android 详解
  3. mysql insert锁机制
  4. 使用fastjson进行json字符串和List的转换
  5. junit、spring浅析、ssm框架、json格式
  6. 偷窥、报复、歧视,Google 为何频发性骚扰事件?
  7. WLAN 与WIFI的区别?
  8. php中where条件whereRaw,「laravel whereRaw 和 where(DB::raw(''))」- 海风纷飞Blog
  9. Matlab中ismissing函数的使用
  10. 哔哩哔哩2019秋招笔试试题二——脸滚键盘
  11. 点, 直线, 平面的位置关系剩余部分快速学习笔记
  12. 【遗传算法GA】入门:基本介绍
  13. Thread.setDaemon详解
  14. 亚马逊美国站服装类目CPC认证详解
  15. 自认为个人总结得最好的一次读后感:知行 - 技术人的管理之路.ppt
  16. compact php,如何使用php compact()函数
  17. 如何成为用户真正需要的短信验证平台
  18. ambari Metrics Collector 无法收集信息
  19. pspice导入元件Orcad spice模型
  20. 国外精美网站设计欣赏的200佳网站推荐(系列十一)

热门文章

  1. html css javascript 动漫网页设计成品 (妖狐小红娘) 学生漫画网页DW制作 web实训网页设计 HTML5期末大作业
  2. P1978 集合 (set)
  3. 第 2-3 课:迭代法计算定积分
  4. [软件工具][原创]pcl引用库一键配置到VisualStudio中支持vs2015-v2022使用教程
  5. linux装软件需要root用户,Linux下非root用户安装软件的一般流程:
  6. 你以为的匿名评价,原来并没真的匿名
  7. 多媒体图像切换与中值区分法
  8. 24小时制和12小时制am Matlab,十二钟头制与二十四小时制详解
  9. 实现支付功能并生成二维码
  10. parameter缩略语_通信缩略语和术语