在实际工程系统中,MPC太复杂,难以做到realtime。因此都利用数据,MPC对比RL还有优势么?
更新于:2025-04-14 04:47:14

怕一些没碰过实际工程系统的朋友们误解,做一点信息上的补充。“MPC难以做到Realtime”这句话是错的,并不是因为前沿的MPC实现已经到处跑了,而是最学生、最实验室的方法都能做到实时:simulink中的时变线性含约束MPC,用PLC Coder生成的ST语言代码,200个步长的horizon,放到x86 based PLC里基本都是ms级别,这还附带了状态观测器。更不用说分多核,生成c code,或者自己写求解器等等操作了。

真的,在今天,工业应用中使用MPC真的是举手之劳,是相当省事而且没什么副作用的方法。比如原本的tune多环PD参数,对应MPC上修改一下cost就可以;有干扰,用点技巧构造一个“自适应状态”即可;原本的做延迟补偿,对应MPC上多挂一个一阶过程就可以;如果存在系统切换和参数在线辨识,做一个时变线性MPC即可;若考虑输入约束或不希望频繁换向,在线修改约束也可以做;最不济,把线性MPC当作在线多项式轨迹生成器也很好用。

本质上最优控制和RL并无差异,甚至和传统的反馈控制也没什么太大差异。RL可以说是最优控制的surrogate modeling版本,只不过有的对模型唯象拟合,有的对value唯象拟合,还有的对policy唯象拟合,也有的对value和policy同时拟合。

仅限电机运动控制/过程控制这种传统工控领域的话,RL是非常难用的。不是说surrogate modeling的方法论不好,而是大部分工业控制所面对的系统都是相当简单的。这些对象特点是在快时间尺度上,第一性模型一定比任何surrogate model要简单,因为物理模型就是我们发展的描述世界的最简“surrogate model”;而且结构极其确定,大部分参数都是可辨识的,诚然“任何真实系统都是非线性的”,但并不是所有非线性都有资格改变系统结构,任何忽略系统结构的方法都是偷懒。我们甚至可以下结论说这类系统用纯RL的上限一定没有传统方法高。

当然,我也能举出一堆拟合出来远比第一性模型简单,并且误差很小的研究对象,这就特别适合用RL。所以并不是抨击RL这个方法,而是批评用扳手卸螺丝。判断到底用什么工具,其实只要老老实实采样并拟合过你的研究对象,并且统计一下两种方法在一个loop中要算的浮点计算量,就清楚了。