最优控制 (1):最优控制中不同情形下泛函取到极值的必要条件
@[TOC](最优控制 (1):最优控制中不同情形下泛函取到极值的必要条件)
最优控制 (1):最优控制中不同情形下泛函取到极值的必要条件
引言
众所周知,强化学习在控制领域有一个别称,叫自适应动态规划 (Adaptive Dynamic Programming )或近似动态规划 (Approximate Dynamic Programming)。这个东西最开始的初衷 (不论是被刻意赋予的初衷,还是的的确确有这么一个初衷)是去解决最优控制的问题。
最优控制其实与泛函的联系十分紧密。如果说函数本身的求解比较复杂的话,只能说泛函的求解更复杂。很多函数本身是具备一些形式和性质的,只不过是求解过程太复杂。但是泛函本身就是一个“虚无缥缈”的东西,甚至连函数的形式都不知道,只知道零点的函数值为零,这让求解根本无从下手。
遗憾的是,很多最优控制问题就偏偏要求解这些泛函问题。目前已经有很多工具可以做到,极小值原理,动态规划,黎卡提方程工具包之类的 (我都没用过,只是听说过),但是有时候他的求解速度真的是感人。
所以,强化学习后来就被用来解最优控制中的泛函,举个例子:
已知系统模型 x˙=f(x)\\dot{x}=f(x)x˙=f(x),某一时刻的正定代价函数为 g=g(x,x˙,t)g=g(x,\\dot{x},t)g=g(x,x˙,t),求解一个控制器 u(t)u(t)u(t),使得
J=∫t0t1k1g(x,x˙,t)+k2u2dtJ=\\int_{t_0}^{t_1}{k_1g(x,\\dot{x},t)+k_2u^2}dtJ=∫t0t1k1g(x,x˙,t)+k2u2dt最小。
如果 fff 和 ggg 都比较简单,其实用笔也能算出来。但是如果 fff 和 ggg 都比较复杂,并且没有任何规律可循,那么不仅用笔没法算,而且用工具包也不好求解,这个时候强化学习就体现出作用了(虽然不一定好使)。
因此要了解强化学习控制,掌握必须的最优控制的基本理论和尝试也是必要的。
一般问题
将上式一般化,可以得到一般化的泛函形式的代价函数为
J(x)=∫t0t1g[x(t),x˙(t),t]dtJ(x)=\\int_{t_0}^{t_1}{g\\left[x(t),\\dot{x}(t),t\\right]}dtJ(x)=∫t0t1g[x(t),x˙(t),t]dt
简记为
J(x)=∫t0t1g(x,x˙)dtJ(x)=\\int_{t_0}^{t_1}{g(x,\\dot{x})}dtJ(x)=∫t0t1g(x,x˙)dt
最优控制的目标,就是解出 x(t)x(t)x(t),即当 xxx 的时域曲线应该是什么样的时候, J(x)J(x)J(x) 最小。下边分多钟情况讨论。
1. t0t_0t0 固定,t1t_1t1 固定,x0=x(t0)x_0=x(t_0)x0=x(t0) 固定,x1=x(t1)x_1=x(t_1)x1=x(t1) 固定
由于初始时间、终止之间、初始状态和终止状态都被固定,所以 JJJ 的不确定性只能被中间时刻的 xxx 影响,那么记 xxx 的变分为 δx\\delta xδx,进而所导致的 JJJ 的变分为 δJ\\delta JδJ。则有
δJ=J(x+δx,x˙+δx˙)−J(x)=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt\\begin{align} \\begin{aligned} \\delta J &= J(x+\\delta x, \\dot{x}+\\delta \\dot{x})-J(x)\\\\ &= \\int_{t_0}^{t_1}{g(x+\\delta x,\\dot{x}+\\delta \\dot{x})-g(x,\\dot{x})}dt \\end{aligned} \\end{align} δJ=J(x+δx,x˙+δx˙)−J(x)=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt
对 (1) 中第一项在 (x,x˙)(x,\\dot{x})(x,x˙) 处一次 Taylor 展开
g(x+δx,x˙+δx˙)=g(x,x˙)+∂g(x,x˙)∂xδx+∂g(x,x˙)∂x˙δx˙g(x+\\delta x,\\dot{x}+\\delta \\dot{x})=g(x,\\dot{x}) + \\frac{\\partial g(x,\\dot{x})}{\\partial x}\\delta x + \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta\\dot{x}g(x+δx,x˙+δx˙)=g(x,x˙)+∂x∂g(x,x˙)δx+∂x˙∂g(x,x˙)δx˙
代回 (1),有
δJ=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt=∫t0t1g(x,x˙)+∂g(x,x˙)∂xδx+∂g(x,x˙)∂x˙δx˙−g(x,x˙)dt=∫t0t1∂g(x,x˙)∂xδx+∂g(x,x˙)∂x˙δx˙dt\\begin{align} \\begin{aligned} \\delta J &= \\int_{t_0}^{t_1}{g(x+\\delta x,\\dot{x}+\\delta \\dot{x})-g(x,\\dot{x})}dt\\\\ &= \\int_{t_0}^{t_1}{g(x,\\dot{x}) + \\frac{\\partial g(x,\\dot{x})}{\\partial x}\\delta x + \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta\\dot{x}-g(x,\\dot{x})}dt\\\\ &=\\int_{t_0}^{t_1}{\\frac{\\partial g(x,\\dot{x})}{\\partial x}\\delta x + \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta\\dot{x}}dt\\\\ \\end{aligned} \\end{align} δJ=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt=∫t0t1g(x,x˙)+∂x∂g(x,x˙)δx+∂x˙∂g(x,x˙)δx˙−g(x,x˙)dt=∫t0t1∂x∂g(x,x˙)δx+∂x˙∂g(x,x˙)δx˙dt
对 (2) 中第二项分部积分,有
∫t0t1∂g(x,x˙)∂x˙δx˙dt=∂g(x,x˙)∂x˙δx∣t0t1−∫t0t1ddt∂g(x,x˙)∂x˙δxdt\\int_{t_0}^{t_1}{\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta\\dot{x}}dt=\\left.\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x\\right|_{t_0}^{t_1}-\\int_{t_0}^{t_1}{\\frac{d}{dt}\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x}dt∫t0t1∂x˙∂g(x,x˙)δx˙dt=∂x˙∂g(x,x˙)δxt0t1−∫t0t1dtd∂x˙∂g(x,x˙)δxdt
代回 (2),有
δJ=∫t0t1∂g(x,x˙)∂xδx+∂g(x,x˙)∂x˙δx˙dt=∂g(x,x˙)∂x˙δx∣t0t1+∫t0t1∂g(x,x˙)∂xδx−ddt∂g(x,x˙)∂x˙δxdt\\begin{align} \\begin{aligned} \\delta J &=\\int_{t_0}^{t_1}{\\frac{\\partial g(x,\\dot{x})}{\\partial x}\\delta x + \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta\\dot{x}}dt\\\\ &=\\left.\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x\\right|_{t_0}^{t_1}+ \\int_{t_0}^{t_1}{\\frac{\\partial g(x,\\dot{x})}{\\partial x}\\delta x -\\frac{d}{dt}\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x}dt\\\\ \\end{aligned} \\end{align} δJ=∫t0t1∂x∂g(x,x˙)δx+∂x˙∂g(x,x˙)δx˙dt=∂x˙∂g(x,x˙)δxt0t1+∫t0t1∂x∂g(x,x˙)δx−dtd∂x˙∂g(x,x˙)δxdt
由于 x(t0)x(t_0)x(t0) 和 x(t1)x(t_1)x(t1) 都固定,所以 δx(t0)=δx(t1)=0\\delta x(t_0)=\\delta x(t_1)=0δx(t0)=δx(t1)=0,进而有
δJ=∫t0t1[∂g(x,x˙)∂x−ddt∂g(x,x˙)∂x˙]δxdt\\begin{align} \\begin{aligned} \\delta J &=\\int_{t_0}^{t_1}{\\left[\\frac{\\partial g(x,\\dot{x})}{\\partial x} -\\frac{d}{dt}\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\right]\\delta x}dt\\\\ \\end{aligned} \\end{align} δJ=∫t0t1[∂x∂g(x,x˙)−dtd∂x˙∂g(x,x˙)]δxdt对于任意 xxx 均成立,所以,很自然地,有
∂g(x,x˙)∂x−ddt∂g(x,x˙)∂x˙=0\\begin{align} \\begin{aligned} \\frac{\\partial g(x,\\dot{x})}{\\partial x} -\\frac{d}{dt}\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}=0 \\end{aligned} \\end{align} ∂x∂g(x,x˙)−dtd∂x˙∂g(x,x˙)=0
这就是大名鼎鼎的欧拉方程,也叫欧拉-拉格朗日方程(这个结论得出是有定理保证的)。这个结论可以被用来解释为什么两点之间线段最短。
2. t0t_0t0 固定,x0=x(t0)x_0=x(t_0)x0=x(t0) 固定,t1t_1t1 自由,x1=x(t1)x_1=x(t_1)x1=x(t1) 自由
这种情况下由于末端时刻和末端状态都是可变的,因此 JJJ 的变分是由 δt1\\delta t_1δt1 和 δx\\delta xδx共同导致的。这里用一个图去表示
这里,蓝色的曲线表示最优的曲线,红色的曲线表示经过变分变化之后的曲线。与上一种情况类似,代价函数的变分为
δJ=J(x+δx,x˙+δx˙,t+δt)−J(x)=∫t0t1+δt1g(x+δx,x˙+δx˙)dt−∫t0t1g(x,x˙)dt=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt+∫t1t1+δt1g(x+δx,x˙+δx˙)dt\\begin{align} \\begin{aligned} \\delta J &= J(x+\\delta x, \\dot{x}+\\delta \\dot{x}, t+\\delta t)-J(x)\\\\ &= \\int_{t_0}^{t_1+\\delta t_1}{g(x+\\delta x,\\dot{x}+\\delta \\dot{x})dt-\\int_{t_0}^{t_1}g(x,\\dot{x})}dt\\\\ &= \\int_{t_0}^{t_1}{g(x+\\delta x,\\dot{x}+\\delta \\dot{x})-g(x,\\dot{x})}dt+\\int_{t_1}^{t_1+\\delta t_1}{g(x+\\delta x,\\dot{x}+\\delta \\dot{x})}dt \\end{aligned} \\end{align} δJ=J(x+δx,x˙+δx˙,t+δt)−J(x)=∫t0t1+δt1g(x+δx,x˙+δx˙)dt−∫t0t1g(x,x˙)dt=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt+∫t1t1+δt1g(x+δx,x˙+δx˙)dt
同样地,把 g(x+δx,x˙+δx˙)g(x+\\delta x,\\dot{x}+\\delta \\dot{x})g(x+δx,x˙+δx˙) 在 (x,x˙)(x,\\dot{x})(x,x˙) 处 Taylor 展开,代回 (6),(6) 中第一项有
δJ1=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt=∫t0t1∂g(x,x˙)∂xδx+∂g(x,x˙)∂x˙δx˙dt\\begin{align} \\begin{aligned} \\delta J_1 &= \\int_{t_0}^{t_1}{g(x+\\delta x,\\dot{x}+\\delta \\dot{x})-g(x,\\dot{x})}dt\\\\ &= \\int_{t_0}^{t_1}{\\frac{\\partial g(x,\\dot{x})}{\\partial x}\\delta x + \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta\\dot{x}}dt\\\\ \\end{aligned} \\end{align} δJ1=∫t0t1g(x+δx,x˙+δx˙)−g(x,x˙)dt=∫t0t1∂x∂g(x,x˙)δx+∂x˙∂g(x,x˙)δx˙dt
对 (6) 中第二项应用中值定理,有
δJ2=∫t1t1+δt1g(x+δx,x˙+δx˙)dt=g[x(t1+θδt1),x˙(t1+θδt1,),t1+θδt1]δt1\\begin{align} \\begin{aligned} \\delta J_2 &= \\int_{t_1}^{t_1+\\delta t_1}{g(x+\\delta x,\\dot{x}+\\delta \\dot{x})}dt\\\\ &= g\\left[x(t_1+\\theta\\delta t_1), \\dot{x}(t_1+\\theta\\delta t_1, ), t_1+\\theta\\delta t_1\\right]\\delta t_1 \\end{aligned} \\end{align} δJ2=∫t1t1+δt1g(x+δx,x˙+δx˙)dt=g[x(t1+θδt1),x˙(t1+θδt1,),t1+θδt1]δt1
其中 0<θ<10<\\theta<10<θ<1。考虑到标量函数 ggg 是连续函数,所以当 t1t_1t1 的变分 δt1→1\\delta t_1\\rightarrow1δt1→1 时,ggg 的变化量是趋近于 0 的。即
g[x(t1+θδt1),x˙(t1+θδt1,),t1+θδt1]δt1=g[x(t1),x˙(t1)]+ϵg\\left[x(t_1+\\theta\\delta t_1), \\dot{x}(t_1+\\theta\\delta t_1, ), t_1+\\theta\\delta t_1\\right]\\delta t_1=g\\left[x(t_1),\\dot{x}(t_1)\\right]+\\epsilong[x(t1+θδt1),x˙(t1+θδt1,),t1+θδt1]δt1=g[x(t1),x˙(t1)]+ϵ
所以有
δJ2=g[x(t1),x˙(t1)]δt1=g(x,x˙)δt1\\begin{align} \\begin{aligned} \\delta J_2 &= g\\left[x(t_1),\\dot{x}(t_1)\\right]\\delta t_1=g(x, \\dot{x})\\delta t_1 \\end{aligned} \\end{align} δJ2=g[x(t1),x˙(t1)]δt1=g(x,x˙)δt1
将 δJ1\\delta J_1δJ1 和 δJ2\\delta J_2δJ2 代回 (6),有
δJ=g(x,x˙)δt1+∫t0t1∂g(x,x˙)∂xδx+∂g(x,x˙)∂x˙δx˙dt\\begin{align} \\begin{aligned} \\delta J &=g(x, \\dot{x})\\delta t_1+\\int_{t_0}^{t_1}{\\frac{\\partial g(x,\\dot{x})}{\\partial x}\\delta x + \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta\\dot{x}}dt \\end{aligned} \\end{align} δJ=g(x,x˙)δt1+∫t0t1∂x∂g(x,x˙)δx+∂x˙∂g(x,x˙)δx˙dt
同理,对上式积分第二项应用分部积分,得到:
δJ=g(x,x˙)δt1+∂g(x,x˙)∂x˙δx∣t0t1+∫t0t1[∂g(x,x˙)∂x−ddt∂g(x,x˙)∂x˙]δx⋅dt=g(x,x˙)δt1+∂g(x,x˙)∂x˙δx(t1)+∫t0t1[∂g(x,x˙)∂x−ddt∂g(x,x˙)∂x˙]δx⋅dt\\begin{align} \\begin{aligned} \\delta J &=g(x, \\dot{x})\\delta t_1+\\left. \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x\\right|_{t_0}^{t_1}\\\\ &+\\int_{t_0}^{t_1}{\\left[\\frac{\\partial g(x,\\dot{x})}{\\partial x} -\\frac{d}{dt} \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\right]}\\delta x\\cdot dt\\\\ &=g(x, \\dot{x})\\delta t_1+ \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x(t_1)+\\int_{t_0}^{t_1}{\\left[\\frac{\\partial g(x,\\dot{x})}{\\partial x} -\\frac{d}{dt} \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\right]}\\delta x\\cdot dt\\\\ \\end{aligned} \\end{align} δJ=g(x,x˙)δt1+∂x˙∂g(x,x˙)δxt0t1+∫t0t1[∂x∂g(x,x˙)−dtd∂x˙∂g(x,x˙)]δx⋅dt=g(x,x˙)δt1+∂x˙∂g(x,x˙)δx(t1)+∫t0t1[∂x∂g(x,x˙)−dtd∂x˙∂g(x,x˙)]δx⋅dt
这个时候就用到上面的图了,通过上面的图可以发现,δt1\\delta t_1δt1 与 δx(t1)\\delta x(t_1)δx(t1) 是有关系的,这个关系是
δx(t1)=δx1−x˙⋅δt1\\delta x(t_1)=\\delta x_1 - \\dot{x}\\cdot\\delta t_1δx(t1)=δx1−x˙⋅δt1
代入 (11),进而有
δJ=∫t0t1[∂g(x,x˙)∂x−ddt∂g(x,x˙)∂x˙]δx⋅dt+∂g(x,x˙)∂x˙δx1+[g(x,x˙)−∂g(x,x˙)∂x˙x˙]δt1\\begin{align} \\begin{aligned} \\delta J &=\\int_{t_0}^{t_1}{\\left[\\frac{\\partial g(x,\\dot{x})}{\\partial x} -\\frac{d}{dt} \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\right]}\\delta x\\cdot dt\\\\ &+ \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x_1\\\\ &+\\left[g(x, \\dot{x})- \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\dot{x}\\right]\\delta t_1 \\end{aligned} \\end{align} δJ=∫t0t1[∂x∂g(x,x˙)−dtd∂x˙∂g(x,x˙)]δx⋅dt+∂x˙∂g(x,x˙)δx1+[g(x,x˙)−∂x˙∂g(x,x˙)x˙]δt1
当最优时, δJ\\delta JδJ恒为零,这就很有意思了,那就说明不管怎么样,里面每一项必须都得是零才行。因此,同样地,有欧拉方程存在
∂g(x,x˙)∂x−ddt∂g(x,x˙)∂x˙=0\\frac{\\partial g(x,\\dot{x})}{\\partial x} -\\frac{d}{dt} \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}=0∂x∂g(x,x˙)−dtd∂x˙∂g(x,x˙)=0
此外,还必须满足额外的条件
∂g(x,x˙)∂x˙δx1+[g(x,x˙)−∂g(x,x˙)∂x˙x˙]δt1=0\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\delta x_1+\\left[g(x, \\dot{x})- \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\dot{x}\\right]\\delta t_1=0∂x˙∂g(x,x˙)δx1+[g(x,x˙)−∂x˙∂g(x,x˙)x˙]δt1=0成立,这个条件被称为横截条件。
这里可以分两种情况讨论,当 x1x_1x1 不受 t1t_1t1 约束时,那么上式两部分就必须分别为零:
∂g(x,x˙)∂x˙∣x=x1=0,g(x1,x˙1)=0\\left.\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\right|_{x=x_1}=0,\\quad g(x_1, \\dot{x}_1)=0∂x˙∂g(x,x˙)x=x1=0,g(x1,x˙1)=0
若 曲线的末端 x1x_1x1 是受另外一条曲线 x1=γ(t1)=γ1x_1=\\gamma(t_1)=\\gamma_1x1=γ(t1)=γ1 约束时,再参考第二张图
可以看出,δx1=θ˙(t1)δt1\\delta x_1=\\dot{\\theta}(t_1)\\delta t_1δx1=θ˙(t1)δt1 (近似成立)。进而有横截条件:
g(x1,x˙1)+∂g(x,x˙)∂x˙(θ˙−x˙)∣t=t1=0g(x_1,\\dot{x}_1)+\\left.\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\left(\\dot{\\theta}-\\dot{x}\\right)\\right|_{t=t_1}=0g(x1,x˙1)+∂x˙∂g(x,x˙)(θ˙−x˙)t=t1=0成立。
3. t0t_0t0 固定,x0=x(t0)x_0=x(t_0)x0=x(t0) 固定,t1t_1t1 固定,x1=x(t1)x_1=x(t_1)x1=x(t1) 自由
与第二种情况类似,欧拉方程还是要成立的,除此之外,由于 t1t_1t1 已经被固定,所以一切有δt1\\delta t_1δt1产生的变化都消失了,而且只能是 x1x_1x1 自由。所以,式 (12)的第三行就消失了,那么横截条件就简化为
∂g(x,x˙)∂x˙∣x=x1=0\\left.\\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\right|_{x=x_1}=0∂x˙∂g(x,x˙)x=x1=0
4. t0t_0t0 固定,x0=x(t0)x_0=x(t_0)x0=x(t0) 固定,x1=x(t1)x_1=x(t_1)x1=x(t1) 固定,t1t_1t1 自由
与第二种情况类似,欧拉方程还是要成立的,除此之外,由于 x1x_1x1 已经被固定,所以一切有δx1\\delta x_1δx1产生的变化都消失了,而且只能是 t1t_1t1 自由。所以,式 (12)的第二行就消失了,那么横截条件就简化为
g(x,x˙)−∂g(x,x˙)∂x˙x˙∣x=x1=0\\left.g(x, \\dot{x})- \\frac{\\partial g(x,\\dot{x})}{\\partial \\dot{x}}\\dot{x}\\right|_{x=x_1}=0g(x,x˙)−∂x˙∂g(x,x˙)x˙x=x1=0
总结
直接贴图吧,表格太大了。
学习了这个工具之后,很多常见的小数学问题都有一个新视角去计算。比如两点之间为什么线段最短;找到某一定点到曲线方程的最短距离,等等。