遗传算法的Matlab实现讲解.ppt
《遗传算法的Matlab实现讲解.ppt》由会员分享,可在线阅读,更多相关《遗传算法的Matlab实现讲解.ppt(37页珍藏版)》请在三一办公上搜索。
1、数学建模专题之遗传算法的MATLAB实现,Contents I,Matlab编程实现GA,1,Matlab编程实现GA,例1:计算目标函数值函数,主程序,%遗传算法主程序function My_GAglobal Cmin;Cmin=-106;popsize=50;%群体大小Gene=20;chromlength=20;%字符串长度(个体长度)pc=0.8;%交叉概率pm=0.01;%变异概率Xmax=10;Xmin=0;,Matlab编程实现GA,pop=initpop(popsize,chromlength);%随机产生初始群体for i=1:Gene%20为迭代次数 objvalue=ca
2、lobjvalue(pop,chromlength,Xmax,Xmin);%计算目标函数 fitvalue=calfitvalue(objvalue);%计算群体中每个个体的适应度 newpop=selection(pop,fitvalue);%复制 newpop=crossover(newpop,pc);%交叉 newpop=mutation(newpop,pm);%变异 bestindividual,bestfit=best(pop,fitvalue);%求出群体中适应值最大的个体及其适应值 x(i)=decodechrom(bestindividual,1,chromlength)*10
3、/(2chromlength-1);%最佳个体解码 y(i)=bestfit+Cmin;%最佳个体适应度 y_mean(i)=mean(fitvalue+Cmin);%第i代平均适应度 pop=newpop;endfplot(2*x+10*sin(5*x)+7*cos(4*x),0 10)hold onplot(x,y,r*)hold off,初始化(编码),%initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),%长度大小取决于变量的二进制编码的长度(在本例中取20位)。%Name:initpop.mfuncti
4、on pop=initpop(popsize,chromlength)pop=round(rand(popsize,chromlength);%rand随机产生每个单元为 0,1 行数为popsize,列数为chromlength的矩阵,%round对矩阵的每个单元进行取整。这样产生的初始种群。,Matlab编程实现GA,将二进制数转化为十进制数,将二进制数转化为十进制数%产生 2n 2(n-1).1 的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop)px,py=size(pop);%求pop行和列数for i=1:pypop1(:,i)=2
5、.(py-i).*pop(:,i);endpop2=sum(pop1,2);%求pop1的每行之和function pop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=decodebinary(pop1);,Matlab编程实现GA,计算目标函数值,计算目标函数值%calobjvalue.m函数的功能是实现目标函数的计算,其公式采用本文示例仿真,可根据不同优化问题予以修改。%遗传算法子程序%Name:calobjvalue.m%实现目标函数的计算function objvalue=calobjva
6、lue(pop,chromlength,Xmax,Xmin)temp1=decodechrom(pop,1,chromlength);%将pop每行转化成十进制数x=temp1*(Xmax-Xmin)/(2chromlength-1);%将十进制域 中的数转化为变量域 的数objvalue=2*x+10*sin(5*x)+7*cos(4*x);%计算目标函数值,Matlab编程实现GA,计算个体的适应值,function fitvalue=calfitvalue(objvalue)global Cmin;fitvalue=objvalue-Cmin;,Matlab编程实现GA,选择复制,fun
7、ction newpop=selection(pop,fitvalue)%程序中采用赌轮盘选择法选择实现totalfit=sum(fitvalue);%求适应值之和fitvalue=fitvalue/totalfit;%单个个体被选择的概率fitvalue=cumsum(fitvalue);%如 fitvalue=1 2 3 4,则 cumsum(fitvalue)=1 3 6 10 px,py=size(pop);ms=sort(rand(px,1);%从小到大排列fitin=1;newin=1;while newin=px%蒙特卡洛方法抽样 if(ms(newin)fitvalue(fit
8、in)newpop(newin,:)=pop(fitin,:);newin=newin+1;else fitin=fitin+1;endend,Matlab编程实现GA,交叉,function newpop=crossover(pop,pc)px,py=size(pop);newpop=ones(size(pop);for i=1:2:px-1 if(randpc)cpoint=round(rand*py);newpop(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py);newpop(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+
9、1:py);else newpop(i,:)=pop(i);newpop(i+1,:)=pop(i+1);endend,Matlab编程实现GA,变异,functionnewpop=mutation(pop,pm)px,py=size(pop);newpop=ones(size(pop);for i=1:px if(randpm)mpoint=round(rand*py);if mpoint=0 mpoint=1;end newpop(i,:)=pop(i,:);,Matlab编程实现GA,if any(newpop(i,mpoint)=0 newpop(i,mpoint)=1;else ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 遗传 算法 Matlab 实现 讲解
链接地址:https://www.31ppt.com/p-5856745.html