ainatipen 发表于 2022-4-4 10:21

MPC中关于优化函数的解法总结(一)

关于文中所涉及的式16的疑问,后续我又进行了推导和简单证明,发现确实没问题是自己矩阵论的知识基础太差了……


经过推导,不太明确的地方是红线标注的两项似乎并不能直接合并同类项。通过判断这两项应该是互为转置的,如果按照式16中所给的可以合并,则意味着这两项均为对称矩阵,那么如何证明呢?


问题解决!

<hr/>约束是MPC和标准的线性二次(LQ)控制的区别所在。
针对线性二次型问题,代价函数通常如下设计:



式1线性二次型问题的目标函数(类似LQR控制)

初始状态可以通过测量获得,而状态轨迹的剩余序列则是由模型和控制输入序列u决定的。通过上式不难发现,MPC的代价函数显示地依赖于控制输入序列及初始状态。控制器的可调参数是矩阵Q和R。通常我们允许终态有不同的权重矩阵 https://www.zhihu.com/equation?tex=P_%7Bf%7D 。如果Q比R大,则系统会采用更小的控制动作驱动状态回到原点(目标点)。如何选择这两个矩阵的参数就是LQ控制在工业领域应用时面对的挑战之一。由于使用相同的目标函数,MPC面临相同的挑战。
    求解最优LQ控制问题即解决:



式2

使得代价函数最小的控制序列。在实际应用中通常 https://www.zhihu.com/equation?tex=Q%2CR%2CP_%7Bf%7D 都会假设为对角阵。在此,并不作如上假设,认为其均为实对称矩阵, https://www.zhihu.com/equation?tex=Q%2CP_%7Bf%7D 为半正定矩阵, https://www.zhihu.com/equation?tex=R 为正定矩阵。(为什么作出如上假设呢?)当如上假设成立时,最优控制问题的解唯一存在。
针对多级优化函数问题,其代价函数通常有如下的特殊结构:



式3,多级优化问题的代价函数

    同理求解多级优化问题即解决:



式4

我们可以观察到代价函数的特殊之处在于每一部分代价仅与一个变量对有关,且同一变量仅作用于相邻的代价子函数。所以求解可以分级进行:



式5



式6



式7



式8

这种解法是不是似曾相识——没错就是大热的动态规划(dynamic programming,DP)解法。我们按照与其出现次序相反的顺序求解符合要求的解变量,这种解法被称作反向动态规划(backward DP)。嵌套式的解法让人很自然地联想到了内外环控制。
那么是否可以使用动态规划的方法来求解线性二次最优化问题呢?答案是必然的。




式9

终态为:



式10

那么线性二次代价函数可以重写为:



式11

由于 https://www.zhihu.com/equation?tex=x%280%29 已知所以选用反向DP算法来求解问题。



式12

式中有如下关系存在:



式13

利用反向DP方法,首先要从最末状态(红框标记)着手开始计算。 https://www.zhihu.com/equation?tex=V_%7BN-1%7D%5E%7B0%7D%28x%28N-1%29%29 、 https://www.zhihu.com/equation?tex=u_%7BN-1%7D%5E%7B0%7D%28x%28N-1%29%29 、 https://www.zhihu.com/equation?tex=x_%7BN%7D%5E%7B0%7D%28x%28N-1%29%29 分别表示最优代价、最优决策\最优决策对(因为最优决策变量是由后两者同时决定的)。按照反向DP算法,当前时刻的状态由之前的最优变量显式影响。表现为下式:



式14

其中:



式15

之所以将最末时刻的代价函数写为上式形式,可以很明确的看出,使得当前时刻代价最小的 https://www.zhihu.com/equation?tex=u%28N-1%29 的取值是 https://www.zhihu.com/equation?tex=v ,此时代价函数的值仅与前一时刻的状态值相关。通过设计合适的矩阵可以保证代价函数最小值为。将上述结论进行总结,推广到所有的 https://www.zhihu.com/equation?tex=x 。



式16

这里有一个误区,在式15中我们在计算最末状态时可以通过设计合适的矩阵从而实现令代价函数到达最小值,但是在迭代的过程中通 不能保证每个状态下代价函数的最小值均为,而是 https://www.zhihu.com/equation?tex=%281+%2F+2%29%5Cleft%7Cx%28N-1%29%7C_%7BQ%7D%5E%7B2%7D%2Bd%5Cright. 。在式16中红框标注的部分,在我尝试推导时存在一些问题,涉及该式中一些元素的转置,这里似乎直接将两项进行了合并,但是我没有找到两项相等的证据。



式17

将式16中的其他式子带入可得式17。至此 https://www.zhihu.com/equation?tex=V_%7BN-1%7D%5E%7B0%7D%28%5Cmathcal%7Bx%7D%29 的最小值为仅与相关。利用该函数可以应用反向DP方法进行迭代,反向向前则下一个阶段的代价函数优化为:



式18

不难发现此时的子代价函数与式12结构相似,解法同理:



式19

从 https://www.zhihu.com/equation?tex=%5CPi%28N-1%29 到 https://www.zhihu.com/equation?tex=%5CPi%28N-2%29 的迭代就是我们熟知的反向黎卡提迭代过程,可以总结为下式:



式20

终止条件为 https://www.zhihu.com/equation?tex=%5CPi%28N%29+%3D+P_%7Bf%7D 。由于迭代是反向的,这里的终止条件其实相当于初始条件。剩余的变量的迭代公式同理可以由式16及式19总结得出:






通过迭代求解即可得到需要的控制输入序列。
本文其实是作者在阅读《Model Predictive Control-Theory and Design》的一些思考和记录,在此与大家分享,新人基础薄弱难免有谬误,欢迎各路大神批评指正!

XGundam05 发表于 2022-4-4 10:28

支持!催更下集!

fwalker 发表于 2022-4-4 10:36

还在缓慢的看[飙泪笑]
页: [1]
查看完整版本: MPC中关于优化函数的解法总结(一)