ga.m
上传用户:qzfzqd
上传日期:2013-04-17
资源大小:7k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. function [f,x]=myga(num,bounds,Myfun,N,CP,P)
  2. %[f,x]=ga(num,bounds,fun,N,CP,P)
  3. %该遗传算法适用于:
  4. %           目标函数为求最大值,且解非负整数解
  5. %bounds     边界约束
  6. %Myfun        为目标函数
  7. %num        初始种群数
  8. %N          最大迭代次数
  9. %CP         交叉概率
  10. %P          突变概率
  11. %f          目标最优解
  12. %x          最优解向量
  13. %           作者:机自01-2班曾新海
  14. %           zxh21st@163.com
  15. m=nargin;
  16. if m<6
  17. disp('-_-  错误!')
  18. disp('>> 输入变量太少')
  19. disp('>>  按回车键查看帮助')
  20.     pause
  21.     help ga
  22.     f='-_- ';
  23.     x='没有规矩不成方圆';
  24.     break;
  25. end
  26. pop=INTinti(num,bounds);
  27. fmax=pop(:,end);
  28. endpop=pop;
  29. n=size(endpop,2);
  30. k=0;x=[];f=zeros(1,num);
  31. while(k<N)
  32.     pop=mutation(endpop);
  33.     [cpop ,len,v]=cross(pop,bounds,CP);
  34.     [pops]=changes(cpop,bounds,len,P);break;
  35.     for i=1:num
  36.         sol=pops(i,:);
  37.         [f(i)]=Myfun(sol);
  38.         if fmax(i)<f(i)
  39.             fmax(i)=f(i);
  40.             endpop(i,1:end-1)=pops(i,:);
  41.         end
  42. end
  43. endpop(:,end)=fmax(:);
  44. k=k+1;
  45. end
  46. [f,ii]=max(fmax);
  47. x=endpop(ii,1:end-1);