• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: Matlab
  • 标签: DE  

资源简介

适合初学者使用,对差分进化算法进行初步了解,值得初学者看看

资源截图

代码片段和文件信息

function DE(GmF0)
%差分进化算法程序基本程序
%F是变异率    %Gm=1000; %最大迭代次数
Np=100; %种群规模
CR=0.9;  %杂交参数
G=1;%初始化代数
N=10;%所求问题的维数
ge=zeros(1Np);%各代的最优值
bestx=zeros(NpN);%各代的最优解
%产生初始种群
%xmin=-10;xmax=100;%带负数的下界
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
    %产生jkp三个不同的数
    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
%%%%%%%

评论

共有 条评论