www.pudn.com > GA.rar > gamin.asv, change:2009-03-17,size:1546b


cputime=0;tic; 
clc;clear all 
%定义遗传算法 
NIND=40;        %个体数目(Number of individuals) 
NVAR=6; %变量数目 
MAXGEN=80;      %最大遗传代数(Maximum number of generations) 
PRECI=20;       %变量的二进制位数(Precision of variables) 
GGAP=0.9;       %代沟(Generation gap) 
FieldD=[rep([PRECI],[1,NVAR]);rep([0;100],[1,NVAR]);rep([1;0;1;1],[1,NVAR])]; 
Chrom=crtbp(NIND, NVAR*PRECI);   %初始种群 
gen=0;                                         %代计数器 
trace=zeros(2,MAXGEN); 
x=bs2rv(Chrom, FieldD);  %计算初始种群的十进制转换 
ObjV=fitness(x);        %计算目标函数值  
ObjV=ObjV'; 
while gen<MAXGEN     
   FitnV=ranking(ObjV);              %分配适应度值(Assign fitness values)          
   SelCh=select('sus', Chrom, FitnV, GGAP);     %选择 
   SelCh=recombin('xovsp', SelCh, 0.7);         %重组 
   SelCh=mut(SelCh);                       %变异 
   x=bs2rv(SelCh, FieldD);                         %子代个体的十进制转换 
   ObjVSel= fitness(x);               %计算子代的目标函数值 
   ObjVSel=ObjVSel'; 
   [Chrom ObjV]=reins(Chrom,SelCh,1,[1 0.9],ObjV,ObjVSel); %重插入子代的新种 
   gen=gen+1;                                             %代计数器增加 
   %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号 
   [Y,I]=min(ObjVSel);   
   trace(1,gen)=min(ObjV);                               %遗传算法性能跟踪 
   trace(2,gen)=sum(ObjV)/length(ObjV);     
 x0=bs2rv(Chrom(I,:),FieldD); 
end 
figure; 
plot(trace(1,:)); 
hold on; 
plot(trace(2,:),'-.');grid 
legend('解的变化','种群均值的变化') 
x0,Y 
toc; 
cputime=toc;