##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...