遗传算法优化的BP神经网络之matlab实现

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44719615/article/details/102591139
global p     % 训练集输入数据
global t     % 训练集输出数据
global R     % 输入神经元个数
global S2    % 输出神经元个数
global S1    % 隐层神经元个数
global S     % 编码长度
S1 = 6;
d = v';
U = mapminmax(d,0,1);
p=U(1:3,1:45);
t=U(4,1:45);
P_test=U(1:3,46:50);
net = newff(minmax(p),[S1,1],{'tansig','purelin'},'trainlm');
net.trainParam.show = 10;
net.trainParam.epochs = 2000;
net.trainParam.goal = 1.0e-3;
net.trainParam.lr = 0.1;
[net,tr] = train(net,p,t);
s_bp = sim(net,P_test)    % BP神经网络的仿真结果
R = size(p,1);
S2 = size(t,1);
S = R*S1 + S1*S2 + S1 + S2;
aa = ones(S,1)*[-1,1];
popu = 50;  % 种群规模
initPpp = initializega(popu,aa,'gabpval',[],[1e-6 1]);  % 初始化种群
gen = 100;  % 遗传代数
% 调用GAOT工具箱,其中目标函数定义为gabpEval
[x,endPop,bPop,trace] = ga(aa,'gabpval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...
                           'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);
figure(1)
plot(trace(:,1),1./trace(:,3),'r-');
hold on
plot(trace(:,1),1./trace(:,2),'b-');
xlabel('Generation');
ylabel('Sum-Squared Error');
figure(2)
plot(trace(:,1),trace(:,3),'r-');
hold on
plot(trace(:,1),trace(:,2),'b-');
xlabel('Generation');
ylabel('Fittness');
[W1,B1,W2,B2,val] = gadecod(x);
net.IW{1,1} = W1;
net.LW{2,1} = W2;
net.b{1} = B1;
net.b{2} = B2;
net = train(net,p,t);
s_ga = sim(net,P_test)    %遗传优化后的仿真结果

猜你喜欢

转载自blog.csdn.net/weixin_44719615/article/details/102591139