基于改进莱维飞行和混沌映射的粒子群优化算法(Matlab代码实现)

欢迎来到本博客❤️❤️

博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

本文目录如下:

目录

1 概述

2 运行结果

3 参考文献

4 Matlab代码实现


1 概述

基于改进莱维飞行和混沌映射的粒子群优化算法(Improved Particle Swarm Optimization Algorithm based on Improved Levy Flight and Chaos Mapping)是一种改进的粒子群优化算法,通过引入改进的莱维飞行和混沌映射的方法,提高了算法的搜索能力和收敛速度。

在传统的粒子群优化算法中,粒子的位置更新是通过加权求和的方式得到的,而改进的莱维飞行方法则采用了莱维分布进行位置的更新。莱维分布是一种具有长尾特性的分布,可以增加粒子的搜索范围,提高算法的全局搜索能力。

此外,改进的粒子群优化算法还引入了混沌映射的方法,通过混沌映射生成的随机数来调整粒子的速度和位置,增加了算法的随机性和多样性,有利于避免陷入局部最优解。

改进的粒子群优化算法的具体步骤如下:
1. 初始化粒子群的位置和速度,并随机生成一个混沌映射的初始值。
2. 计算每个粒子的适应度值,并更新全局最优解和个体最优解。
3. 通过改进的莱维飞行方法更新粒子的位置。
4. 通过混沌映射调整粒子的速度和位置。
5. 判断是否满足停止条件,如果满足则结束算法,否则返回步骤2。

通过引入改进的莱维飞行和混沌映射的方法,该算法能够更好地探索搜索空间,提高算法的全局搜索能力和收敛速度,适用于解决各种优化问题。

2 运行结果

部分代码:


% Particle Swarm Optimization
function [gBest,gBestScore,cg_curve]=PSO(numm,N,iter,lb,ub,dim,y)

%PSO Infotmation
Vmax=ones(1,dim).*(ub-lb).*0.15;           %速度最大值
noP=N;
w=0.85;
c1=1.2;
c2=1.2;

% Initializations
vel=zeros(noP,dim);
pBestScore=zeros(noP);
pBest=zeros(noP,dim);
gBest=zeros(1,dim);
cg_curve=zeros(1,iter);

% Random initialization for agents.

pos = repmat(lb,N,1)+chaos(numm,N,dim).* repmat((ub-lb),N,1);

for i=1:noP
    pBestScore(i)=inf;
end

% Initialize gBestScore for a minimization problem
gBestScore=inf;


for l=1:iter
    
    % Return back the particles that go beyond the boundaries of the search space
    for i=1:size(pos,1)
        Flag4ub=pos(i,:)>ub;
        Flag4lb=pos(i,:)         pos(i,:)=(pos(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
    end
    
    for i=1:size(pos,1)
        %Calculate objective function for each particle
        fitness= y(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
  
    %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(j))
                vel(i,j)=Vmax(j);
            end
            if(vel(i,j)<-Vmax(j))
                vel(i,j)=-Vmax(j);
            end
            pos(i,j)=pos(i,j)+vel(i,j);
        end
    end
    cg_curve(l)=gBestScore;
end

end

3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]田兴华. 基于混沌映射的改进粒子群算法研究[D].青岛大学,2020.DOI:10.27262/d.cnki.gqdau.2020.001716.

[2]张福刚. 基于混沌映射的粒子群优化算法改进研究[D].广西大学,2012.

4 Matlab代码实现

你可能感兴趣的:(算法,matlab,java)