浅析matlab6.5遗传算法程序.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅析matlab6.5遗传算法程序

[原创]基于MATLAB6.5遗传算法程序 function [BestPop,Trace]=fmaxga(FUN,LB,UB,eranum,popsize,pcross,pmutation,options) % [BestPop,Trace]=fmaxga(FUN,LB,UB,eranum,popsize,pcross,pmutation) % Finds a??maximum of a function of several variables. % fmaxga solves problems of the form:?? %??????max F(X)??subject t??LB = X = UB???????????????????????????? %??BestPop--------最优的群体即为最优的染色体群 %??Trace----------最佳染色体所对应的目标函数值 %??FUN------------目标函数 %??LB-------------自变量下限 %??UB-------------自变量上限 %??eranum---------种群的代数,取100--1000(默认1000) %??popsize--------每一代种群的规模;此可取50--100(默认50) %??pcross---------交叉的概率,此概率一般取0.5--0.85之间较好(默认0.8) %??pmutation------变异的概率,该概率一般取0.05-0.2左右较好(默认0.1) %??options--------1×2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编码,option(2)设定求解精度(默认1e-4) %???????????????? % 例如测试Shaffers F6函数,自变量下限[-100,-100],上限[100,100],当x=[0 0]时,MaxF6=1 % 运行得到相当好的结果:自变量为 04.7684e-005 时,最优值 1.000000 % 对应染色体是:1??0??0??0??0??0??0??0??0??0??0??0??0??0??0??0??0??0??0??1??1??0??1??1??1??1??1??1??1??1??1??1??1??1??1??1??1??1??1??1??1??1 T1=clock; if nargin3, error(FMAXGA requires at least three input arguments); end if nargin==3, eranum=1000;popsize=50;pcross=0.8;pmutation=0.1;options=[0 1e-4];end if nargin==4, popsize=50;pcross=0.8;pmutation=0.1;options=[0 1e-4];end if nargin==5, pcross=0.8;pmutation=0.1;options=[0 1e-4];end if nargin==6, pmutation=0.1;options=[0 1e-4];end if nargin==7, options=[0 1e-4];end if find((LB-UB)0) ?? error(数据输入错误,请重新输入(LBUB):); end s=sprintf(程序运行需要约%.4f 秒钟时间,请稍等......,(eranum*popsize*40/(1000*50))); disp(s); bounds=[LB;UB];bits=[]; precision=options(2);%由求解精度确定二进制编码长度 bits=ceil(log2((bounds(:,2)-bounds(:,1)) ./ precision));%由设定精度划分区间 [Pop]=initpop(popsize,bits);%初始化种群 [m,n]=size(Pop); pm0=pmutation; BestPop=zeros(eranum,n);Trace=zeros(eranum,length(bits)+1);%分配初始解空间 i=1; while i=eranum ????for j=1:m ????????value(j)=feval(FUN(1,:),(b2f(Pop(j,:),bounds,bits)));%计算适应度 ????end ????[MaxValue,Index]=max(value); ????BestPop(i,:)=Pop(Index,:); ????Trace(i,1)=MaxValue; ?

文档评论(0)

jcc001 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档