自适应动态规划matlab,自适应动态规划ADP
该研究探讨了基于神经动态规划的水泥分解炉温度控制方法,重点研究了Jacobian矩阵的计算及其在控制中的应用。通过构建神经网络模型,对输入样本进行归一化处理,并采用Levenberg-Marquardt算法进行训练。研究还涉及了执行网络的构建与仿真,最终实现了对水泥分解炉温度的有效控制,并通过反归一化处理得到了实际输出。该方法在提高控制精度和稳定性方面具有显著优势。
在相关领域的研究论文中,针对水泥分解炉温度控制中的应用,进行了神经网络动态分析。
Jacobian);
Jacobianian等于Action.Jacobian除以Action.Jaeobi出Seal:%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结构训练的部分源码:
%二一一一一一一一一
%神经动态规划%神经网络中的动态规划实现
%一一一一一一一一一
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
%一一一一
functionName = actionCalculateJacobian(Aetion) % 计算出Jacobian矩阵在变量X处的输入点,用于确定函数的敏感度。
ACtioll.JaC0bi即=
该函数用于求取雅可比矩阵,并接受输入的雅可比矩阵、输出的雅可比矩阵以及...
54
部分神经网络建模源代码:
%输入样本
elear;
elearall;
工作表数据=data=xlsread($E:\BYL,八Program\nlant\datasooo.xls,); 请确保路径正确。
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):%反归一化
广州大学祠砚口士之瞬,七撰写论文,神经网络的动态变化, month见划在水泥分解炉温度控制中的应用研究。
funetionCreateUtillty
Utility.Numbe旧侣tates=2:
UtilityFunction.ZerothOrder.CurrentDerivatives=zeros田tility.StateNumber,l):DifferentialU(t)在t时刻。
Utility.FutureDerivatives=zeros(Utility.Numbe旧fstates,l);
%dU(t+l)/dr(t+l)
Utility.Derivativeseales二[1010],:%比例系数
save(,Utili勺匕BloReactlpart3,,,Utility,):%保存
%一一一一一
%NNCaleulatejacobian
%一一一一一一一
Jacobian value of 1000, Input layer, Input, Output layer, Jacobian matrix)
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
