导航:首页 > 源码编译 > 神经网络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控制算法相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:768
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:843
安卓怎么下载60秒生存 浏览:802
外向式文件夹 浏览:235
dospdf 浏览:430
怎么修改腾讯云服务器ip 浏览:387
pdftoeps 浏览:492
为什么鸿蒙那么像安卓 浏览:735
安卓手机怎么拍自媒体视频 浏览:185
单片机各个中断的初始化 浏览:723
python怎么集合元素 浏览:480
python逐条解读 浏览:832
基于单片机的湿度控制 浏览:498
ios如何使用安卓的帐号 浏览:882
程序员公园采访 浏览:811
程序员实战教程要多长时间 浏览:974
企业数据加密技巧 浏览:134
租云服务器开发 浏览:813
程序员告白妈妈不同意 浏览:335
攻城掠地怎么查看服务器 浏览:600