多变量系统PID神经网络解耦控制仿真
项目介绍
本项目旨在解决多变量、强耦合系统的控制难题。针对一个具有2输入2输出(MIMO)特征的被控对象,设计并实现了一种基于PID神经网络(PIDNN)的闭环解耦控制系统。
传统的PID控制在处理多变量耦合系统时往往难以整定参数,而本项目构建的PID神经网络结合了传统PID控制规律与神经网络的自学习能力。网络隐含层单元对应比例(P)、积分(I)、微分(D)三种运算规则,通过反向传播(BP)算法在线动态调整网络权值,从而在无须精确数学模型的前提下,实现对耦合系统的自适应解耦控制。
功能特性
- 多变量耦合系统建模:仿真了一个2输入2输出的离散时间系统,模拟了通道间的强耦合效应。
- PID神经网络控制器:实现了特定结构的神经网络,其隐含层神经元分别具备比例、积分和微分的动态特性。
- 在线自适应学习:利用梯度下降法(BP算法)结合动量因子,实时调整输入层到隐含层、隐含层到输出层的权值。
- 解耦控制验证:通过在不同时间点施加阶跃信号(Setpoints),验证控制器在某一通道发生变化时对另一通道的干扰抑制能力。
- 抗干扰与鲁棒性:在被控对象模型中引入了随机噪声,验证控制算法在非理想环境下的鲁棒性。
系统要求与使用方法
系统要求
- MATLAB R2016a 或更高版本。
- 无需额外的工具箱(Toolbox),程序基于基础MATLAB函数编写。
使用方法
- 确保MATLAB当前工作目录为脚本所在目录。
- 直接运行主函数。
- 程序将自动执行仿真计算,并在仿真结束后弹出波形图窗口展示结果。
- 控制台会输出仿真进度提示(如“开始仿真...”、“仿真结束,正在绘图...”)。
代码实现逻辑与算法详解
本项目核心代码逻辑完全包含在主入口函数及其子函数中,具体实现细节如下:
1. 系统参数初始化
程序首先定义了仿真环境的基本参数:
- 采样设置:采样周期设定为0.001秒,总仿真步数为3000步。
- 网络超参数:设定了学习率(xite = 0.25)和动量因子(alpha = 0.05),用于控制权值更新的速度和稳定性。
- 状态初始化:预分配了用于存储历史数据的数组(输出y、期望r、控制量u、误差error),以优化运行效率。
2. 被控对象建模(System Model)
代码通过差分方程构建了一个二阶MIMO系统模型。该模型明确定义了两个输出通道之间的耦合关系:
- 输出 $y1$ 不仅取决于自身的历史值和输入 $u1$,还受到 $y2$ 和 $u2$ 的显著影响。
- 输出 $y2$ 同理受到 $y1$ 和 $u1$ 的耦合影响。
- 为了模拟真实物理环境,模型计算结果中叠加了微幅的随机噪声。
3. PID神经网络结构(PIDNN Architecture)
与常规的多层感知机不同,本项目的神经网络结构具有明确的物理意义,分为三层:
- 输入层:接收两个输入信号,分别为期望值(r)和实际输出值(y)。
- 隐含层:核心层,包含三个特定功能的神经元:
*
P神经元:通过Tanh激活函数响应当前偏差,对应比例控制。
*
I神经元:具备记忆功能,通过累加历史激活值实现积分作用,并设有积分限幅防止饱和(Windup)。
*
D神经元:通过计算当前激活值与上一时刻激活值的差分,实现微分作用。
- 输出层:将隐含层三个神经元的输出进行线性加权求和,得到最终的控制量 $u$。
4. 闭环控制主流程
仿真循环(1至3000步)执行以下核心操作:
* 通道1在第500步时阶跃至1.0。
* 通道2在第1500步时阶跃至0.8。这种错开的时间设置是为了观察当一个通道变化时,另一个通道是否能保持稳定(即解耦性能)。
- 前向传播(Forward Propagation):
* 计算系统误差 $e = r - y$。
* 分别调用两个独立的PIDNN控制器计算控制量 $u1$ 和 $u2$。
* 对控制量施加物理限幅([-10, 10]),防止执行器饱和。
- 反向传播与权值更新(Back Propagation):
* 基于梯度下降法更新网络权值。
*
Jacobian信息估算:由于假设没有精确的数学模型,算法利用对象模型参数的符号(Sign函数)来近似Jacobian信息($dy/du$的方向),指导梯度下降的方向。
*
权值调整:依次更新隐含层到输出层的权值(相当于自适应调整Kp, Ki, Kd参数)以及输入层到隐含层的权值。
* 引入动量项(Momentum term)以抑制振荡并加速收敛。
5. 结果可视化
仿真结束后,程序调用绘图函数展示四个关键指标随时间变化的曲线:
- 系统响应:实际输出 $y$ 追踪期望值 $r$ 的轨迹。
- 控制输入:控制器输出 $u$ 的变化情况。
- 误差曲线:系统误差的收敛过程。
通过这些图表,用户可以直观地分析系统的上升时间、超调量、稳态误差以及通道间的解耦效果。