ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:18.09KB ,
资源ID:10444048      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10444048.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MATLAB65遗传算法程序.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于MATLAB65遗传算法程序.docx

1、基于MATLAB65遗传算法程序原创基于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 amaximum of a function of several variables.% fmaxga solves problems of the form:%max F(X)subject tLB = X = UB%

2、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-12矩阵,options(1)=0二进制编码(默认0),option(1)=0十进制编码,option(2)设定求解精度(默认1e-4)% % 例如测试

3、Shaffers F6函数,自变量下限-100,-100,上限100,100,当x=0 0时,MaxF6=1% 运行得到相当好的结果:自变量为 0.00033379-4.7684e-005 时,最优值 1.000000% 对应染色体是:100000000000000000011011111111111111111111T1=clock;if nargin0) error(数据输入错误,请重新输入(LBUB):);ends=sprintf(程序运行需要约%.4f 秒钟时间,请稍等.,(eranum*popsize*40/(1000*50);disp(s);bounds=LB;UB;bits=;p

4、recision=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=eranumfor j=1:mvalue(j)=feval(FUN(1,:),(b2f(Pop(j,:),bounds,bit

5、s);%计算适应度endMaxValue,Index=max(value);BestPop(i,:)=Pop(Index,:);Trace(i,1)=MaxValue;Trace(i,(2:length(bits)+1)=b2f(BestPop(i,:),bounds,bits);selectpop=SelectChrom(FUN,Pop,bounds,bits);%选择CrossOverPop=CrossOver(selectpop,pcross);%交叉NewPop=Mutation(CrossOverPop,pmutation);%变异Pop=NewPop;%更新pmutation=pm

6、0+(i4)*(pcross/2-pm0)/(eranum4); %随着种群向前进化,逐步增大变异率p(i)=pmutation;i=i+1;endt=1:eranum;plot(t,Trace(:,1);title(函数优化的遗传算法);xlabel(进化世代数(eranum);ylabel(每一代最优适应度(maxfitness);MaxFval,I=max(Trace(:,1);X=Trace(I,(2:length(bits)+1);hold on;plot(I,MaxFval,*);text(I+5,MaxFval,FMAX= num2str(MaxFval);str1=sprint

7、f(进化到 %d 代 ,自变量为 %s 时,得本次求解的最优值 %fn对应染色体是:%s,. I,num2str(X),MaxFval,num2str(BestPop(I,:);disp(str1);%figure(2);plot(t,p);%绘制变异值增大过程T2=clock;CostTime=T2-T1;if CostTime(6)0CostTime(6)=CostTime(6)+60; CostTime(5)=CostTime(5)-1;endif CostTime(5)=sumprob),:);end%交叉操作function NewPop=CrossOver(OldPop,pcros

8、s)%OldPop为父代种群,pcross为交叉概率m,n=size(OldPop);r=rand(1,m);y1=find(r=pcross);len=length(y1);if len2&mod(len,2)=1%如果用来进行交叉的染色体的条数为奇数,将其调整为偶数y2(length(y2)+1)=y1(len);y1(len)=;endif length(y1)=2 for i=0:2:length(y1)-2 NewPop(y1(i+1),:),NewPop(y1(i+2),:)=EqualCrossOver(OldPop(y1(i+1),:),OldPop(y1(i+2),:); e

9、nd endNewPop(y2,:)=OldPop(y2,:);function children1,children2=EqualCrossOver(parent1,parent2)%采用均匀交叉 例:%父1:0 1 1 1 0 0 1 1 0 1 0%父2:1 0 1 0 1 1 0 0 1 0 1%掩码:0 1 1 0 0 0 1 1 0 1 0%交叉后新个体:%子1:1 1 1 0 1 1 1 1 1 1 1 %子2:0 0 1 1 0 0 0 0 0 0 0L=length(parent1);hidecode=round(rand(1,L);%随机生成掩码,如hidecode=0 1

10、 1 0 0 0 1 1 0 1 0;children1=zeros(1,L);children2=zeros(1,L);children1(find(hidecode=1)=parent1(find(hidecode=1);%掩码为1,父1为子1提供基因children1(find(hidecode=0)=parent2(find(hidecode=0);%掩码为0,父2为子1提供基因children2(find(hidecode=1)=parent2(find(hidecode=1);%掩码为1,父2为子2提供基因children2(find(hidecode=0)=parent1(fin

11、d(hidecode=0);%掩码为0,父1为子2提供基因%变异操作function NewPop=Mutation(OldPop,pmutation)m,n=size(OldPop);r=rand(1,m);position=find(r=1 for i=1:len k=unidrnd(n,1,1); %设置变异点数,一般设置1点 for j=1:length(k) if OldPop(position(i),k(j)=1OldPop(position(i),k(j)=0; elseOldPop(position(i),k(j)=1; end end endendNewPop=OldPop;

12、她含着笑,切着冰屑悉索的萝卜,她含着笑,用手掏着猪吃的麦糟,她含着笑,扇着炖肉的炉子的火,她含着笑,背了团箕到广场上去晒好那些大豆和小麦,大堰河,为了生活,在她流尽了她的乳液之后,她就用抱过我的两臂,劳动了。大堰河,深爱着她的乳儿;在年节里,为了他,忙着切那冬米的糖,为了他,常悄悄地走到村边的她的家里去,为了他,走到她的身边叫一声“妈”,大堰河,把他画的大红大绿的关云长贴在灶边的墙上,大堰河,会对她的邻居夸口赞美她的乳儿;大堰河曾做了一个不能对人说的梦:在梦里,她吃着她的乳儿的婚酒,坐在辉煌的结彩的堂上,而她的娇美的媳妇亲切的叫她“婆婆”大堰河,深爱她的乳儿!大堰河,在她的梦没有做醒的时候已死

13、了。她死时,乳儿不在她的旁侧,她死时,平时打骂她的丈夫也为她流泪,五个儿子,个个哭得很悲,她死时,轻轻地呼着她的乳儿的名字,大堰河,已死了,她死时,乳儿不在她的旁侧。大堰河,含泪的去了!同着四十几年的人世生活的凌侮,同着数不尽的奴隶的凄苦,同着四块钱的棺材和几束稻草,同着几尺长方的埋棺材的土地,同着一手把的纸钱的灰,大堰河,她含泪的去了。这是大堰河所不知道的:她的醉酒的丈夫已死去,大儿做了土匪,第二个死在炮火的烟里,第三,第四,第五而我,我是在写着给予这不公道的世界的咒语。当我经了长长的飘泊回到故土时,在山腰里,田野上,兄弟们碰见时,是比六七年她含着笑,切着冰屑悉索的萝卜,她含着笑,用手掏着猪

14、吃的麦糟,她含着笑,扇着炖肉的炉子的火,她含着笑,背了团箕到广场上去晒好那些大豆和小麦,大堰河,为了生活,在她流尽了她的乳液之后,她就用抱过我的两臂,劳动了。大堰河,深爱着她的乳儿;在年节里,为了他,忙着切那冬米的糖,为了他,常悄悄地走到村边的她的家里去,为了他,走到她的身边叫一声“妈”,大堰河,把他画的大红大绿的关云长贴在灶边的墙上,大堰河,会对她的邻居夸口赞美她的乳儿;大堰河曾做了一个不能对人说的梦:在梦里,她吃着她的乳儿的婚酒,坐在辉煌的结彩的堂上,而她的娇美的媳妇亲切的叫她“婆婆”大堰河,深爱她的乳儿!大堰河,在她的梦没有做醒的时候已死了。她死时,乳儿不在她的旁侧,她死时,平时打骂她的丈夫也为她流泪,五个儿子,个个哭得很悲,她死时,轻轻地呼着她的乳儿的名字,大堰河,已死了,她死时,乳儿不在她的旁侧。大堰河,含泪的去了!同着四十几年的人世生活的凌侮,同着数不尽的奴隶的凄苦,同着四块钱的棺材和几束稻草,同着几尺长方的埋棺材的土地,同着一手把的纸钱的灰,大堰河,她含泪的去了。这是大堰河所不知道的:她的醉酒的丈夫已死去,大儿做了土匪,第二个死在炮火的烟里,第三,第四,第五而我,我是在写着给予这不公道的世界的咒语。当我经了长长的飘泊回到故土时,在山腰里,田野上,兄弟们碰见时,是比六七年

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1