资源描述:
《手把手教你学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、以后的二进制种群%-------------------------------