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

资源简介

标准差分进化算法多目标线性规划的若干解法及MATLAB实现

资源截图

代码片段和文件信息

function DE(GmF)%标准差分进化算法程序
F=0.8;%F是变异因子 
Gm=200; %最大迭代次数
Np=50; %种群规模
CR=0.5;  %交叉概率常数
G=1;%初始化进化代数
D=10;%所求问题的维数
ge=zeros(1Np);%各代的最优值
bestx=zeros(NpD);%各代的最优解
xmin=0;xmax=pi;
function y=f(Z);
    y=sum(sin(Z));
end
X0=(xmax-xmin)*rand(NpD)+xmin;%产生初始种群
X=X0;
%%%%%%%%%%变异操作
V=zeros(NpD);%变异矢量初始化
U=zeros(NpD);%初始化
X1=zeros(NpD);%初始化
value=zeros(1Np);
while G<=Gm
    for i=1:Np
    %产生jkp三个不同的数
    a=1;b=Np;
    dx=randperm(b-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:));
    bon=X(p:)+F*(X(j:)-X(k:));
    if (bon>xmin)&(bon       V(i:)=bon;
    else V(i:)=(xmax-xmin)*rand(1D)+xmin;
    end
    end
%%%%%%%%%%%%交叉操作
    for i=1:Np
        for j=1:D
            if (rand<=CR|j==rand(D)) %利用二项分布来交叉
                U(ij)=V(ij);
            else
                U(ij)=X(ij);
            end
        end
    end
 %%%%%%%%%%%%%%%选择操作 
 for i=1:Np
     if f(U(i:))>f(X(i:))
         X1(i:)=U(i:);
     else 
         X1(i:)=X(i:);
     end
 end
 %找出最大值
     for i=1:Np
          value(i)=f(X1(i:));
     end
    [fmaxnmax]=max(value);
    ge(G)=fmax;
    bestx(G:)=X1(nmax:); 
    G=G+1;
    X=X1;
end
ii=linspace(1GmGm);
plot(iige)
[gmaxn]=max(ge);
bestvalue=gmax
bestsolution=bestx(n:)
end
    
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-09-11 10:16  标准差分进化算法源代码\
     文件          55  2018-08-27 11:33  标准差分进化算法源代码\【源码使用必读】.url
     文件        1636  2018-09-11 10:11  标准差分进化算法源代码\a.m

评论

共有 条评论