Simple-unction-optimization.rar

  • nianchen
    了解作者
  • matlab
    开发工具
  • 4KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 7
    下载次数
  • 2013-11-01 16:31
    上传日期
本程序详细讲解了关于遗传算法的优化问题,对于学习遗传算法帮助很大
Simple-unction-optimization.rar
  • 简单函数优化的遗传算法程序
  • objf.m
    404B
  • ga.m
    2.4KB
  • pro.m
    109B
  • main.m
    1.2KB
  • ft.m
    52B
  • init.mat
    1.3KB
  • n2to10.m
    121B
  • cro.m
    397B
  • mut.m
    258B
  • sel.m
    225B
内容介绍
%用遗传算法进行简单函数的优化,可以显示中间过程 clear bn=22; %个体串长度 inn=50; %初始种群大小 gnmax=200; %最大代数 pc=0.8; %交叉概率 pm=0.05; %变异概率 %产生初始种群 s=round(rand(inn,bn)); gnf1=5; gnf2=20; %计算适应度,返回适应度f和累积概率p [f,p]=objf(s); gn=1; while gn<gnmax+1 xp=-1:0.01:2; yp=ft(xp); for d=1:inn xi=n2to10(s(d,:)); xdi(d)=-1.0+xi*3/(power(2,bn)-1); end yi=ft(xdi); plot(xp,yp,'b-',xdi,yi,'g*'); strt=['当前代数 gn=' num2str(gn)]; text(-0.75,1,strt); text(-0.75,3.5,'* 当前种群','Color','g'); if gn<gnf1 pause; end hold on; for j=1:2:inn %选择操作 seln=sel(s,p); xs1=n2to10(s(seln(1),:)); xds1=-1.0+xs1*3/(power(2,bn)-1); ys1=ft(xds1); xs2=n2to10(s(seln(2),:)); xds2=-1.0+xs2*3/(power(2,bn)-1); ys2=ft(xds2); hold on; drawnow; plot(xds1,ys1,'r*',xds2,ys2,'r*'); %交叉操作 scro=cro(s,seln,pc); scnew(j,:)=scro(1,:); scnew(j+1,:)=scro(2,:); %变异操作 smnew(j,:)=mut(scnew(j,:),pm); smnew(j+1,:)=mut(scnew(j+1,:),pm); end drawnow; text(-0.75,3.3,'* 选择后','Color','r'); if gn<gnf1 pause; end for d=1:inn xc=n2to10(scnew(d,:)); xdc(d)=-1.0+xc*3/(power(2,bn)-1); end yc=ft(xdc); drawnow; plot(xdc,yc,'m*'); text(-0.75,3.1,'* 交叉后','Color','m'); if gn<gnf1 pause; end hold on; for d=1:inn xm=n2to10(smnew(d,:)); xdm(d)=-1.0+xm*3/(power(2,bn)-1); end ym=ft(xdm); drawnow; plot(xdm,ym,'c*'); text(-0.75,2.9,'* 变异后','Color','c'); if gn<gnf2 pause; end hold off; s=smnew; %产生了新的种群 %计算新种群的适应度 [f,p]=objf(s); %记录当前代最好和平均的适应度 [fmax,nmax]=max(f); fmean=mean(f); ymax(gn)=fmax; ymean(gn)=fmean; %记录当前代的最佳个体 x=n2to10(s(nmax,:)); xx=-1.0+x*3/(power(2,bn)-1); xmax(gn)=xx; gn=gn+1; end gn=gn-1; figure(2); subplot(2,1,1); plot(1:gn,[ymax;ymean]); title('历代适应度变化','fonts',10); legend('最大适应度','平均适应度'); string1=['最终适应度',num2str(ymax(gn))]; gtext(string1); subplot(2,1,2); plot(1:gn,xmax,'r-'); legend('自变量'); string2=['最终自变量',num2str(xmax(gn))]; gtext(string2);
评论
    相关推荐
    • Matlab遗传算法实现
      matlab7实现遗传算法,求出函数y=x^2在[0,31]上的最大值.源码在MATLAB7.0上已成功运行.(因太大不能上传)如需要GATBX工具箱可向我发邮件问我索取:ylwuwei921@126.com.
    • 遗传算法matlab
      好用的遗传算法程序,希望更多人能够获得帮助。
    • MATLAB遗传算法
      MATLAB遗传算法工具.MATLAB遗传算法工具.MATLAB遗传算法工具
    • 遗传算法matlab
      matlab程序下的遗传算法
    • matlab遗传算法
      matlab遗传算法程序,测试可以跑通,供大家学习使用。
    • matlab遗传算法
      用于遗传算法计算
    • 遗传算法matlab
      遗传算法是自然选择和群体学基础上的非数值优化方法。提供了些matlab实例计算
    • matlab遗传算法
      很强大的遗传算法源代码哦,matlab是现在最有用的工程语言呀
    • 遗传算法matlab
      matlab是科学计算常用的工具,遗传算法也是一种目前比较流行的一种算法,利用matlab写的遗传算法代码,供大家参考。
    • 遗传算法 matlab.rar
      遗传算法功能说明,matlab软件环境使用。