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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

GABP程序.docx

1、GABP程序GA-BP程序(总19页)例1【原创】用遗传算法优化BP神经网络的Matlab编程实例font=楷体size=4color=blue此文章首次在simwe公开发表属于GreenSim团队原创作品,转载请注明!/color/size/fontfont=楷体size=4color=#0000ff更多原创程序,请访问GreenSim团队主页url=font=楷体size=4color=blue/color/size/fontfont=楷体size=4color=blue由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代

2、码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。/color/size/font程序一:GA训练BP权值的主函数function net=GABPNET(XX,YY)%-%使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络%-%数据归一化预处理nntwarn offXX=premnmx(XX);YY=premnmx(YY);%创建网络net=newff(minmax(XX),19,25,1,tansig,tansig,purelin,trainlm);%下面使用遗传算法对网络进行优化P=XX;T=YY;R=size(P,1

3、);S2=size(T,1);S1=25;%隐含层节点数S=R*S1+S1*S2+S1+S2;%遗传算法编码长度aa=ones(S,1)*-1,1;popu=50;%种群规模initPpp=initializega(popu,aa,gabpEval);%初始化种群gen=100;%遗传代数%下面调用gaot工具箱,其中目标函数定义为gabpEvalx,endPop,bPop,trace=ga(aa,gabpEval,initPpp,1e-6 1 1,maxGenTerm,gen,.normGeomSelect,arithXover,2,nonUnifMutation,2 gen 3);%绘收敛

4、曲线图figure(1)plot(trace(:,1),1./trace(:,3),r-);hold onplot(trace(:,1),1./trace(:,2),b-);xlabel(Generation);ylabel(Sum-Squared Error);figure(2)plot(trace(:,1),trace(:,3),r-);hold onplot(trace(:,1),trace(:,2),b-);xlabel(Generation);ylabel(Fittness);%下面将初步得到的权值矩阵赋给尚未开始训练的BP网络W1,B1,W2,B2,P,T,A1,A2,SE,val

5、=gadecod(x);2,1=W1;3,2=W2;2,1=B1;3,1=B2;XX=P;YY=T;%设置训练参数%训练网络net=train(net,XX,YY);程序二:适应值函数function sol, val = gabpEval(sol,options)% val - the fittness of this individual% sol - the individual, returned to allow for Lamarckian evolution% options - current_generationload data2nntwarn offXX=premnmx(

6、XX);YY=premnmx(YY);P=XX;T=YY;R=size(P,1);S2=size(T,1);S1=25;%隐含层节点数S=R*S1+S1*S2+S1+S2;%遗传算法编码长度for i=1:S, x(i)=sol(i);end;W1, B1, W2, B2, P, T, A1, A2, SE, val=gadecod(x);程序三:编解码函数function W1, B1, W2, B2, P, T, A1, A2, SE, val=gadecod(x)load data2nntwarn offXX=premnmx(XX);YY=premnmx(YY);P=XX;T=YY;R=

7、size(P,1);S2=size(T,1);S1=25;%隐含层节点数S=R*S1+S1*S2+S1+S2;%遗传算法编码长度% 前R*S1个编码为W1for i=1:S1, for k=1:R, W1(i,k)=x(R*(i-1)+k); endend% 接着的S1*S2个编码(即第R*S1个后的编码)为W2for i=1:S2, for k=1:S1, W2(i,k)=x(S1*(i-1)+k+R*S1); endend% 接着的S1个编码(即第R*S1+S1*S2个后的编码)为B1for i=1:S1, B1(i,1)=x(R*S1+S1*S2)+i);end% 接着的S2个编码(即第

8、R*S1+S1*S2+S1个后的编码)为B2for i=1:S2, B2(i,1)=x(R*S1+S1*S2+S1)+i);end% 计算S1与S2层的输出A1=tansig(W1*P,B1);A2=purelin(W2*A1,B2);% 计算误差平方和SE=sumsqr(T-A2);val=1/SE; % 遗传算法的适应值注意:上面的函数需要调用gaot工具箱,请从附件里下载!例2 遗传优化BP改动的地方看书童上传的m文件,如下% 程序说明% 主程序:% 适应度函数:% 编解码子函数:% 使用前需安装gaot工具箱,上述三个文件需放在同一文件夹中且将该文件夹% 设置为当前工作路径% 运行程序

