導航:首頁 > 源碼編譯 > 神經網路pid控制演算法

神經網路pid控制演算法

發布時間:2022-09-10 01:06:11

1. pid神經網路解耦控制演算法通常用在哪些應用中

您好,非常感謝您發出這個帖子。我現在也在考慮做或者學習相關四軸飛行器的神經網路控制演算法。之前我的飛機是用雙閉環PID控制演算法實現控制飛行的。最近在學習神經網路,我准備用神經網路控制演算法來對四軸飛行器姿態誤差進行修正,看看能不能實現

2. PID的演算法技術有哪些

按控制系統分有連續PID、數字PID。
按輸出量調整方式分有位置式PID、增量式PID。
按做積分的有效范圍分有普通PID、積分分離法。
按P、I、D參數的動態設置分有模糊PID、神經網路PID和其它的只能演算法調整出來的PID。

3. s函數-神經網路PID

我畢設是這個研究好幾天了
終於有點頭緒.雖然你是3年前發的我忍不住跟你分享一下.
估計還會有人需要。我找了整整幾天在網上找不到任何有用的資料
等過幾天答辯完了有新的理解會回來補充,就當造福後人了。

switch flag,
case 0
[sys,x0,str,ts]=mdlInitializeSizes(nh);
case 3
sys=mdlOutputs(t,x,u,nh,xite,alfa,KF1,KF2,wi,wo);
case { 1,2, 4, 9 }
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end

flag是標志位.不同的flag取值代表函數進行不同的運算,這里flag=0進行初始化運算,=3進行sys輸出運算,其他的不運算。

function [sys,x0,str,ts] = mdlInitializeSizes(nh)
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 4+7*nh; % dynamically sized?
sizes.NumInputs = 14*nh+7; % dynamically sized?
sizes.DirFeedthrough = 1; % has direct feedthrough
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
str = [];
x0 = [];
ts = [-1 0];
這些是必要的參數設置,分別是連續參數為0,離散參數為0,輸出個數4+7*nh,輸入個數14*nh+7(不知道4和7是哪來的?分別是輸入參數和返回參數的數量),直接饋入(我也不知道是什麼)為1,取樣次數為1.設置完賦給sys輸出。
str是沒用的東西,x0是初始狀態為空矩陣,這里你打錯字了是ts=[T0],ts是一個1X2的向量,ts(1)是采樣周期,ts(2)是偏移量。

wi_2=wi+reshape(u(8:7+4*nh),nh,4);
wo_2=wo+reshape(u(8+4*nh:7+7*nh),3,nh);
wi_1=wi+reshape(u(8+7*nh:7+11*nh),nh,4);
wo_1=wo+reshape(u(8+11*nh:7+14*nh),3,nh);
這個是學習網路的建立過程,具體我也不懂。

xx=[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];
這句是增量式PID控制演算法,應該是你說的PID部分,我也不太懂。
程序部分我就知道這些。

還有我好久才查到的,nh代表神經元個數,xite是學習速率,alfa慣性系數。

希望對再來看的人有幫助。

4. 簡述神經網路PID控制與經典PID控制的區別

摘要 模糊控制在零點有盲點可以用PID控制彌補,PID控制需要精確的建模然後參數一般用湊試發,模糊控制比較自由不需要進行精確建模,兩者結合比較好,神經網路一般缺少大量的數據不好實現。

5. 有沒有應用到飛控上的成熟一點的神經網路PID控制演算法

您好,非常感謝您發出這個帖子。我現在也在考慮做或者學習相關四軸飛行器的神經網路控制演算法。之前我的飛機是用雙閉環PID控制演算法實現控制飛行的。最近在學習神經網路,我准備用神經網路控制演算法來對四軸飛行器姿態誤差進行修正,看看能不能實現穩定飛行,或者看是否穩定飛行效果會好點。現在我正處在學習神經網路過程中,之前的基礎就是對四軸飛行器的PID控制演算法了解的多一點,自己實現了PID演算法的編程,飛機可以穩定飛行,我想以後將神經網路控制應用於四軸飛行器中。您出了這個帖子,盡管現在沒有人回答,但是我希望您能夠更新一下,畢竟經過了這么長時間了,談談您的收獲吧。讓我們學習學習,也可以一起討論討論。謝謝!

6. 什麼是bp神經網路pid控制

參考一下劉金琨的《先進PID控制》這本書。
例子:被控對象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)
其中a(k)=1.2(1-0.8e^(-0.1k))
輸入信號:rin(k)=1.0和rin(k)=sin(2t)

%BP based PID Control
clear all;
close all;

xite=0.25;//學習速率
alfa=0.05;//慣性系數

S=1; %Signal type

IN=4;H=5;Out=3; %NN Structure
if S==1 %Step Signal
wi=[-0.6394 -0.2696 -0.3756 -0.7023;
-0.8603 -0.2013 -0.5024 -0.2596;
-1.0749 0.5543 -1.6820 -0.5437;
-0.3625 -0.0724 -0.6463 -0.2859;
0.1425 0.0279 -0.5406 -0.7660];
%wi=0.50*rands(H,IN);
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[0.7576 0.2616 0.5820 -0.1416 -0.1325;
-0.1146 0.2949 0.8352 0.2205 0.4508;
0.7201 0.4566 0.7672 0.4962 0.3632];
%wo=0.50*rands(Out,H);
wo_1=wo;wo_2=wo;wo_3=wo;
end

