今天看了论文《基于S函数的BP神经网络P I D控制器S i m u li n k仿真》按照论文上的步骤做总是出问题,请高手帮忙看一下!
%%m文件
function [sys,x0,str,ts]=bp_pids(t,x,u,flag,T,nh,xite,alfa,kF1,kF2)
T=0.001;
nh=5;
xite=0.25;
alfa=0.05;
kF1=1;
kF2=2;
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes(T,nh);
%case 1,
% sys=mdlDerivatives(t,x,u);
%case 2,
%sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u,T,nh,xite,alfa,kF1,kF2);
case{1,2,4,9},sys=[];
% sys=mdlGetTimeOfNextVarHit(t,x,u);
%case 9,
%sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes(T,nh)
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 4+7*nh;
sizes.NumInputs = 7+14*nh;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [T 0];
function sys=mdlDerivatives(t,x,u)
sys = [];
function sys=mdlUpdate(t,x,u)
sys = [];
function sys=mdlOutputs(t,x,u,T,nh,xite,alfa,kFuncl,kFunc2)
wi_2=reshape(u(8:7+4*nh),nh,4);
wO_2=reshape(u(8+4*nh:7+7*nh),3,nh);
wi_1=reshape(u(8+7*nh:7+11*nh),nh,4);
wO_1=reshape(u(8+11*nh:7+14*nh),3,nh);
xi=[u([6,4,1])',1];
xx=[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];
I=xi*wi_1';
Oh=non_transfun(I,kF1);
K=non_transfun(wo_l*Oh',kF2);
uu=u(7)+K'*xx;
dyu=sign((u(4)-u(5))/(uu-u(7)+0.0000001));
dK=non_transfun(K,3);
delta3=u(1)*dyu*xx.*dK;
wO=wO_1+xite*delta3*Oh+alfa*(wO_1-wO_2)+alfa*(wO_1-wO_2);
dO=2*non_transfun(I,3);
wi=wi_1+xite*(dO.*(delta3'*wO))'*xi+alfa*(wi_1-wi_2);
sys = [uu;K;wi( ;wO( ];
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1;
sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];
function W1=non_transfun(W,key)
switch key
case 1,W1=(exp(W)-exp(-W))./(exp(W)+exp(-W));
case 2,W1=exp(W)./(exp(W)+exp(-W));
case 2,W1=2./(exp(W)+exp(-W)).^2;
end
文中系统仿真的是y(t)=1.2y(t-1))/(1-0.8e^(-0.1t/T))/(1+y(t-1)^2)+u(t),
出现的问题是:在M文件中是77输入,39输出,在文中mask subsystem中得到2输入,2输出的模块,
(其中输入1为给定信号与对象输出信号的误差e(k),输入2为对象输出信号y(k)。输出1为控制器的输出u(k),
输出2为kp,ki,kd-个权值的变化量。)
我用simulink做出程序,但是还是变量个数有问题?
不知文章是怎么实现的?请高手指点~
![基于S函数的BP神经网络P I D控制器,S函数封装问题]()
NNPID.PNG
[ Last edited by kaiyu on 2013-7-15 at 20:21 ] |