使用遗传算法求二元函数的最小值-创新互联
二元函数为y=x1^2+x2^2,x∈[-5,5]
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的贡嘎网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!NIND=121; %初始种群的个数(Number of individuals) NVAR=2; %一个染色体(个体)有多少基因 PRECI=20; %变量的二进制位数(Precision of variables) MAXGEN=200; %大遗传代数(Maximum number of generations) GGAP=0.8; %代沟(Generation gap),以一定概率选择父代遗传到下一代 trace=zeros(MAXGEN,2); %寻优结果的初始值 Chrom=crtbp(NIND,PRECI*NVAR); %初始种群 %区域描述器(Build field descriptor) %确定每个变量的二进制位数,取值范围,及取值范围是否包括边界等。 FieldD=[rep([PRECI],[1,NVAR]);rep([-5;5],[1,NVAR]);rep([1;0;1;1],[1,NVAR])]; Objv=objfun(bs2rv(Chrom,FieldD)) gen=1; %代计数器 while gen<=MAXGEN Fitv=ranking(Objv); %分配适应度值(Assign fitness values) SelCh=select('sus',Chrom,Fitv,GGAP); %选择 SelCh=recombin('xovsp',SelCh,1); %重组 SelCh=mut(SelCh); %变异 ObjVSel=objfun(bs2rv(SelCh,FieldD));%子代个体的十进制转换 %重插入子代的新种群 [Chrom,Objv]=reins(Chrom,SelCh,1,1,Objv,ObjVSel); trace(gen,1)=min(Objv); %遗传算法性能跟踪 trace(gen,2)=sum(Objv)/length(Objv); gen=gen+1; %代计数器增加 end plot(trace(:,1)); hold on plot(trace(:,2),'.') grid legend('最优解的变化','解的平均值的变化')
当前标题:使用遗传算法求二元函数的最小值-创新互联
文章位置:http://lswzjz.com/article/csgjhd.html