天天看點

【智能優化算法-粒子群算法】基于量子粒子群算法求解單目标優化問題附matlab代碼

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 運作結果

4 參考文獻

部落客簡介:擅長​​智能優化算法​​、​​神經網絡預測​​、​​信号處理​​、​​元胞自動機​​、​​圖像處理​​、​​路徑規劃​​、​​無人機​​、​​雷達通信​​、​​無線傳感器​​等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系部落客删除。

繼續閱讀