第二篇博文推了太久,时间都用来学数据结构和算法,控制专业最大的问题在于很多人只会使用Matlab/Simulink, 不懂数据结构和算法不会写代码,幸亏我认清形式比较早,希望学控制的同学们多写代码,什么时候能用C/C++写出各种数值优化算法的代码才好找工作啊,光懂理论无法C++实现都是扯淡。
言归正传,一般博士面试第二次面试都是考验一下候选人的学术能力。所以第二次面试教授主要是考验我对上个博客中提到的那篇论文的稳定性的理解和评估. 这篇博客主要结合面试来对模型预测控制的稳定性进行一次总结, 纯理论分析对于真实的自动驾驶MPC效果尚未可知。
我们以线性系统作为例子, 假设线性系统的方程为
x + = A x + B u y = C x + D u x^{+} = A x + Bu \\ y = Cx + Du x+=Ax+Buy=Cx+Du
输入量和状态量都存在线性约束
LQR控制一般是针对infinite horizon 的, 优化问题定义如下
J ∞ ( x ) = m i n x , u ∑ i = 0 ∞ x i T Q x i + u i T R u i s . t . x i + 1 = A x i + B u i x 0 = x J^{\infty}(x) = min_{x, u} \sum_{i = 0}^{\infty}x^{T}_{i}Qx_{i} + u_{i}^{T}Ru_{i} \\ s.t. x_{i+1} = Ax_{i} + Bu_{i} \\ x_{0} = x J∞(x)=minx,ui=0∑∞xiTQxi+uiTRuis.t.xi+1=Axi+Buix0=x
MPC优化问题一般定义如下:
J ∗ ( x ) = m i n x , u ∑ i = 0 N − 1 x i T Q x i + u i T R u i s . t . x i + 1 = A x i + B u i x 0 = x C x i + D u i ≤ b J^{*}(x) = min_{x, u} \sum_{i = 0}^{N-1}x^{T}_{i}Qx_{i} + u_{i}^{T}Ru_{i} \\ s.t. x_{i+1} = Ax_{i} + Bu_{i} \\ x_{0} = x \\ Cx_{i} + Du_{i} \leq b J∗(x)=minx,ui=0∑N−1xiTQxi+uiTRuis.t.xi+1=Axi+Buix0=xCxi+Dui≤b
假设 Q = Q T ≥ 0 Q=Q^{T} \geq 0 Q=QT≥0, R = R T ≥ 0 R=R^{T} \geq 0