?? aadga.m
字號:
%
clc
clear all
popsize = 40; %
parrange=[-10 10;-10 10];
m=16; %
pc=0.8; %
T=150; %
pm=0.1; %
num=size(parrange,1);
par=cell(popsize,num);
popcon=ones(popsize,m);
%
poppar=initialcon(popsize,m);
aa=1;
tt=1;
[par poppar]=fitness(parrange,popcon,poppar,aa,tt,par)
TraceInfo(tt,1)=tt;
%
[TraceInfo(tt,2) index]=max(poppar(:,(m+1)));
%
TraceInfo(tt,3)=mean(poppar(:,(m+1)));
best(1,:)=[par(index,:) TraceInfo(tt,2) 1];
k=2;
while tt<T
tt=tt+1;
[popconn1 popparn1]=select(popcon,poppar,popsize,m);
%
popconn2=crossovercon(popconn1,popsize,pc,m);
%
popconn3=mutation(popconn2,pm,popsize,m);
%
popparn2=crossovercon(popparn1(:,1:m),popsize,pc,m);
%
popparn3=mutation(popparn2(:,1:m),pm,popsize,m);
%
popcon1=[popcon;popconn3];
poppar1=[poppar(:,1:m);popparn3];
%
[par1 poppar2]=fitness(parrange,popcon1,poppar1,aa,tt,par);
poppar3=density(popsize,poppar2,m);
popn1=[popcon1 poppar3 par1];
popn4=sortrows(popn1,2*m+3);
popcon=popn4((popsize+1):(2*popsize),1:m);
poppar4=popn4((popsize+1):(2*popsize),(m+1):(2*m+2));
par2=popn4((popsize+1):(2*popsize),(2*m+4):(2*m+3+num));
aa=0;
[par poppar5]=fitness(parrange,popcon,poppar4,aa,tt,par2);
aa=1;
[max1 index]=max(poppar5(:,m+1));
for i=1:popsize
if poppar5(i,m+1)==max1
btrue=1;
for v=1:(k-1)
best1=best(v,1:2);
if best1==par(i,:)
btrue=0;
break;
end
end
if btrue==1
best(k,:)=[par(i,:) max1 tt];
k=k+1;
end
end
end
TraceInfo(tt,1)=tt;
TraceInfo(tt,2)=max1;
TraceInfo(tt,3)=mean(poppar5(:,m+1));
[par poppar5(:,m+1)]
for i=1:popsize
index(i)=i;
end
for i=1:popsize
point=round(rand*(popsize-i));
temp=index(i);
index(i)=index(point+i);
index(point+i)=temp;
end
for i=1:popsize
poppar(i,:)=poppar5(index(i),:);
end
tt
end
best
TraceInfo
clf
plot(TraceInfo(:,1),TraceInfo(:,3),'y-')
hold on
plot(TraceInfo(:,1),TraceInfo(:,2),'r-')
xlabel('Generation');
ylabel('Fitness');
hold off
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -