全部清除;
全部關閉;
T = 0.005%采樣周期
sys=tf(1,';%網絡的輸入向量
h = 3;隱藏層節點的數量百分比
ci = 28 *個壹(3,H);
bi = 40 *個壹(H,1);
w = 30 *個壹(H,1);%網絡的權重向量
H =零(H,1);%隱藏層輸出
ci _ 1 = ci;ci _ 2 = ci _ 1;ci _ 3 = ci _ 2;
bi _ 1 = bi;bi _ 2 = bi _ 1;bi _ 3 = bi _ 2;
w _ 1 = w;w _ 2 = w _ 1;w3 = w2;
u _ 1 = 0;y _ 1 = 0;%函數中間變量
u _ 2 = 0;y _ 2 = 0;%函數中間變量
xc = ';%高斯函數的輸入
error _ 1 = 0;error _ 2 = 0;%錯誤初始化
%%%%% PID初始參數給定% %%%
KP = 1;%比例系數
ki = 0.1;%積分系數
KD = 0.01;%微分系數
KP _ 1 = KP;
ki _ 1 = ki;
KD _ 1 = KD;
xitekp = 0.5
xiteki = 0.5
xitekd = 0.5
對於k = 1: 1: 1000%抽樣。
時間(k)= k * T;
rin(k)= 1;%輸入命令信號
yout(k)=-den(3)* y _ 2-den(2)* y _ 1+num(3)* u _ 2+num(2)* u _ 1;%二階受控對象
對於j=1:1:H
h(j)=exp(-norm(x-ci_1(:,j))^2/(2*bi_1(j)*bi_1(j)));%是高斯函數。
結束
ymout(k)= w _ 1 ' * h;%表示網絡的輸出
d _ w = 0 * w%定義d_w的矩陣數等於w的矩陣數
對於j=1:1:H
d _ w(j)= xite *(yout(k)-ymout(k))* h(j);
結束
w = w _ 1+d _ w+alfa *(w _ 1-w _ 2)+belt e *(w _ 2-w _ 3);%輸出權重的叠代算法
d _ bi = 0 * bi
對於j=1:1:H
d_bi(j)=xite*(yout(k)-ymout(k))*w_1(j)*h(j)*(bi_1(j)^-3)*norm(x-ci_1(:,j))^2;
結束
bi = bi _ 1+d _ bi+alfa *(bi _ 1-bi _ 2)+belte *(bi _ 2-bi _ 3);%節點中心的叠代算法
對於j=1:1:H
因為i=1:1:3
d_ci(i,j)=xite*(yout(k)-ymout(k))*w_1(j)*h(j)*(x(i)-ci_1(i,j))*(bi_1(j)^-2);
結束
結束
ci = ci _ 1+d _ ci+alfa *(ci _ 1-ci _ 2)+belte *(ci _ 2-ci _ 3);%節點基寬參數的叠代算法
%%%%%%%%%%%%%%%%%雅可比矩陣%%%
dyu = 0;
對於j=1:1:H
dyu=dyu+w(j)*h(j)*(-x(1)+ci(1,j))/bi(j)^2;
結束
dy out(k)= dyu;
%%%%%%%%%%%%%%%控制系統啟動%%%
誤差(k)= rin(k)-yout(k);預期輸出和實際輸出之間的%偏差,即控制誤差。
KP(k)= KP _ 1+xitekp * error(k)* dy out(k)* xc(1);
KD(k)= KD _ 1+xite KD * error(k)* dy out(k)* xc(2);
ki(k)= ki _ 1+Xi teki * error(k)* dy out(k)* xc(3);
如果KP(k)& lt;0
KP = 0;
結束
如果KD(k)& lt;0
KD = 0;
結束
如果ki(k)& lt;0
ki = 0;
結束
du(k)= KP(k)* xc(1)+KD(k)* xc(2)+ki(k)* xc(3);
u(k)= u _ 1+du(k);
如果u(k)>=2
u(k)= 2;
結束
如果u(k)& lt;=0
u(k)= 0;
結束
%Return of parameters返回參數。
x(1)= du(k);
x(2)= yout(k);
x(3)= y _ 1;
u _ 1 = u(k);
y _ 1 = yout(k);
%%%%重量更新%%%%
w3 = w2;
w _ 2 = w _ 1;
w _ 1 = w;
%%%%% PID三個輸入% %%%
xc(1)= error(k)-error _ 1;%計算P
xc(2)= error(k)-2 * error _ 1+error _ 2;%計算D
xc(3)=誤差(k);%計算I
error _ 2 = error _ 1;
error _ 1 = error(k);
KP _ 1 = KP(k);
KD _ 1 = KD(k);
ki _ 1 = ki(k);
結束
圖(1);
plot(time,rin,' b ',time,yout,' r ');
xlabel(“時間”);ylabel('rin,yout ');
圖(4);
支線劇情(311);
plot(時間,kp,' r ');
xlabel(“時間”);ylabel(' KP ');
支線劇情(312);
plot(時間,ki,' g ');
xlabel(“時間”);ylabel(' ki ');
支線劇情(313);
plot(時間,kd,' b ');
xlabel(“時間”);ylabel(' KD ');
堅持住;