1 内容介绍

量子粒子群优化(QPSO)算法是在经典的粒子群优化(PSO)算法的基础上所提出的一种具有量子行为的粒子群优化算法,具有高效的全局搜索能力。通过求解J.D.Schaffer提出的多峰函数优化问题的实验分析表明,方法具有良好的收敛性和稳定性。

2 部分代码

%% 实验系列

% 量子行为粒子群算法对Sphere函数寻优优化

clear all;

format long;

tic

%% 量子行为的粒子群算法

%% 基本参数

MaxEpochs=1500; %最大迭代次数

D=30; %粒子维数

M=30;%npso-(D/10); %基本种群规模

npso=M+ceil(D/10); %粒子种群规模

aCE0=0.8; %起始CE参数

aCE1=0.5; %终止CE参数

%% 初始化

% 初始化粒子

PL=100;

X_uplimit=PL.*ones(1,D);

X_lowlimit=-1*PL.*ones(1,D);


for i=1:npso

    X(i,:)=PL.*rands(1,D);

end

% load X0_Sphere.mat

% 初始适应值

for i=1:npso

    X(i,D+1)=Sphere(X(i,:));

end

% 初始个体最优和全局最优

X_pbest=X; % 初始个体最优为粒子本身

kg=1;

for k=1:npso

    if X_pbest(k,D+1)<=X_pbest(kg,D+1)

        kg=k;

    end

end

X_gbest=X_pbest(kg,:);

%% 进入迭代

for ep=1:MaxEpochs

% 计算平均最优位置

    C=mean(X_pbest(:,1:D));

    for j=1:npso

        % 计算非最优粒子的势阱中心

        r=rand(1,D);

        ZX(j,:)=r.*X_pbest(j,1:D)+(1-r).*X_gbest(1,1:D);  

    end

% 更新粒子的位置

    aCE=(aCE1-aCE0)*(ep-1)/(MaxEpochs-1)+aCE0;

    for j=1:npso

        if rand<=0.5

            X_GX1(j,:)=ZX(j,:)+aCE.*abs(C-X(j,1:D)).*log(1./rand(1,D));

        else

            X_GX1(j,:)=ZX(j,:)-aCE.*abs(C-X(j,1:D)).*log(1./rand(1,D));

        end

        for p=1:D

            if X_GX1(j,p)<X_lowlimit(1,p) || X_GX1(j,p)>X_uplimit(1,p)

                X_GX1(j,p)=PL*rands(1,1);

            end

        end

    end

    % 计算适应值

    X=X_GX1;

    for k=1:npso

        X(k,D+1)=Sphere(X(k,1:D));

    end  

    % 更新全局最优和局部最优

    for k=1:npso

        if X(k,D+1)<=X_pbest(k,D+1)

            X_pbest(k,:)=X(k,:);

        end

    end

    np=1;

    for ij=1:npso

        if X_pbest(ij,D+1)<=X_pbest(np,D+1)

            np=ij;

        end

    end

    X_gbest=X_pbest(np,:);

    Y(1,ep)=X_gbest(1,D+1);

end

save Y_QPSO_Sphere.mat Y

figure()

plot(1:size(Y,2),Y)

hold on;

figure()

plot(1:size(Y,2),log(Y))

hold on;






3 运行结果

【智能优化算法-粒子群算法】基于量子粒子群算法求解单目标优化问题附matlab代码_粒子群

4 参考文献

[1]余健, 郭平. 基于MATLAB的量子粒子群优化算法及其应用[J]. 计算机与数字工程, 2007, 35(12):2.

博主简介:擅长​​智能优化算法​​、​​神经网络预测​​、​​信号处理​​、​​元胞自动机​​、​​图像处理​​、​​路径规划​​、​​无人机​​、​​雷达通信​​、​​无线传感器​​等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。