经典群智能算法|粒子群算法(PSO)|Particle Swarm Optimization|群智能算法应用|改进PSO|improvementParticle Swarm Optimization

粒子群算法(Particle Swarm Optimization,简称PSO)是一种进化计算算法,用于解决优化问题。该算法模拟了鸟群或鱼群中个体之间的协作行为,通过不断调整粒子的位置来搜索问题的最优解。PSO最初由James Kennedy和Russell Eberhart于1995年提出,灵感来自于模拟鸟群或鱼群中个体之间的协作和信息共享。

PSO的基本思想是通过调整粒子的速度和位置,使粒子群朝着问题的最优解方向搜索。每个粒子都有一个位置和速度向量,表示其在搜索空间中的位置和前进方向。粒子根据自身的经验和群体的经验不断调整自己的速度和位置,以寻找最优解。

PSO的算法步骤如下:

  1. 初始化粒子群,包括粒子的位置和速度。
  2. 计算每个粒子的适应度,评估其在问题空间中的表现。
  3. 更新粒子的速度和位置,考虑自身经验和群体经验。
  4. 重复步骤2和步骤3,直到满足停止条件。

PSO的性能和收敛性与参数设置、问题的特性等因素有关,需要仔细调整参数以适应不同的问题。该算法在寻找全局最优解方面表现良好,尤其在连续优化问题中常被使用。

1、PSO相关应用:

(1)基于改进的多目标粒子群优化的端元束提取
(2)使用改进的粒子群优化算法确定对称级联多电平逆变器的最佳开关角
(3)使用粒子群优化(Deep PSO)改进深度学习以进行预测/回归
(4)使用粒子群优化(Deep PSO)改进基于深度学习的CNN和极限学习机进行分类

2、PSO相关改进算法

(1)一种方向驱动自调节粒子群优化算法的改进算法
(2)improved particle swarm optimization algorithms|13种改进的粒子群算法

1、AsyLnCPSO 学习因子异步化的粒子群优化算法
2、BreedPSO 基于杂交的粒子群优化算法
3、CLSPSO 混沌粒子群优化算法
4、LinWPSO 线性递减权重粒子群优化
5、LnCPSO 学习因子同步变化的粒子群优化算法
6、PSO 标准粒子群优化算法
7、RandWPSO 随机权重粒子群优化算法
8、SAPSO 自适应权重粒子群优化算法
9、SecPSO 二阶粒子群优化算法
10、SecVibratPSO 二阶震荡粒子群优化算法
11、SelPSO 基于自然选择的粒子群优化算法
12、SimuAPSO 基于模拟退火的粒子群优化算法
13、YSPSO 带压缩因子的粒子群优化算法

3、pso原始代码:

%% PSO
function [gBestScore,gBest,cg_curve]=PSO(N,Max_iteration,lb,ub,dim,fobj)

	%PSO Infotmation
	% if(max(size(ub)) == 1)
	   ub = ub.*ones(1,dim);
	   lb = lb.*ones(1,dim);  
	% end
	
	Vmax=6;
	noP=N;
	wMax=0.9;
	wMin=0.6;
	c1=2;
	c2=2;
	iter=Max_iteration;
	vel=zeros(noP,dim);
	pBestScore=zeros(noP);
	pBest=zeros(noP,dim);
	gBest=zeros(1,dim);
	cg_curve=zeros(1,iter);
	vel=zeros(N,dim);
	pos=zeros(N,dim);
	
	%Initialization
	for i=1:size(pos,1) 
	    for j=1:size(pos,2) 
	        pos(i,j)=(ub(j)-lb(j))*rand()+lb(j);
	        vel(i,j)=0.3*rand();
	    end
	end
	for i=1:noP
	    pBestScore(i)=inf;
	end

	% Initialize gBestScore for a minimization problem
 	gBestScore=inf;
	for l=1:iter   
	    Flag4ub=pos(i,:)>ub;
	    Flag4lb=pos(i,:)<lb;
	    pos(i,:)=(pos(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
	    
	    for i=1:size(pos,1)     
	        %Calculate objective function for each particle
	        fitness=fobj(pos(i,:));
	
	        if(pBestScore(i)>fitness)
	            pBestScore(i)=fitness;
	            pBest(i,:)=pos(i,:);
	        end
	        if(gBestScore>fitness)
	            gBestScore=fitness;
	            gBest=pos(i,:);
	        end
	    end
	
	    %Update the W of PSO
	    w=wMax-l*((wMax-wMin)/iter);
	    %Update the Velocity and Position of particles
	    for i=1:size(pos,1)
	        for j=1:size(pos,2)       
	            vel(i,j)=w*vel(i,j)+c1*rand()*(pBest(i,j)-pos(i,j))+c2*rand()*(gBest(j)-pos(i,j));
	            
	            if(vel(i,j)>Vmax)
	                vel(i,j)=Vmax;
	            end
	            if(vel(i,j)<-Vmax)
	                vel(i,j)=-Vmax;
	            end            
	            pos(i,j)=pos(i,j)+vel(i,j);
	        end
	    end
	    cg_curve(l)=gBestScore;
	end
end

你可能感兴趣的:(元启发式算法,智能优化算法,MATLAB,算法)