资源简介
simulink s函数神经网络BP-PID,教程和一些注意事项matlab
代码片段和文件信息
function[sysx0strts]=cilian(txuflag)
switch flag
case 0
[sysx0strts]=mdlInitializeSizes;
case 2
sys=mdlUpdates(xu);
case 3
sys=mdlOutputs(txu);
case{149}
sys=[];
otherwise
error([‘unhandledflag=‘num2str(flag)]);
end
function[sysx0strts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates=0;
sizes.NumDiscStates=3;
sizes.NumOutputs=4;
sizes.NumInputs =7;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=zeros(31);
str=[];
ts=[1 0];
function sys=mdlUpdates(xu)
T=0.001;
x=[u(5);x(2)+u(5)*T;(u(5)-u(4))/T];
sys=[x(1);x(2);x(3)];
function sys=mdlOutputs(txu)
xite=0.2;
alfa=0.05;
IN=3;
H=5;
OUT=3;
wi=rand(HIN);
wi_1=wi;
wi_2=wi;
wi_3=wi;
wo=rand(INH);
wo_1=wo;
wo_2=wo;
wo_3=wo;
Oh=zeros(H1);
I=Oh;
xi=[u(1)u(3)u(5)];
epid=[x(1);x(2);x(3)];
I=xi*wi‘;
for j=1:H
Oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I (j)));
end
K1=wo*Oh;
for i=1:OUT
K(i)=exp(K1(i))/(exp(K1(i))+exp(-K1(i)));
end
u_k=K*epid;
dyu=sign((u(3)-u(2))/(u(7)-u(6)+0.0001));
for j=1:OUT
dK(j)=2/(exp(K1(j))+exp(-K1(j)))^2;
end
for i=1:OUT
delta3(i)=u(5)*dyu*epid(i)*dK(i);
end
for j=1:OUT
for i=1:H
d_wo=xite*delta3(j)*Oh(i)+alfa*(wo_1-wo_2);
end
end
wo=wo_1+d_wo;
for i=1:H
dO(i)=4/(exp(I(i))+exp(-I(i)))^2;
end
segma=delta3*wo;
delta2=dO.*segma;
d_wi=xite*delta2‘*xi+alfa*(wi_1-wi_2);
wi=wi_1+d_wi;
wo_3=wo_2;
wo_2=wo_1;
wo_1=wo;
wi_3=wi_2;
wi_2=wi_1;
wi_1=wi;
Kp=K(1);
Ki=K(2);
Kd=K(3);
sys=[u_kKpKiKd];
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1591 2018-03-24 19:36 cilian.m
文件 34956 2018-03-25 16:56 easycontroller.mdl
文件 358127 2018-03-24 15:35 S函数的BP神经网络PID控制器Simuli
文件 13415 2018-03-25 16:59 新建 Microsoft Word 文档.docx
文件 1163776 2018-03-24 15:31 神经网络PID毕业设计完整.doc
评论
共有 条评论