if S==2 %Sine Signal
wi=[-0.2846 0.2193 -0.5097 -1.0668;
-0.7484 -0.1210 -0.4708 0.0988;
-0.7176 0.8297 -1.6000 0.2049;
-0.0858 0.1925 -0.6346 0.0347;
0.4358 0.2369 -0.4564 -0.1324];
%wi=0.50*rands(H,IN);
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[1.0438 0.5478 0.8682 0.1446 0.1537;
0.1716 0.5811 1.1214 0.5067 0.7370;
1.0063 0.7428 1.0534 0.7824 0.6494];
%wo=0.50*rands(Out,H);
wo_1=wo;wo_2=wo;wo_3=wo;
end

x=[0,0,0];
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;

Oh=zeros(H,1); %Output from NN middle layer
I=Oh; %Input to NN middle layer
error_2=0;
error_1=0;

ts=0.001;
for k=1:1:6000
time(k)=k*ts;

if S==1
rin(k)=1.0;
elseif S==2
rin(k)=sin(1*2*pi*k*ts);
end

%Unlinear model
a(k)=1.2*(1-0.8*exp(-0.1*k));
yout(k)=a(k)*y_1/(1+y_1^2)+u_1;

error(k)=rin(k)-yout(k);

xi=[rin(k),yout(k),error(k),1];

x(1)=error(k)-error_1;
x(2)=error(k);
x(3)=error(k)-2*error_1+error_2;

epid=[x(1);x(2);x(3)];
I=xi*wi';
for j=1:1:H
Oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j))); %Middle Layer
end
K=wo*Oh; %Output Layer
for l=1:1:Out
K(l)=exp(K(l))/(exp(K(l))+exp(-K(l))); %Getting kp,ki,kd
end
kp(k)=K(1);ki(k)=K(2);kd(k)=K(3);
Kpid=[kp(k),ki(k),kd(k)];

(k)=Kpid*epid;
u(k)=u_1+(k);
if u(k)>=10 % Restricting the output of controller
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end

dyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001));

%Output layer
for j=1:1:Out
dK(j)=2/(exp(K(j))+exp(-K(j)))^2;
end
for l=1:1:Out
delta3(l)=error(k)*dyu(k)*epid(l)*dK(l);
end

for l=1:1:Out
for i=1:1:H
d_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2);
end
end
wo=wo_1+d_wo+alfa*(wo_1-wo_2);
%Hidden layer
for i=1:1:H
dO(i)=4/(exp(I(i))+exp(-I(i)))^2;
end
segma=delta3*wo;
for i=1:1:H
delta2(i)=dO(i)*segma(i);
end

d_wi=xite*delta2'*xi;
wi=wi_1+d_wi+alfa*(wi_1-wi_2);

%Parameters Update
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);

wo_3=wo_2;
wo_2=wo_1;
wo_1=wo;

wi_3=wi_2;
wi_2=wi_1;
wi_1=wi;

error_2=error_1;
error_1=error(k);
end
figure(1);
plot(time,rin,'r',time,yout,'b');
xlabel('time(s)');ylabel('rin,yout');
figure(2);
plot(time,error,'r');
xlabel('time(s)');ylabel('error');
figure(3);
plot(time,u,'r');
xlabel('time(s)');ylabel('u');
figure(4);
subplot(311);
plot(time,kp,'r');
xlabel('time(s)');ylabel('kp');
subplot(312);
plot(time,ki,'g');
xlabel('time(s)');ylabel('ki');
subplot(313);
plot(time,kd,'b');
xlabel('time(s)');ylabel('kd');

7. 利用神經網路pid控制系統需要建立系統數學模型嗎

人工神經網路應用系統。在網路模型與演算法研究的基礎上,利用人工神經網路組成實際的應用系統,例如,完成某種信號處理或模式識別的功能、構作專家系統、製成機器人等等。BP(BackPropagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hiddenlayer)和輸出層(outputlayer)。BP神經網路和PID控制器的代碼見附件。

8. 神經網路自整定PID真的有效嗎我看圖書館的參考書上和知網論文上的方法,感覺推導過程都不對啊

樓主的這個問題已經是六年前的問題了(今天2021年5月),不知道樓主現在還關注這個話題不?神經網路自整定PID肯定是有效的。目前,神經網路自整定PID主要面臨三個問題:一是初值選擇的問題,不合理的初值很容易使閉環系統不穩定;二是神經網路自整定PID自身需要人為設定的參數較多,PID控制自身只需要三個人為設定參數,神經網路自整定PID則需要四個(三個初值和一個學習因子),這使得神經網路自整定PID比傳統PID演算法還要麻煩;三是缺乏完整的理論穩定性證明,神經網路自整定PID在線更新規則早已穩定,並且被廣泛引用和應用,而基於神經網路自整定PID的閉環系統穩定性證明一直沒有得到很好的解決,某種程度上,這限制了神經網路自整定PID的推廣。
我個人也做了一些這樣的研究,感興趣的話可以參考我的一篇期刊論文。
Data-Driven Tracking Control Based on LM and PID Neural Network with Relay Feedback for Discrete Nonlinear Systems

閱讀全文

與神經網路pid控制演算法相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:766
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:841
安卓怎麼下載60秒生存 瀏覽:800
外向式文件夾 瀏覽:233
dospdf 瀏覽:428
怎麼修改騰訊雲伺服器ip 瀏覽:385
pdftoeps 瀏覽:490
為什麼鴻蒙那麼像安卓 瀏覽:733
安卓手機怎麼拍自媒體視頻 瀏覽:183
單片機各個中斷的初始化 瀏覽:721
python怎麼集合元素 瀏覽:478
python逐條解讀 瀏覽:830
基於單片機的濕度控制 瀏覽:496
ios如何使用安卓的帳號 瀏覽:880
程序員公園采訪 瀏覽:809
程序員實戰教程要多長時間 瀏覽:972
企業數據加密技巧 瀏覽:132
租雲伺服器開發 瀏覽:811
程序員告白媽媽不同意 瀏覽:333
攻城掠地怎麼查看伺服器 瀏覽:600