二次规划 (QP) 问题建模
一、约束 MPC 问题描述
1.1 系统模型
离散时间 LTI 系统:
1.2 约束条件
状态约束和输入约束:
1.3 优化目标
最小化有限时域代价函数:
二、预测模型的矩阵形式
2.1 状态预测 trajectory
利用 03-状态预测轨迹的递推表达 的结果:
其中:
2.2 预测矩阵
三、代价函数的二次型形式
3.1 代入预测方程
将 代入代价函数:
其中 ,。
3.2 展开整理
3.3 忽略常数项
对于优化问题, 是给定的,因此第一项 是常数,可以忽略。
等价代价函数:
其中:
四、约束的矩阵形式
4.1 状态约束
代入预测方程:
4.2 输入约束
4.3 合并约束
定义:
约束条件写为:
五、标准 QP 形式
5.1 最终形式
约束 MPC 问题转化为标准二次规划:
5.2 矩阵性质
| 矩阵 | 性质 | 说明 |
|---|---|---|
| 对称正定 () | 因为 ,保证问题凸性 | |
| 依赖于 | 每个时刻需要更新 | |
| 常数矩阵 | 可离线计算 | |
| 依赖于 | 每个时刻需要更新 |
5.3 凸性保证
由于 且 :
因此 QP 问题是严格凸的,存在唯一最优解。
六、QP 求解器
6.1 常用算法
| 算法 | 适用场景 | 特点 |
|---|---|---|
| 有效集法 (Active Set) | 小型问题,热启动 | 精确,迭代少 |
| 内点法 (Interior Point) | 中大型问题 | 多项式时间收敛 |
| 对偶法 | 特殊结构 | 利用对偶性 |
| ADMM | 分布式/嵌入式 | 简单,适合并行 |
6.2 软件工具
| 工具 | 语言 | 特点 |
|---|---|---|
| quadprog | MATLAB | 标准求解器 |
| OSQP | C/C++/Python | 开源,嵌入式友好 |
| Gurobi | 多语言 | 商业,高性能 |
| CPLEX | 多语言 | 商业,大规模优化 |
| qpOASES | C++ | 在线 MPC 专用 |
6.3 计算复杂度
| 算法 | 复杂度 |
|---|---|
| 有效集法 | 最坏情况 |
| 内点法 | 平均 |
| ADMM | 每步迭代 |
其中 是优化变量维度。
七、示例:二维系统 QP 建模
7.1 系统参数
7.2 约束
7.3 QP 规模
- 优化变量:
- 状态约束: 个不等式
- 输入约束: 个不等式
- 总约束数:64 个
八、总结
| 步骤 | 结果 |
|---|---|
| 状态预测 | |
| 代价函数 | |
| 约束 | |
| QP 求解 | 标准凸优化问题,唯一最优解 |
相关内容
- 状态预测见 03-状态预测轨迹的递推表达
- 可行域特性见 02-硬约束与可行域几何特性
更新记录
| 日期 | 内容 |
|---|---|
| 2026-04-10 | 初始版本 |