RBF PID引數自整定控制器設計

2021-08-21 03:17:34 字數 3621 閱讀 6708

##rbf網路實現pid引數自整定

**如下

clear;

clc;

%% 引數初始化

lr=0.1;%學習速率

beta=0.05;%動量因子

x=[0,0,0]';%初始化輸入

nn=6;%隱含層節點數

%rbf網路3-6-1結構初始化引數

ci=30*ones(3,nn);%節點基函式中心向量

bi=40*ones(nn,1);%節點基函式方差

w=10*ones(nn,1); %輸出層權重

h=zeros(nn,1);%隱藏層輸出向量

ci_1=ci;ci_3=ci_1;ci_2=ci_1;

bi_1=bi;bi_2=bi_1;bi_3=bi_2;

w_1=w;w_2=w_1;w_3=w_1;

u_1=0;y_1=0;

ec=[0,0,0]';%誤差變化率ec,e,ecc

error_1=0;error_2=0;error=0;

% pid 初始引數設定

kp0 = 0.03;

ki0 = 0.28;

kd0 = 0.03;

flag=1;%控制模式flag=0 pid&rbf;flag=1 pid

kp_1=kp0;

kd_1=kd0;

ki_1=ki0;

%pid引數學習率

kp_lr=0.20;

kd_lr=0.20;

ki_lr=0.20;

ts=0.01;

%%for t = 1:1:200

time(t)=t*ts;

r(t)=1.0*sign(sin(2*pi*t*ts));%系統參考輸入

y(t)=(-0.3*y_1+u_1)/(6+y_1^2);%系統輸出

%% 前向傳播

%1.計算每個節點rbf的輸出

for j=1:1:nn

h(j)=exp(-norm(x-ci(:,j))^2/(2*bi(j)*bi(j)));

end%2. rbf網路輸出

ym(t)=w'*h;

%% 反向傳播

%1. 輸出權重更新計算

d_w=0*w;

for j=1:1:nn

d_w(j)=lr*(y(t)-ym(t))*h(j);

endw=w_1+d_w+beta*(w_1-w_2);

%2. 節點基函式方差更新

d_bi=0*bi;

for j=1:1:nn

d_bi(j)=lr*(y(t)-ym(t))*w(j)*h(j)*(bi(j)^-3)*norm(x-ci(:,j))^2;

endbi=bi_1+ d_bi+beta*(bi_1-bi_2);

%3. 節點中心更新

for j=1:1:nn

for i=1:1:3

d_ci(i,j)=lr*(y(t)-ym(t))*w(j)*h(j)*(x(i)-ci(i,j))*(bi(j)^-2);

endend

ci=ci_1+d_ci+beta*(ci_1-ci_2);

%% 系統雅可比矩陣計算

yu=0;

for j=1:1:nn

yu=yu+w(j)*h(j)*(-x(1)+ci(1,j))/bi(j)^2;

enddyout(t)=yu;

%% pid控制器引數修改

error(t)=r(t)-y(t);

kp(t)=kp_1+kp_lr*error(t)*dyout(t)*ec(1);

kd(t)=kd_1+kd_lr*error(t)*dyout(t)*ec(2);

ki(t)=ki_1+ki_lr*error(t)*dyout(t)*ec(3);

if kp(t)<0

kp(t)=0;

endif kd(t)<0

kd(t)=0;

endif ki(t)<0

ki(t)=0;

endswitch flag

case 0

case 1

kp(t)=kp0;

ki(t)=ki0;

kd(t)=kd0;

enddu(t)=kp(t)*ec(1)+kd(t)*ec(2)+ki(t)*ec(3); %增量pid控制

u(t)=u_1+du(t);

%return of parameters

x(1)=du(t);

x(2)=y(t);

x(3)=y_1;

u_1=u(t);

y_1=y(t);

ci_3=ci_2;

ci_2=ci_1;

ci_1=ci;

bi_3=bi_2;

bi_2=bi_1;

bi_1=bi;

w_3=w_2;

w_2=w_1;

w_1=w;

ec(1)=error(t)-error_1;

ec(2)=error(t)-2*error_1+error_2;

ec(3)=error(t);

error_2=error_1;

error_1=error(t);

kp_1=kp(t);

kd_1=kd(t);

ki_1=ki(t);

end%% 繪圖

figure(1);

plot(time,r,'b',time,y,'r');

xlabel('time(s)');ylabel('r(t),y(t)');

title('rbf&pid控制器下系統輸出')

figure(2);

plot(time,error);

xlabel('times(s)');ylabel('error(t)');

title('rbf&pid控制器下系統誤差');

figure(3);

plot(time,kp,time,ki,time,kd);

xlabel('times(s)');

ylabel('kp,ki,kd');

title('kp,ki,kd整定');

legend('kp','ki','kd');

grid on;

系統輸出:

PID引數整定快速入門(調節器引數整定方法)

pid調節器 引數整定方法很多,常見的工程整定方法有臨界比例度法 衰減曲線法和經驗法。雲潤儀表以 形式分別介紹調節器引數整定方法。臨界比例度法 乙個調節系統,在階躍干擾作用下,出現既不發散也不衰減的等幅 過程,此過程成為等幅振盪過程,如下圖所示。此時調節器的比例度為臨界比例度 k 被調引數的工作週期...

遠驅240控制器調整引數 智慧型控制器

1 雨情遙測智慧型控制器 應用領域 廣泛應用於防汛 氣象 城市排澇等 實現功能 1 可外接雨量感測器 2 gprs cdma任意兩種通道相連的介面 3 具有定時自報和響應召測相容的工作體制 4 具備主備通道切換 傳送確認 自動補發功能 5 具備電源檢測與管理 報警功能 6 具備防盜開關訊號接入與檢測...

Spring MVC控制器方法引數型別

spring mvc自動將servlet api的session傳遞過來 命令物件 map map,model model,modelmap modelmap 這三個引數能夠暴露控制器中的模型,用於頁面的資料渲染 public string testexposemodeldata mapmap,mo...