粒子群(PSO)算法(附完整Matlab代码,可直接复制)
在粒子群优化算法中,每个解可用一只鸟(粒子)表示,目标函数就是鸟群所需要寻找的食物源。寻找最优解的过程中,粒子包含两种行为:个体行为和群体行为。
个体行为:粒子根据自身在寻优过程中的最优解更新自己的位置。
群体行为:粒子根据群体在寻优过程中的最优解更新自己的位置。
假设N个粒子组成1个粒子群,每个粒子都是一个D维向量,则每个粒子的位置为:
将其代入适应度函数计算出适应度值,第i个粒子经历过的最优适应度值的位置记为个体历史最优:
整个粒子群经历过的最优位置记为全局最优:
第i个粒子的飞行速度记为:
则第t+1轮迭代后第i个粒子的第j维速度为:
位置更新为:
若粒子位置任何一维超出限定的上界ub和下界lb,则将其直接赋值为ub或lb。
粒子群PSO完整Matlab代码如下:
clc;
clear all;
close all;
pop=50;
dim=2;
ub=[10,10];
lb=[-10,-10];
vmax=[2,2];
vmin=[-2,-2];
maxIter=100;
fobj=@(X)fun(X);
[Best_Pos,Best_fitness,IterCurve]=pso(pop,dim,ub,lb,fobj,vmax,vmin,maxIter);
figure
plot(IterCurve,'r','linewidth',2);
grid on;
disp(['求解得到的x1,x2是:',num2str(Best_Pos(1)),' ',num2str(Best_Pos(2))]);
disp(['最优解对应的函数:',num2str(Best_fitness)]);%pop——种群数量
%定义粒子群种群初始化函数function [X]=initialization(pop,ub,lb,dim)for i=1:popfor j=1:dimX(i,j)=(ub(j)-lb(j))*rand()+lb(j);%在限定的 end end
endfunction fitness=fun(x)fitness=sum(x.^2);
endfunction [X]=BoundaryCheck(X,ub,lb,dim)for i=1:dimif X(i)>ub(i)X(i)=ub(i);endif X(i)<lb(i)X(i)=lb(i);endend
endfunction [Best_Pos,Best_fitness,IterCurve]=pso(pop,dim,ub,lb,fobj,vmax,vmin,maxIter)
c1=2.0;
c2=2.0;
V=initialization(pop,vmax,vmin,dim);
X=initialization(pop,ub,lb,dim);
fitness=zeros(1,pop);
for i=1:popfitness(i)=fobj(X(i,:));
end
pBest=X;
pBestFitness=fitness;
[~,index]=min(fitness);
gBestFitness=fitness(index);
gBest=X(index,:);
Xnew=X;
fitnessNew=fitness;
for t=1:maxIterfor i=1:popr1=rand(1,dim);r2=rand(1:dim);V(i,:)=V(i,:)+c1.*r1.*(pBest(i,:)-X(i,:))+c2.*r2.*(gBest-X(i,:));V(i,:)=BoundaryCheck(V(i,:),vmax,vmin,dim);Xnew(i,:)=X(i,:)+V(i,:);fitnessNew(i)=fobj(Xnew(1,:));if fitnessNew(i)<pBestFitness(i)pBest(i,:)=Xnew(i,:);pBestFitness(i)=fitnessNew(i);endif fitnessNew(i)<gBestFitnessgBestFitness=fitnessNew(i);gBest=Xnew(i,:);endendX=Xnew;fitness=fitnessNew;Best_Pos=gBest;Best_fitness=gBestFitness;IterCurve(t)=gBestFitness;
end
end
相关阅读:
1、粒子群(PSO)优化算法(附完整Matlab代码,可直接复制)
2、灰狼(GWO)优化算法(附完整Matlab代码,可直接复制)
3、正余弦(SCA)优化算法(附完整Matlab代码,可直接复制)
4、萤火虫(FA)优化算法(附完整Matlab代码,可直接复制)
5、果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)
粒子群(PSO)算法(附完整Matlab代码,可直接复制)相关推荐
- 果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)
果蝇优化算法的核心是利用果蝇搜索实物的机制来对问题进行寻优.果蝇根据气味来确定食物的位置,食物腐烂程度越高,气味越大,果蝇对其越敏感.果蝇的觅食行为如下图: Fig1. 果蝇觅食行为示意图 1.果蝇位 ...
- 灰狼(GWO)算法(附完整Matlab代码,可直接复制)
尊重他人劳动成果,请勿转载! 有问题可留言或私信,看到了都会回复解答! 其他算法请参考: 1.粒子群(PSO)优化算法(附完整Matlab代码,可直接复制)https://blog.csdn.net/ ...
- 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码
粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...
- 【优化算法】细菌粒子群优化算法【含Matlab源码 1195期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]细菌粒子群优化算法[含Matlab源码 1195期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏Mat ...
- 改进粒子群优化算法(IWAPSO)的MATLAB源程序
改进粒子群优化算法(IWAPSO)的MATLAB源程序 作者:aaron8967 主页:http://aaron8967.blog.51cto.com 说明:粒子群优化算法(Particle S ...
- 改进粒子群优化算法(PURPSO)的MATLAB源程序
改进粒子群优化算法(PURPSO)的MATLAB源程序 作者:aaron8967 主页:http://aaron8967.blog.51cto.com 说明:粒子群优化算法(Particle S ...
- java 对音频文件降噪_(转)音频降噪算法 附完整C代码
转:https://www.cnblogs.com/cpuimage/p/8905965.html 降噪是音频图像算法中的必不可少的. 目的肯定是让图片或语音 更加自然平滑,简而言之,美化. 图像算法 ...
- 音频降噪算法 附完整C代码
本文转载自博客:https://cloud.tencent.com/developer/article/1117226 降噪是音频图像算法中的必不可少的. 目的肯定是让图片或语音 更加自然平滑,简而言 ...
- wav文件降噪c语言,音频降噪算法 附完整C代码
降噪是音频图像算法中的必不可少的. 目的肯定是让图片或语音 更加自然平滑,简而言之,美化. 图像算法和音频算法 都有其共通点. 图像是偏向 空间 处理,例如图片中的某个区域. 图像很多时候是以二维数据 ...
最新文章
- 【翻译】在Sencha应用程序中使用插件和混入
- 如何从零开始学python_从零开始学Python【4】--numpy
- Spring加载流程源码
- java 0x0f_Java - 字节 字符
- bzoj1084: [SCOI2005]最大子矩阵
- nfc/nfc模式_NFC的完整形式是什么?
- 康威定律-软件之道:软件开发争议问题剖析
- Java岗招聘标准水涨船高,五年Java程序员表示面试太难了
- 各个省市mysql表附带行政id(一)
- 智慧园区SaaS管理系统解决方案:赋能园区实现信息化、数字化管理
- win10系统,字体及软件内容特别小(亲试有效)
- c语言自学教程——字符函数和字符串函数
- ElasticSearch中minimum_should_match详细介绍
- PE系统纯净(可以识别nvme固态)
- tcpreplay的安装与使用
- java速算24,java枚举速算24正解集合
- 高通骁龙410系列-MSM8916(M9+) ( Cortex-A53架构)
- python如何计算概率事件_145、Python实现概率分布
- 如何应对 DDoS 勒索攻击?
- spring中的loc和aop
热门文章
- OpenCV图像模糊:高斯滤波、双边滤波
- python中seth是什么意思_python中的seth有什么用
- 亲,你寄的 U盘不是 4G 的哟~
- 入门必做的51单片机实验2----》利用外部中断的方法来控制发光二极管和共阴极数码管显示十六进制的0到F
- c++自制小游戏(不完美)
- 北大青岛_深圳嘉华_shell特殊变量演示(五)生产环境下使用变量子串
- 【学习笔记】IP地址块的聚合
- pytest文档48-切换 base_url 测试环境(pytest-base-url)
- 智伴机器人wifi键在哪里_智伴机器人的操作和功能
- linux python 安装失败,Linux下面安装Python常见错误解决方法