手把手教你学matlab遗传算法

手把手教你学matlab遗传算法

ID:41388288

大小:204.26 KB

页数:8页

时间:2019-08-23

手把手教你学matlab遗传算法_第1页
手把手教你学matlab遗传算法_第2页
手把手教你学matlab遗传算法_第3页
手把手教你学matlab遗传算法_第4页
手把手教你学matlab遗传算法_第5页
资源描述:

《手把手教你学matlab遗传算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于遗传算法求解函数最优值1.选择函数形式:y=10*sin(5*x)+7*abs(x-5)+102.函数直观图像:3.函数理论最大值:X=0.286,Y=52.89904.Matlab函数实现:thebestXis--->>0.32thebestYis--->>52.735.Matlab程序5.1--------------------------------------------------------------%-------------函数说明----------------%%主函数%----------------------------

2、-----------functionmain()clearclcpopsize=100;%种群大小chromlength=10;%二进制编码长度pc=0.6;%交叉概率pm=0.001;%变异概率pop=initpop(popsize,chromlength);%初始种群fori=1:100[objvalue]=cal_objvalue(pop);%计算适应度值(函数值)fitvalue=objvalue;[newpop]=selection(pop,fitvalue);%选择操作[newpop]=crossover(newpop,pc);%交叉操作[

3、newpop]=mutation(newpop,pm);%变异操作pop=newpop;%更新种群[bestindividual,bestfit]=best(pop,fitvalue);%寻找最优解x2=binary2decimal(bestindividual);x1=binary2decimal(newpop);[y1]=cal_objvalue(newpop);ifmod(i,10)==0figure;fplot('10*sin(5*x)+7*abs(x-5)+10',[010]);holdon;title(['迭代次数为n='num2str(i)

4、]);plot(x1,y1,'*');endendfprintf('thebestXis--->>%5.2f',x2);fprintf('thebestYis--->>%5.2f',bestfit);5.2-----------------------------------%-------------函数说明----------------%初始化种群大小%输入变量:%popsize:种群大小%chromlength:染色体长度--》转化的二进制长度%输出变量:%pop:种群%----------------------------------

5、-----functionpop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength));5.3--------------------------------------%-------------函数说明----------------%二进制转化十进制函数%输入变量:%二进制种群%输出变量:%十进制数值%---------------------------------------functionpop2=binary2decimal(pop)[px,py]=size(pop

6、);fori=1:pypop1(:,i)=2.^(py-i).*pop(:,i);end%sum(.,2)对行求和,得到列的向量temp=sum(pop1,2);pop2=temp*10/1023;5.4--------------------------------------%-------------函数说明----------------%计算函数目标值%输入变量:%二进制数值%输出变量:%目标函数值%---------------------------------------function[objvalue]=cal_objvalue(po

7、p)x=binary2decimal(pop);%转化二进制数为x变量的变化域范围的数值%x=temp*10/1023;%objvalue=10*sin(5*x)+7*cos(4*x);%objvalue=10*sin(x)+7*x+10objvalue=10*sin(5*x)+7*abs(x-5)+10;5.5------------------------------------------%-------------函数说明----------------%%输入变量:%pop:二进制种群%fitvalue:适应度值%输出变量:%newpop:选择

8、以后的二进制种群%-------------------------------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。