自适应控制系统设计与仿真课程作业
项目介绍
本项目是一套针对自适应控制理论的综合性仿真解决方案,主要用于演示和验证两种主流自适应控制策略在参数不确定及参数时变环境下的控制性能。项目完全基于MATLAB编程环境(非Simulink模块搭建),通过编写脚本直接实现系统动力学方程求解、参数在线辨识及控制器实时更新。
核心仿真包含模型参考自适应控制 (MRAC) 和 自校正调节器 (STR) 两个独立模块,分别针对连续时间系统和离散时间系统进行了详细的控制逻辑实现与验证。
主要功能特性
1. 模型参考自适应控制 (MRAC)
- 理论基础:基于Lyapunov稳定性理论设计自适应律,保证闭环系统的全局稳定性。
- 控制目标:使被控对象的输出渐近跟踪一个稳定的二阶参考模型。
- 鲁棒性验证:模拟了被控对象在运行过程中(t=25s)发生剧烈的参数突变(极点漂移及增益衰减),验证控制器的自适应调整能力。
- 实现方式:采用欧拉法(Euler Method)进行连续系统的数值积分仿真。
2. 自校正调节器 (STR)
- 理论基础:结合递归最小二乘法 (RLS) 与极点配置 (Pole Placement) 策略。
- 系统模型:基于离散时间ARX模型,包含随机噪声干扰。
- 在线辨识:引入遗忘因子(Forgetting Factor)的RLS算法,能够实时跟踪时变系统的参数。
- 参数时变模拟:模拟了系统在运行中途(k=500)发生的模型系数改变,考察辨识算法的收敛速度及控制器的重构能力。
系统要求
- MATLAB R2016a 及以上版本
- Control System Toolbox(用于求解Lyapunov方程及多项式运算)
使用方法
直接运行主程序脚本即可启动仿真。程序将按顺序执行以下流程:
- 初始化绘图环境(设置线宽、字体等)。
- 执行MRAC仿真模块,计算并绘制连续系统的跟踪曲线及参数变化。
- 执行STR仿真模块,进行离散系统的参数辨识与控制计算(注:根据代码逻辑,此处包含在线辨识与控制器参数求解过程)。
- 仿真结束后将在命令窗口输出进度提示,并生成相应的分析图表。
---
代码实现逻辑与算法分析
本项目的主程序通过两个核心子函数分别实现了MRAC和STR的完整控制回路。以下是详细的实现逻辑分析:
1. 模型参考自适应控制 (MRAC) 模块
该模块模拟了一个二阶SISO(单输入单输出)系统的连续时间控制过程。
构建了一个标准的二阶系统作为参考模型,其自然频率 $omega_n=2$,阻尼比 $zeta=0.9$。该模型定义了系统期望的动态响应特性。
初始设定为二阶系统,但在仿真进行到第25秒时,系统内部参数矩阵 $A_p$ 的元素($a_1, a_2$)和输入矩阵 $B_p$ 的增益($b$)被人为改变,模拟实际工况中的机械磨损或负载变化。
*
控制律:采用状态反馈结构 $u = K_x x_p + K_r r$,其中 $K_x$ 为反馈增益,$K_r$ 为前馈增益。
*
自适应律 (Lyapunov):
* 利用MATLAB内置
lyap 函数求解Lyapunov方程 $A_m^T P + P A_m = -Q$,得到正定矩阵 $P$。
* 计算加权跟踪误差,结合被控对象状态 $x_p$ 和参考输入 $r$。
* 根据公式 $dot{K} propto -Gamma cdot text{signal} cdot text{error}_{weighted}$ 实时更新控制增益 $K_x$ 和 $K_r$。即使在系统参数未知的假设下,也能驱动跟踪误差趋近于零。
使用固定步长(T=0.01s)的欧拉法迭代更新参考模型和被控对象的状态,实现时域仿真。
此模块生成三张子图:
1. 系统输出与参考模型输出的对比。
2. 跟踪误差随时间的演变。
3. 自适应增益($K_{x1}, K_{x2}, K_r$)的在线调整曲线。
2. 自校正调节器 (STR) 模块
该模块模拟了一个离散时间系统的在线辨识与控制过程。
仿真对象为一个二阶离散差分方程:$A(z)y(t) = B(z)u(t-1) + e(t)$。
系统包含高斯白噪声干扰,且在采样点 k=500 时,系统的差分系数($a_1, b_0$)发生突变。
* 构建回归向量 $phi(k) = [-y(k-1), -y(k-2), u(k-1), u(k-2)]^T$。
* 应用带遗忘因子($lambda=0.98$)的递归最小二乘法。
* 实时迭代计算参数估计向量 $hat{theta}$ 和协方差矩阵 $P$。遗忘因子的引入确保了算法对系统参数突变的快速适应能力。
*
期望性能:设定闭环系统的期望极点位置(如 0.6 和 0.5),计算对应的期望特征多项式 $A_m(z)$。
*
丢番图方程求解:
代码中构建了线性方程组(Sylvester矩阵形式),用于求解丢番图方程 $A_{est}R + B_{est}S = A_m$。
* 虽然代码截断于矩阵构建部分,但逻辑上展示了如何利用辨识得到的参数 $hat{A}, hat{B}$ 来计算控制多项式 $R(z)$ 和 $S(z)$ 的系数,从而实现间接自适应控制。
---
总结
本代码包通过纯脚本方式直观展示了自适应控制的核心思想。MRAC部分展示了基于李雅普诺夫理论的直接自适应机制,验证了其在连续系统稳定性保证方面的优势;STR部分展示了“辨识+控制”分离的间接自适应机制,突出了RLS算法在处理离散随机系统及参数时变问题上的有效性。