9、时只需运行主程序即可% 此程序仅为示例,针对其他的问题,只需将数据修改即可,但需注意变量名% 保持一致,尤其是全局变量修改时(在和中也要修改)% 版权归MATLAB中文论坛所有,转载请注明% 清除环境变量clear allclcwarning off nntwarn off% 声明全局变量global p % 训练集输入数据global t % 训练集输出数据global R % 输入神经元个数global S2 % 输出神经元个数global S1 % 隐层神经元个数global S % 编码长度S1=25;% 导入数据% 训练数据day= ; ; ; ; ; ; ;% 数据归一化dayn,

10、minday,maxday=premnmx(day);% 输入和输出样本p=dayn(:,1:8);t=dayn(:,2:9);% 测试数据k= ; ; ; ; ; ; ;% 数据归一化kn=tramnmx(k,minday,maxday);% BP神经网络% 网络创建net=newff(minmax(p),S1,7,tansig,purelin,trainlm); % 设置训练参数% 网络训练net,tr=train(net,p,t);% 仿真测试s_bp=sim(net,kn); % BP神经网络的仿真结果% GA-BP神经网络R=size(p,1);S2=size(t,1);S=R*S1

11、+S1*S2+S1+S2;aa=ones(S,1)*-1,1;popu=50;% 种群规模initPpp=initializega(popu,aa,gabpEval);% 初始化种群gen=100;% 遗传代数% 调用GAOT工具箱,其中目标函数定义为gabpEvalx,endPop,bPop,trace=ga(aa,gabpEval,initPpp,1e-6 1 1,maxGenTerm,gen,.normGeomSelect,arithXover,2,nonUnifMutation,2 gen 3);% 绘均方误差变化曲线figure(1)plot(trace(:,1),1./trace(

12、:,3),r-);hold onplot(trace(:,1),1./trace(:,2),b-);xlabel(Generation);ylabel(Sum-Squared Error);% 绘制适应度函数变化figure(2)plot(trace(:,1),trace(:,3),r-);hold onplot(trace(:,1),trace(:,2),b-);xlabel(Generation);ylabel(Fittness);% 计算最优的权值和阈值W1,B1,W2,B2,val=gadecod(x);1,1=W1;2,1=W2;1=B1;2=B2;% 利用新的权值和阈值进行训练ne

13、t=train(net,p,t);% 仿真测试s_ga=sim(net,kn); %遗传优化后的仿真结果另外说明下,假如我要做识别类的优化,比如用遗传神经网络识别手写体字母,那 p:训练集输入数据t : 训练集输出数据R:输入神经元个数S2 : 输出神经元个数S1: 隐层神经元个数S : 编码长度这些数据都应该是多少,我识别的是图片,训练数据和测试数据都应该是什么附件c:iknowdocsharedatacur_work&k=1a9440b882d673bc8fffd8438209a721&t=10 (4 KB) 2010-5-22 18:08, 下载次数: 0 书童给的ga_bp哦基于Mat

14、lab神经网络工具的BP网络实例(注释很详细) 神经网络, Matlab, 实例, 注释, 工具1.clear2.clc3.close all4.warning off5.%数据输入6.huanghe_p=370 503 434 575 490 420 560 640 558 343 326 405 446 423 422 697 598 377 435 472 451 667 601 689 541 485 425 389 382 707 422;7.huanghe_t=515 713 586 753 720 567 717 987 810 489 453 589 639 568 595 9

15、82 849 519 615 652 599 941 893 999 758 701 630 561 520 1040 535;8.9.%归一化处理10.p=(huanghe_p-min(huanghe_p)/(max(huanghe_p)-min(huanghe_p);11.t=(huanghe_t-min(huanghe_t)/(max(huanghe_t)-min(huanghe_t);12.13.%网络有关参数14.EPOCHS=10000;15.GOAL=;16.LR=;17.MAX_FAIL=100;18.19.%建立bp神经网络,并训练,仿真。其中输入为p,输出为t20.21.%

16、-隐层神经元确定-22.23.s=3:15;%s 为常向量,表示神经元的个数24.res=zeros(size(s);%res将要存储误差向量,这里先置零25.26.pn=p(1:5);p(6:10);p(11:15);p(16:20);27.tn=t(1:5);t(6:10);t(11:15);t(16:20);28.for i=1:length(s)29.%版本使用下面代码30.%输出层的神经元个数必须等于tn的行数31.%每层的传递函数可以自己指定32.%创建了2层网路,隐层s(i)(任意);输出层4(由tn决定不可改,但需输入)33.%net=newff(minmax(pn),s(i)

17、,4,tansig,purelin,trainlm);34.%35.%版本使用下面的代码36.%输出层神经元由tn决定,不需要输入,我们只需要确定输入层和隐层的神经元个数37.%所有层的传递函数都可以自己定义38.%创建3层网络,输入层8(任意);隐层s(i)(任意);输出层4(由tn决定,不可改,不需要输入)39.%40.%其实两个版本的区别在于的bp网络创建函数直接给出了t,故最后一层不需要指定了,故相同的参数时,的会多一层41.%=newff(pn,tn,4,s(i),tansig,tansig,purelin,trainlm); 43.1,1=zeros(size1,1)+;44.2,

18、1=zeros(size2,1)+;45.1,1=zeros(size1,1)+;46.2,1=zeros(size2,1);47. =GOAL;48.选取最优神经元数,number为使得误差最小的隐层神经元个数49.ttmp2,ind=min(res);50.no=s(ind);51.52.%选定隐层神经元数目后,建立网络,训练仿真。53.%版本54.%net=newff(minmax(pn),no,4,tansig,purelin,trainlm);55.%版本=newff(pn,tn,4,no,tansig,tansig,purelin,trainlm); 57.1,1=zeros(si

19、ze1,1)+;58.2,1=zeros(size2,1)+;59.1,1=zeros(size1,1)+;60.2,1=zeros(size2,1);61. =GOAL;62.为网络的误差向量63.r=norm(error);%r为网络的整体误差64.save net %保存最好的网络65.%预测66.input=p(11:15);p(16:20);p(21:25);p(26:30);67.yuce=sim(net,input);68.69.%结果反归一化70.y_norm=y(1, y(2, y(3, y(4,;71.yuce_norm=yuce(1, yuce(2, yuce(3, yu

20、ce(4,;72.%训练数据的仿真结果73.t_val=y_norm*(max(huanghe_t(1:20)-min(huanghe_t(1:20)+min(huanghe_t(1:20);74.%预测数据的仿真结果75.yuce=yuce_norm*(max(huanghe_t(1:20)-min(huanghe_t(1:20)+min(huanghe_t(1:20);76.77.%计算误差78.%训练数据仿真的相对误差79.wucha=abs(t_val-huanghe_t(1:20)./huanghe_t(1:20);80.b=minmax(wucha);81.average_wucha=mean(wucha);82.%作图83.figure(1)84.plot(1:20,huanghe_t(1:20),*-,1:20,t_val,o:)85.title(训练数据仿真结果)86.legend(原始数据,仿真结果)87.88.figure(2)89.plot(1:20,huanghe_t(11:30),*-,1:20,yuce,o:)90.title(预测数据仿真结果)91.legend(原始数据,仿真结果)复制代码下载 KB)2009-5-30 21:02下载 KB)

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

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