资 源 简 介
差分演化算法的matlab程序: function DE(Gm,F0)%差分进化算法程序基本程序%F是变异率 F0=0.6 Gm=1000; %最大迭代次数Np=100; %种群规模CR=0.9; %杂交参数G=1;%初始化代数D=0;%所求问题的维数eps=1e-9;%精度ge=zeros(1,Np);%各代的最优值bestx=zeros(Np,D);%各代的最优解%产生初始种群%xmin=-10;xmax=100;%带负数的下界xmin=-5.12;xmax=5.12;%-----函数值计算-----------function result=DEMB(XX); sol=XX; result=0;for i=1:D result=result sol(i)^2; %y=sum(XX.^2-10.*cos(2.*pi.*XX) 10);endend%---------------------------X0=(xmax-xmin)*rand(Np,D) xmin;X=X0;%%%%%%%%%%变异操作X1new=zeros(Np,D);%初始化X1_new=zeros(Np,D);%初始化X1=zeros(Np,D);%初始化value=zeros(1,Np);while G<=Gm for i=1:Np %产生j,k,p三个不同的数 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 %变异算子 F=0.5; bon=X(p,:) F*(X(j,:)-X(k,:)); if (bon>xmin)&(bonCR %利用二项分布来交叉 X1_new(i,:)=X(i,:); else X1_new(i,:)=X1new(i,:); end end %%%%%%%%%%%%%%%竞争操作 for i=1:Np if DEMB(X1_new(i,:))