Advertisement

自适应动态规划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

全部评论 (0)

还没有任何评论哟~