1.MPC和NMPC的对比分析
普通的MPC控制步骤包括:系统建模、模型线性化、模型离散化、模型预测、优化控制输入量、反馈校正等。从方法步骤角度分析,对模型进行线性化所产生的影响。首先是线性化后,系统就成了线性系统,系统简单,且若对损失函数用二范数进行损失评估,整个优化问题就成为了二次规划问题,问题求解简单。 但是线性化存在一个精度损失的问题,我们对线性化进行简单的分析,线性化其实是在某一个状态点对模型进行泰勒展开,截断到一次项,忽略二次以上项进行近似;这种近似在离展开点比较远的地方,与原系统会有一定的误差,误差大小取决于模型的复杂性。
图1.1
NMPC控制刚好与MPC控制互补,NMPC控制除了没有线性化,其他与MPC控制几乎一样。NMPC是用原模型进行预测从而优化输入,由于模型没有进行任何的简化,所以理论上预测精度会比MPC高,但是存在求解困难的问题,大多数NMPC控制的损失函数都是非凸函数。
有朋友可能会觉得,用MPC控制,预测步长短一点,这就可以完美解决上述精度问题和求解难度问题了。其实不然,有相关理论证明,对于模型预测控制,其收敛的必要条件是预测步长足够长。 图1.2(a)、(b)分别展示了模型预测控制在单位阶跃响应的控制,其中(a)是预测未来1个时间步的响应过程,(b)是预测未来8个时间步的响应过程。
图1.2(a) 图1.2(b)
2.仿真案例
2.1 模型
本文用的是车辆运动学模型进行仿真,模型如下:
2.2 模型预测控制损失函数
损失函数的构造为预测步内位置误差的平方累积,具体如下:
其中,n为预测步长;W>0,是权重系数,越大表示越注重未来的误差,越小表示越注重短期误差;xd和yd为期望轨迹坐标。
2.3 仿真结果
绿色为遗传算法求解出来的轨迹,红色为matlab fmincon函数求解出来的轨迹,浅紫色为参考轨迹。
想要代码的uu可以看评论区。