遗传算法的Matlab实现.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
II-2 GA优化BP神经网络 给定一百组数据(X,Y,Z),(X,Y)为两种测量参数(即输入),Z为结果(即输出)。 请利用NN模拟输入和输出的关系。 测量数据可利用函数关系模拟: II-2 GA优化BP神经网络 源代码见GABPNN.m II-2 GA优化BP神经网络 GA优化的结果 II-2 GA优化BP神经网络 GA优化的结果 练习三 给定100组数据(X1,X2,X3,X4,Y1,Y2),(X1,X2,X3,X4)为四种测量参数(即输入),(Y1,Y2)为结果(即输出)。 请利用GA优化BPNN模拟输入和输出的关系。 测量数据可利用函数关系模拟: II-3 GA求解TSP问题 求中国31个省会城市的最短路径(GATSP_PPT2.m) II-3 GA求解TSP问题 GA收敛过程(GATSP_PPT2.m) 练习四 调节GATSP_PPT2中的参数,使其达到最佳状态。 数学建模专题之遗传算法 数学建模专题之遗传算法 数学建模专题之 遗传算法的MATLAB实现 重庆理工大学 主讲:肖汉光 Email:hgxiao@cqut.edu.cn Contents I Matlab编程实现GA 1 Matlab函数调用实现GA 2 Matlab工具箱实现GA 3 Matlab编程实现GA 例1:计算目标函数值函数 主程序 %遗传算法主程序 function My_GA global Cmin; Cmin=-10^6; 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]=calobjvalue(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/(2^chromlength-1); %最佳个体解码 y(i)=bestfit+Cmin; %最佳个体适应度 y_mean(i)=mean(fitvalue+Cmin); %第i代平均适应度 pop=newpop; end fplot(2*x+10*sin(5*x)+7*cos(4*x),[0 10]) hold on plot(x,y,r*) hold off 初始化(编码) % initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度), % 长度大小取决于变量的二进制编码的长度(在本例中取20位)。 %Name: initpop.m function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元为 {0,1} 行数为popsize,列数为chromlength的矩阵, % round对矩阵的每个单元进行取整。这样产生的初始种群。 Matlab编程实现GA 将二进制数转化为十进制数 将二进制数转化为十进制数 %产生 [2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制 function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和列数 for i=1:py pop1(:,i)=2.^(py-i).*pop(:,i); end pop2=sum(pop1,2); %求pop1的每行之和 function pop2=decodechrom(pop,spoint,length) pop1=pop(:,spoint:spoint+length-1); pop2=decodebinary(

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档