RBF神经网络逼近在线自适应控制(MATLAB实现之S函数模块分析)

上次用了参考模型的方法用RBF神经网络试了一下放到自适应控制模型上,其实跟踪效果还可以,放大了有点不舒服就是了,差了一点点,然后看了看书的第四章,知道采用梯度下降法调整神经网络权值,会容易陷入局部最优的情况,还不能保证闭环系统的稳定性,然后提出了用李雅普诺夫稳定判据分析的在线自适应神经网络控制可以解决。

李雅普诺夫稳定判据是在本科现代控制理论有提到,运用构造的函数已经正定矩阵做判决判断系统稳定性。

然后根据第四章公式推导,先是提出了一种在线自适应RBF控制器,具体源码在这里

有一个总体系统框图
RBF神经网络逼近在线自适应控制(MATLAB实现之S函数模块分析)_第1张图片在分析模型的时候先看到chap4_1ctrl模块,里面加入了一个.m文件,是一个S函数模块
RBF神经网络逼近在线自适应控制(MATLAB实现之S函数模块分析)_第2张图片
模块函数的输入上看有4个量,t是采样时间,x是状态变量,u是输入(是simulink模块的输入),flag是仿真过程中的状态标志

t:系统时间,在总模块的左下方可以设定
x:系统状态变量,这个状态向量是系统的状态向量,在函数中进行初始化和改变
u:模块输入,模块前向的输入向量参数,以上面的系统为例,这里输入的是二维向量
flag:这是我最不能理解的地方,前面都好说,都可以找到源头,flag是调用函数的标志,但是是由simulink调用后自动取值,不用管

还有一个点,S函数的flag取值问题,在matlab自带的系统函数sfuntmpl模块(用edit sfuntmpl.m命令查看)有解释,flag的取值只能取12349,所以在上面可以看到设定值意义。

具体RBF网络以及系统构造细节在上面附上的源码已经做好了注释。

你可能感兴趣的:(Matlab笔记)