資源簡介
適合初學(xué)者使用,對差分進化算法進行初步了解,值得初學(xué)者看看
代碼片段和文件信息
function?DE(GmF0)
%差分進化算法程序基本程序
%F是變異率????%Gm=1000;?%最大迭代次數(shù)
Np=100;?%種群規(guī)模
CR=0.9;??%雜交參數(shù)
G=1;%初始化代數(shù)
N=10;%所求問題的維數(shù)
ge=zeros(1Np);%各代的最優(yōu)值
bestx=zeros(NpN);%各代的最優(yōu)解
%產(chǎn)生初始種群
%xmin=-10;xmax=100;%帶負數(shù)的下界
xmin=-5.12;xmax=5.12;
function?y=f(XX);
????%y=sum(XX.^4-16*XX.^2+5*XX)/10+79.333;
????y=sum(XX.^2-10.*cos(2.*pi.*XX)+10);
end
X0=(xmax-xmin)*rand(NpN)+xmin;
X=X0;
%%%%%%%%%%變異操作
X1new=zeros(NpN);%初始化
X1_new=zeros(NpN);%初始化
X1=zeros(NpN);%初始化
value=zeros(1Np);
while?G<=Gm
????for?i=1:Np
????%產(chǎn)生jkp三個不同的數(shù)
????a=1;b=Np;
????dx=randperm(b-a+1)+a-1;
????j=dx(1);k=dx(2);p=dx(3);
????if?j==i
????????j=dx(4);
????elseif?k==i
????????k=dx(4);
????elseif?p==i
????????p=dx(4);
????end
????namd=exp(1-Gm/(Gm+1-G));%變異算子
????F=F0*2.^namd;
????bon=X(p:)+F*(X(j:)-X(k:));
????if?(bon>xmin)&(bon ???????X1new(i:)=bon;
????else?X1new(i:)=(xmax-xmin)*rand(1N)+xmin;
????end
????end
%%%%%%%
評論
共有 條評論