📄 yichuansuanfa.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 + -