天天看點

【智能優化算法-差分進化算法】基于多種交叉政策和變異政策的差分進化算法求解單目标優化問題含Matlab源碼

1 内容介紹

單目标優化,多目标優化和限制優化問題在數學和工程領域普遍存在,且變得越來越複雜.進化計算是求解此類問題的有效方法,近年來,差分進化(Differential Evolution,DE)算法在進化計算領域受到越來越多的關注.差分進化算法是一種基于種群優化的随機優化技術,擁有結構簡單,易于實作,魯棒性強等優點.DE算法已被廣泛應用于許多領域.

【智能優化算法-差分進化算法】基于多種交叉政策和變異政策的差分進化算法求解單目标優化問題含Matlab源碼
【智能優化算法-差分進化算法】基于多種交叉政策和變異政策的差分進化算法求解單目标優化問題含Matlab源碼
【智能優化算法-差分進化算法】基于多種交叉政策和變異政策的差分進化算法求解單目标優化問題含Matlab源碼

2 部分代碼

%根據文章《Differential Evolution Algorithm With Strategy Adaptation for Global Numerical Optimization》的算法:ALGORITHMIC DESCRIPTION OF DE

%測試函數求值用函數testFun(x,FunIndex)

%變異向量用函數mutation(X,bestX,F,mutationStrategy)

%交叉向量用函數crossover(X,V,CR,crossStrategy)

%mutation

%mutatinotallow=1:DE/rand/1,

%mutatinotallow=2:DE/best/1,

%mutatinotallow=3:DE/rand-to-best/1,

%mutatinotallow=4:DE/best/2,

%mutatinotallow=5:DE/rand/2.

%crossover

%crossStrategy=1:binomial crossover

%crossStrategy=2:Exponential crossover

clear

close all

maxIteratinotallow=1000;%最大疊代次數

Generatinotallow=0;%進化代數,或者目前疊代代數

Xmax=30;%搜尋上界,可以根據需要改為向量形式

Xmin=-30;%搜尋下界

Dim=30;%個體維數

NP=50;%population size,種群規模

F=0.5;%scaling factor 縮放因子

CR=0.3;%crossover rate 交叉機率

FunIndex=3;%測試方程索引,不同值對應不同的測試函數

mutatinotallow=1;%變異政策

crossStrategy=1;%交叉政策

%%

%step1 初始化

%X represent population

%Generatinotallow=0;

X=(Xmax-Xmin)*rand(NP,Dim)+Xmin;%X行代表個體i,列代表個體i的次元j

%%

%step2 mutation,crossover,selection

while Generation<maxIteration

%求bestX

    for i=1:NP

        fitnessX(i)=testFun(X(i,:),FunIndex);%fitnessX表示X的适應值

    end

    [fitnessbestX,indexbestX]=min(fitnessX);

    bestX=X(indexbestX,:);%bestX表示最優值對應的位置

%%

%step2.1 mutation

%mutatinotallow=1:DE/rand/1,

%mutatinotallow=2:DE/best/1,

%mutatinotallow=3:DE/rand-to-best/1,

%mutatinotallow=4:DE/best/2,

%mutatinotallow=5:DE/rand/2,

%産生為每一個個體Xi,G 産生一個變異向量Vi,G。G代表進化代數

    V=mutation(X,bestX,F,mutationStrategy);

 %%   

%step2.2 crossover

%crossStrategy=1:binomial crossover

%crossStrategy=2:Exponential crossover

%産生為每一個個體Xi,G 産生一個交叉向量Ui,G。G代表進化代數

    U=crossover(X,V,CR,crossStrategy);

%%    

%step2.3 selection

    for i=1:NP

        fitnessU(i)=testFun(U(i,:),FunIndex);

        if fitnessU(i)<=fitnessX(i)

            X(i,:)=U(i,:);

            fitnessX(i)=fitnessU(i);

            if fitnessU(i)<fitnessbestX

                bestX=U(i,:);

                fitnessbestX=fitnessU(i);

            end

        end

    end

%%

    Generatinotallow=Generation+1;

    bestfitnessG(Generation)=fitnessbestX;

end

%%

%畫圖

plot(bestfitnessG);

optValue=num2str(fitnessbestX);

Locatinotallow=num2str(bestX);

disp(strcat('the optimal value','=',optValue));

disp(strcat('the best location','=',Location));

3 運作結果

【智能優化算法-差分進化算法】基于多種交叉政策和變異政策的差分進化算法求解單目标優化問題含Matlab源碼

4 參考文獻

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

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