1. 前言:
我们在对系统进行建模的时候,为了减少计算量,一般都将系统简化为线性的,系统如果有约束,也是将约束简化为线性的;
因此本篇博客只针对两种常见系统模型的 MPC 问题进行求解:
- 线性系统 + 无约束
- 线性系统 + 线性约束
a
a
a
a
2. 线性系统 + 无约束的 MPC 问题求解
目前已知:
- 目标(代价)函数:
- 矩阵 ,, 均为正定矩阵;
- 线性系统状态空间方程:
- 当前时间步 k = 0 时系统的初始状态量:
注:代价函数和状态空间方程中的状态量 x 已经是误差量了;
a
求解方法:
- 动态规划(针对无约束的问题,根本不需要使用到二次规划,直接使用动态规划即可求解)
a
进行求解:
a
a
a
a
3. 线性系统 + 线性约束的 MPC 问题求解
目前已知:
- 目标(代价)函数:
-
- 矩阵 ,, 均为正定矩阵;
- 线性系统状态空间方程:
- 当前时间步 k = 0 时的初始状态量:
- 系统的目标状态值:
- 线性约束条件:
- 线性等式约束:
- 线性不等式约束:
注:代价函数和状态空间方程中的 x 并不是误差量,才是误差量;
a
求解方法:
- 二次规划
- 解释:因为系统带了约束,所以动态规划方法已经不好使了,这种方法无法处理带有约束条件的问题,而二次规划方法可以用来处理带有约束条件的问题,所以需要我们将问题等价转换为二次规划的形式,再调用 OSQP 求解;
3.1 将问题转化为二次规划的形式
(1)目标:
(2)代价函数的转化过程:
(3)约束条件转化:
参考文章:LQR、MPC以及osqp库_osqp mpc-CSDN博客