资源描述:
《matlab量子化得遗传算法代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、clear;clccloseallNIND=40;%个体数目NVAR=2;%变量的维数PRECI=20;%变量的二进制位数GGAP=0.9;%代沟MP=10;%种群数目FieldD=[rep(PRECI,[1,NVAR]);[-3,4.1;12.1,5.8];rep([1;0;1;1],[1,NVAR])];%译码矩阵fori=1:MPChrom{i}=crtbp(NIND,NVAR*PRECI);%创建初始种群endpc=0.7+(0.9-0.7)*rand(MP,1);%在【0.7,0.9】范围i内随机产生交叉概率pm=0.001+(0.05-
2、0.001)*rand(MP,1);%在【0.001,0.05】范围内随机产生变异概率gen=0;%初始遗传代数gen0=0;%初始保持代数MAXGEN=10;%最优个体最少保持代数maxY=0;%最优值fori=1:MPObjV{i}=ObjectFunction(bs2rv(Chrom{i},FieldD));%计算各初始种群个体的目标函数值endMaxObjV=zeros(MP,1);%记录精华种群MaxChrom=zeros(MP,PRECI*NVAR);%记录精华种群的编码whilegen0<=MAXGENgen=gen+1;%遗传代数加
3、1fori=1:MPFitnV{i}=ranking(-ObjV{i});%各种群的适应度SelCh{i}=select('sus',Chrom{i},FitnV{i},GGAP);%选择操作SelCh{i}=recombin('xovsp',SelCh{i},pc(i));%交叉操作SelCh{i}=mut(SelCh{i},pm(i));%变异操作ObjVSel=ObjectFunction(bs2rv(SelCh{i},FieldD));%计算子代目标函数值[Chrom{i},ObjV{i}]=reins(Chrom{i},SelCh{i},
4、1,1,ObjV{i},ObjVSel);%重插入操作end[Chrom,ObjV]=immigrant(Chrom,ObjV);%移民操作[MaxObjV,MaxChrom]=EliteInduvidual(Chrom,ObjV,MaxObjV,MaxChrom);%人工选择精华种群YY(gen)=max(MaxObjV);%找出精华种群中最优的个体ifYY(gen)>maxY%判断当前优化值是否与前一次优化值相同maxY=YY(gen);%更新最优值gen0=0;elsegen0=gen0+1;%最优值保持次数加1endend%%进化过程图pl
5、ot(1:gen,YY)xlabel('进化代数')ylabel('最优解变化')title('进化过程')xlim([1,gen])%%输出最优解[Y,I]=max(MaxObjV);%找出精华种群中最优的个体X=(bs2rv(MaxChrom(I,:),FieldD));%最优个体的解码解disp(['最优值为:',num2str(Y)])disp(['对应的自变量取值:',num2str(X)])