• 大小: 930KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: Matlab
  • 标签: BP-PID  

资源简介

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控制器Simulink仿真.pdf
     文件       13415  2018-03-25 16:59  新建 Microsoft Word 文档.docx
     文件     1163776  2018-03-24 15:31  神经网络PID毕业设计完整.doc

评论

共有 条评论