📄 gabppp.m
字号:
tic, %开始计时
% 首先进行遗传算法
[P,T,R,S1,S2,S,meanp,stdp,meant,stdt]=nninit;
%[P,T,R,S1,S2,Q,S]=nninit; % BP网络初始化
aa=ones(S,1)*[-1 1];
popu=400;
initPpp=initializega(popu,aa,'gabpEval');
gen=1000;
[x endPop bPop trace]=ga(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...
'normGeomSelect',[0.08],['arithXover'],[3],'nonUnifMutation',[4 gen 3]);
subplot(2,1,1)
plot(trace(:,1),1./trace(:,3),'r-')
hold on
plot(trace(:,1),1./trace(:,2),'b-')
xlabel('Generation');
ylabel('Sum-Squared Error');
subplot(2,1,2)
plot(trace(:,1),trace(:,3),'r-')
hold on
plot(trace(:,1),trace(:,2),'b-')
xlabel('Generation');
ylabel('Fittness');
[W1 B1 W2 B2]=gadecod(x);
net=newff(minmax(P),[S1 S2],{'tansig' 'purelin'},'trainlm');
% BP网络训练的参数设置
net.trainParam.epochs =5000;
net.trainParam.goal = 0.20;
net.trainParam.lr = 0.001;
net.iw{1,1}=W1;
net.lw{2,1}=W2;
net.b{1}=B1;
net.b{2}=B2;
% 开始训练
net=train(net,P,T);
% 仿真结果
TT=sim(net,P)
T
E=sum((T-TT).^2)./10;
E=sqrt(E)
e1=(T-TT)./T
c=poststd(TT,meant,stdt)
toc % 结束计时
%前面的网络训练过程可以是脚本文件运行
%后面的待预测的数据必须每次从命令窗口输入才是每次得到同一的预测结果 只有这样才是每次利用前面已经训练好的网络
%检验数据:
%##########################################
%xk1=input(' please input .....xk==')
%pnew=xk1';
%pnew=trastd(pnew,meanp,stdp);%将数据通过自标准化再用来输入网络
%an=simuff(pnew,W1,B1,'tansig',W2,B2,'purelin')%网络模拟出来的值
%anew=poststd(an,meant,stdt)%模拟出的值再线性返回样本预测值
%tk1=input(' please input .....tk==')
%e2=(tk1-anew)./tk1
%xk2=input(' please input .....xk==')
data
%data2
%data3
pnew=xk';
pnew=trastd(pnew,meanp,stdp);%将数据通过自标准化再用来输入网络
an=sim(net,pnew);%网络模拟出来的值
anew=poststd(an,meant,stdt)%模拟出的值再线性返回样本预测值
%tk2=input(' please input .....tk==')
tk=tk'
e2=(tk-anew)./tk
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -