⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yichuansuanfa.m

📁 关于遗传算法的实例
💻 M
字号:
%罗飞       硕837       3108040026
NIND=40;
MAXGEN=100;
PRECI=48;
PC=0.7;
PM=0.05;
Q=2;
randnum=rand(1,NIND);
randdec=randnum.*(2^PRECI);
chrom=dec2bin(randdec,PRECI);
m=1;
ex_k=0;
ey_k=0;
value_k=0;
s=0;
while (m<MAXGEN)
 
chrom_x=chrom(:,1:PRECI/2);
chrom_y=chrom(:,PRECI/2+1:PRECI);
 
chrom_x_d=bin2dec(chrom_x)*8/(2^(PRECI/2)-1);
chrom_y_d=bin2dec(chrom_y)*8/(2^(PRECI/2)-1);
x_av(m)=sum(chrom_x_d)/NIND;
y_av(m)=sum(chrom_y_d)/NIND;
 
 
%??????????
chrom_fitness=abs(sinc(pi*(chrom_x_d-3))).*abs(sinc(pi*(chrom_y_d-3)));
 
value_k1=max(chrom_fitness);
e=value_k1-value_k;
value_k=value_k1;
 
%if(abs(e)<0.00015&&s>0.5)
 %  disp(m);
   % break;
%end
 
 
%%???ù??????
s=sum(chrom_fitness)/NIND;
 %disp(s);
av(m)=s;
av_max(m)=max(chrom_fitness);
%%
 
 
%°????????? ?ó??>?? ?????????ò  
for i=1:NIND-1 
    for j=1:NIND-i
        if chrom_fitness(j)<chrom_fitness(j+1)
           p=chrom_fitness(j); chrom_fitness(j)=chrom_fitness(j+1); chrom_fitness(j+1)=p;
           p1=chrom(j,1:PRECI);chrom(j,1:PRECI)=chrom(j+1,1:PRECI);chrom(j+1,1:PRECI)=p1;
        end
    end
end
 
xx=chrom(1,1:PRECI/2);
x(m)=bin2dec(xx)*8/(2^(PRECI/2)-1);
yy=chrom(1,PRECI/2+1:PRECI);
y(m)=bin2dec(yy)*8/(2^(PRECI/2)-1);
 
j=1:NIND;
chrom_fitness=((NIND-j+1)/NIND).^Q-((NIND-j)/NIND).^Q;%???ü?¨
sum_fitness=sum(chrom_fitness);%×???
chrom_fit=chrom_fitness./sum_fitness;%????
len=length(chrom_fit);
 
for i=1:len %????????????
    chrom_fitness(i)=sum(chrom_fit(1:i));
end
 
k=rand(NIND,1);
for i=1:NIND   %×???????????
    j=1;
    while chrom_fitness(j)<k(i)
        j=j+1;
    end
    ix=j;
    chrom_p(i,1:PRECI)=chrom(ix,1:PRECI);
end
 
chrom=chrom_p;
 
r=rand(NIND,1);
for i=1:length(r)-1  
    for j=1:length(r)-i
        if r(j)>r(j+1)
           p=r(j); r(j)=r(j+1); r(j+1)=p;
           p1=chrom(j,1:PRECI);chrom(j,1:PRECI)=chrom(j+1,1:PRECI);chrom(j+1,1:PRECI)=p1;
        end
    end
end
%????????????????????????
for i=1:NIND/2
    if rand()<PC
        site=rand()*PRECI;    %???ú?ú?ú??????????
        site=ceil(site);
        tr=chrom(2*i-1,site:PRECI);
        chrom(2*i-1,site:PRECI)=chrom(2*i,site:PRECI);
        chrom(2*i,site:PRECI)=tr;
    end
end
 
gene_num=NIND*PRECI*PM;
 
for i=1:gene_num  
     site=rand()*NIND*PRECI;    
     site=ceil(site);
     ch_n=1;
     while site>PRECI
     site=site-PRECI;
     ch_n=ch_n+1;
     end
     if chrom(ch_n,site)=='0'
         d=bin2dec(chrom(ch_n,:));
         e=bitset(d,PRECI-site+1,1);
         chrom(ch_n,:)=dec2bin(e,PRECI);
     end
     if chrom(ch_n,site)=='1'
         d=bin2dec(chrom(ch_n,:));
         e=bitset(d,PRECI-site+1,0);
         chrom(ch_n,:)=dec2bin(e,PRECI);
     end
end
%disp(m);
m=m+1;
end
figure,plot(av);hold on
plot(av_max);
axis([0 100 .8 1.2]);
 
%figure,plot(x_av)
%figure,plot(y_av)
 
figure,plot(x)
figure,plot(y)


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -