资源简介
用遗传算法对BP神经网络进行优化,达到了减少BP神经网络算法前期盲目搜索的过程,使得算法更有目的性,最后达到的效果要比单独的BP算法要好
代码片段和文件信息
function err=Bpfun(xPThiddennumP_testT_test)
%% 训练&测试BP网络
%% 输入
% x:一个个体的初始权值和阈值
% P:训练样本输入
% T:训练样本输出
% hiddennum:隐含层神经元数
% P_test:测试样本输入
% T_test:测试样本期望输出
%% 输出
% err:预测样本的预测误差的范数
inputnum=size(P1); % 输入层神经元个数
outputnum=size(T1); % 输出层神经元个数
%% 新建BP网络
net=newff(minmax(P)[hiddennumoutputnum]{‘tansig‘‘logsig‘}‘trainlm‘);
%% 设置网络参数:训练次数为1000,训练目标为0.01,学习速率为0.1
net.trainParam.epochs=1000;
net.trainParam.goal=0.01;
net.trainParam.lr = 0.1;
net.trainParam.show=NaN;
% net.trainParam.showwindow=false; %高版MATLAB使用 不显示图形框
%% BP神经网络初始权值和阈值
w1num=inputnum*hiddennum; % 输入层到隐层的权值个数
w2num=outputnum*hiddennum;% 隐含层到输出层的权值个数
w1=x(1:w1num); %初始输入层到隐含层的权值
B1=x(w1num+1:w1num+hiddennum); %隐层神经元阈值
w2=x(w1num+hiddennum+1:w1num+hiddennum+w2num); %初始隐层到输出层的权值
B2=x(w1num+hiddennum+w2num+1:w1num+hiddennum+w2num+outputnum); %输出层阈值
net.iw{11}=reshape(w1hiddennuminputnum);
net.lw{21}=reshape(w2outputnumhiddennum);
net.b{1}=reshape(B1hiddennum1);
net.b{2}=reshape(B2outputnum1);
%% 训练网络
net=train(netPT);
%% 测试网络
Y=sim(netP_test);
err=norm(Y-T_test);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-02 21:38 chapter3\
目录 0 2018-01-02 21:38 chapter3\R2009a\
文件 1317 2015-06-30 11:33 chapter3\R2009a\Bpfun.m
文件 2280 2015-06-29 15:38 chapter3\R2009a\GABPMain.m
文件 404 2010-11-14 00:49 chapter3\R2009a\Objfun.m
文件 1792 2015-06-30 11:34 chapter3\R2009a\callbackfun.m
文件 1605 2015-06-14 11:09 chapter3\R2009a\data.mat
目录 0 2018-01-02 21:38 chapter3\R2014a\
文件 1342 2015-06-30 11:34 chapter3\R2014a\Bpfun.m
文件 2280 2015-06-29 15:38 chapter3\R2014a\GABPMain.m
文件 404 2010-11-14 00:49 chapter3\R2014a\Objfun.m
文件 1815 2015-06-30 11:34 chapter3\R2014a\callbackfun.m
文件 1605 2015-06-14 11:09 chapter3\R2014a\data.mat
- 上一篇:按属性分割图层.zip
- 下一篇:基于遗传算法的LQR控制器的优化设计
评论
共有 条评论