首页| JavaScript| HTML/CSS| Matlab| PHP| Python| Java| C/C++/VC++| C#| ASP| 其他|
购买积分 购买会员 激活码充值

您现在的位置是:虫虫源码 > Matlab > 差分进化算法

差分进化算法

  • 资源大小:0.02M
  • 上传时间:2021-09-18
  • 下载次数:0次
  • 浏览次数:0次
  • 资源积分:1积分
  • 标      签: MATLAB语言基础

资 源 简 介

差分演化算法的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,:))
VIP VIP
0.190698s