%% GA-BP 神经网络
R=size(p',1);
S2=size(t',1);
S=R*S1+S1*S2+S1+S2;
aa=ones(S,1)*[-1,1];
popu=100; % 种群规模
initPpp=initializega(popu,aa,'gabpEval'); % 初始化种群
gen=100; % 遗传代数
% 调用 GAOT 工具箱,其中目标函数定义为 gabpEval
[x,endPop,bPop,trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...
'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);
% 绘均方误差变化曲线
figure(2)
plot(trace(:,1),1./trace(:,3),'r-');
hold on
plot(trace(:,1),1./trace(:,2),'b-');
xlabel('Generation');
ylabel('Sum-Squared Error');
% 绘制适应度函数变化
figure(3)
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,pn,tn);
% 仿真测试
s_ga=sim(net,kn);
out2=postmnmx(s_ga,mine,maxe)
%遗传优化后的仿真结果
%ga 算法 预测值和真实值的比较
figure(4)
x=1:1:15
y=[1.1678
0.8617
0.7122