資源描述:
《差分演化算法matlab程序.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、functionDE(Gm,F0)%差分進(jìn)化算法程序基本程序%F是變異率F0=0.6Gm=1000;%最大迭代次數(shù)Np=100;%種群規(guī)模CR=0.9;%雜交參數(shù)G=1;%初始化代數(shù)D=0;%所求問題的維數(shù)eps=1e-9;%精度ge=zeros(1,Np);%各代的最優(yōu)值bestx=zeros(Np,D);%各代的最優(yōu)解%產(chǎn)生初始種群%xmin=-10;xmax=100;%帶負(fù)數(shù)的下界xmin=-5.12;xmax=5.12;%-----函數(shù)值計算-----------functionresult=DEMB(XX);sol=XX;result=0;
2、fori=1:Dresult=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);whileG<=Gmfori=1:Np%產(chǎn)生j,k,p三個不同的數(shù)a=1;b=Np;dx=
3、randperm(b-a+1)+a-1;j=dx(1);k=dx(2);p=dx(3);ifj==ij=dx(4);elseifk=ik=dx(4);elseifp==ip=dx(4);end%變異算子F=0.5;bon=X(p,:)+F*(X(j,:)-X(k,:));if(bon>xmin)&(bonCR%利用二項分布來交叉X1_
4、new(i,:)=X(i,:);elseX1_new(i,:)=X1new(i,:);endend%%%%%%%%%%%%%%%競爭操作fori=1:NpifDEMB(X1_new(i,:))5、,Np,Np);%plot(ii,ge)[gmin,n]=min(ge);value=gminsolution=bestx(n,:)%目標(biāo)函數(shù)的倒數(shù)End