如何给出常规PID与模糊PIDBP神经网络PID遗传算法PID程序的MATLAB仿真程序

如何给出常规PID与模糊PIDBP神经网络PID遗传算法PID程序的MATLAB仿真程序,第1张

我的毕设只用把PID和模糊PID相比较

常规PID,用Matlab里的Simulink模块仿真,建立你要做的动力学模型的传函或者状态空间。PID参数调节可用临界比度法。

模糊PID就麻烦了,打开Matlab中FIS模块,一般都用二阶模糊?输入E,EC的隶属函数,一般为高斯,和输出模糊Kp,Ki,Kd,一般为三角。还要整定模糊规则,再加载到Simulink里。调节模糊因子Gu,Ge,Gec,设置模糊PID的参数。

总之,你这个问题在白度知道里很难说清楚。

这厮是一个极品,先开口骂人,在下没有示弱,全力反击,并将其拉黑。

后来者一定要注意,这厮不是好鸟,一定要多加提防与小心

谨上传图片,有图有真相!

这厮的口口是4;。【4。【;8,;4、【;8;【、5、;【7;3【;1

谨防,小心!!!!

我毕设是这个研究好几天了

终于有点头绪.虽然你是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惯性系数。

希望对再来看的人有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/11497893.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存