自适应动态规划matlab,自适应动态规划ADP
改d卜学亡立论文神经动丸夫见划在水泥分解炉温度挽制中的返立用花开究
Jacobian);
Aetion.Jaeobian=Action.Jacobian./Action.Jaeobi出ISealing:%Jacobian缩放比例
%AetionProeess部分
funetionAction=AetionProeess(Aetion,ActioulnPUt)
05=Action.InPutoffsets:
55=Aetion.InPutsealing:
Aetion.InPut=AetioulnPut:
Aetion,NN=NNForwardsig([(AetionlnPut+05)./55],Action.NN):
%控制器前向信号
Aetion.outPut=Action.NN.Y.*Aetion.OutPutsealing:%分配输出控制变量
%=一一=一一=一一==一一一一一一一一一=一
附:DHP结构训练的部分源码:
%二一一一一一一一一
%神经动态规划%ereatesimpleNN
%一一一一一一一一一
FunetionNN二createsimPleNN(numln,numHidden,numout,LR,
momentum,weightlnitLB,weightlnitUB)
length=weightlnitUB一weightlnitLB:
NN.WI=rand(numHidden,numln)*length+weightlnitLB;
NN.BI=rand(numHidden,1)*length+weightlnitLB;
NN.WZ=rand(numout,numHidden)*length+weightlnitLB:
NN.BZ=rand(numOut,l)*length+weightlnitLB:
NN`LR=LR;
NN.MOM=momentum二
NN.WIUPDATE二zeros(numHidden,numln):
NN.WZUPDATE=zeros(numout,numHidden);
NN.BIUPDATE二zeros(numHidden,l);
NN.BZUPDATE=zeros(numout,l);
NN.JBLANK二zeros(numout,l);
%一一一-一一一一一一一一一一一一一一
%CreateUtility
%一一一一一一一一一一…
55
侧穿大学不斑.士学位论文神经动魔老见划在水泥分解炉弓盈度控制中的石这用研究
附:评价网络的部分源码:
%一一=========二
%copyright(c),2006.广西大学电气学院%张志刚
喻申经动态规划程序米CreateCritic
%======二二==二二=-一一==二二
n川ctionCreateCritie(LR,MOM,初,NUMseHIDDEN,Name,SavePath)
Critie.EveniLog=[numZ州elock)’
Critie.Filenarne=Na们比e;
Critie.InPut=zeros(2,l):
Critic.NN=createsimPleNN(2,NUM
Creationoferitiene扒刀ork,]:
Critie.OutPut=zeros(2,l):
Critie.Feedback=zeros(2,l):
Critie.LeamingRate=LR;
Critie.Momentum=MOM;
Critic.InPutoffeets=[00],:
Critie.InPutsealing=[11],,
save([SavePathName],,Critic,):
%CritieProeess部分
%定义评价网络的输入变量
一IDDEFJ,2,LR,MOM,一Wl,Wl):
%输出层控制
%反馈层.控制误差
%输入变量的偏移量
%输入变量的缩放比
funetionCritie=CritieProeess(Critie,CritielnPut)
05=Critie.InPutoffsets:
55=Critie.InPutsealing:
Critie.InPut=CritielnPut:
eritie.NN=NNForwardLin([(eritielnput+05)./55],Critie.NN):%反馈控制
Critic.OutP咋Critic.NN.Y,;%分配输出控制变量
附:执行网络的部分源码:
%=一一
%神经动态规划%AetionCalculatejacobian
%一一一一
funetionAetion=AetionCaleulatejacobian(Aetion)%计算Jacobian变量X的输入点
ACtioll.JaC0bi即=
NNCaleulatejacobian(Aetion.NN,Aetion.JacobianlnPuts,Aetion.JacobianoutPuts,Aetion.
54
部分神经网络建模源代码:
%输入样本
elear;
elearall;
data=xlsread(‘E:\BYL,八Program\nlant\datasooo.xls,);%注意选择data500o文件的路径
P=data(l:5000,l:3);
t=data(l:5000,4):
p=P’;
t=t.;
%对原始数据进行归一化
[Pn,minP,maxP,tn,mint,maxtl=Premnmx(P,t);
%P(i,:)=(P(i,:)一min(P(i,:)))/(max(P(i,:))一min(P(i,:))):
%T(l,:)=(t(l,:)一min(t))/(max(t)一min(t)):
%建立网络
%net=newff(minmax(pn),[8,l],{‘tansig,,,tansig,},,trainbr,):%采用贝叶斯归一法trainbr
%net=newff(minmax(Pn),[8,l],{‘109519,,,109519,},,traingd,):
ne拼newff(minmax(Pn),[10,l],{‘tansig,,,tansig,},,trainlm,):
%建立模型,采用Levenberg一Marquardt算法进行训练
net=init(net);
net.trainParam.show=500;
net.trainPara们比.1下0.01;
net.trainParam.ePoehs=3000:
net.trainParam.goal=0.0001:
[net,tr]减rain(net,pn,tn);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%用训练好的模型进行仿真%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dat亡=xlsread(‘E:泊YLW\program\plant\data5000.xls,);%注意选择dat的000文件的路径
a=sim(net,Pn):
b=Postmnmx(a,mint,maxt):%反归一化
广翅叮大学祠砚口士之瞬七立论文神经动荞乏月见划在水泥分解炉沮度控制中的石立用研究
funetionCreateUtillty
Utility.Numbe旧侣tates=2:
Utility.PresentDerivatives=zeros田tility.Numberofstates,l):%dU(t)尼叹t)
Utility.FutureDerivatives=zeros(Utility.Numbe旧fstates,l);
%dU(t+l)/dr(t+l)
Utility.Derivativeseales二[1010],:%比例系数
save(,Utili勺匕BloReactlpart3,,,Utility,):%保存
%一一一一一
%NNCaleulatejacobian
%一一一一一一一
九netionjacobian千NNCaleulatejacobian价IN,InPutlndiees,outPutlndieesjacobian)
numln=max(size(InPutlndiees)):
numout=max(size(OutPutlndiees));
blank=NN.JBLANK;
forl=1:numout
blank(OutPutlndiees(i))=l:
NN=NNDual(blank,NN);
forj=l:numln
jacobianG,i)=NN.DXDE(InPutlndieesO)):
elld
blank(OutPutlndiees(i))=0:
end
还没有评论,来说两句吧...