一个最优的控制策略是无论最初状态和最初的决策是什么,剩余的控制策略一定符合最优控制策略
需要考虑的问题
性能指标
假设一个系统中的状态量分别为 x1,…,xn,并且期望值 x1d,…,xnd ,可以得到性能指标,这里的状态量指的是一个状态在不同的时间下的具体表现
J=(x1−x1d)2+...+(xn−xnd)2
体现的是每个状态变量的代价,也就是代价函数,当 J→0 也就是说明状态与期望状态越接近,上式还可以写作另一种形式,令 en=xnd−xn
J=[e1...en]⎣⎢⎡e1...en⎦⎥⎤
由于对于不同的变量都有不同的权重系数,所以引入权重系数 s
J=[e1...en]⎣⎢⎡s1...sn⎦⎥⎤⎣⎢⎡e1...en⎦⎥⎤=ETSE
由于不同的变量的单位不同,所以要将不同的单位进行规范化,需要在设计权重时考虑到
物理硬约束
对于一个系统的来说,速度,位置都是一种约束,这是控制中需要考虑的
能耗
引入能耗之后,权重矩阵就变为
J=ETSE+UTRU
其中
U=⎣⎢⎡u1...un−1⎦⎥⎤
这就需要考虑能耗与性能之间的权重了,如果 S>>R 导致系统不考虑能耗,而 R>>S 则会导致系统为了节能会有很差的表现,甚至是不动
这里的能耗约束实际上属于是一种软约束
系统的能耗也一定在某一个范围内 u∈u∗
系统状态跟踪
在速度追踪时,由于系统的状态的目标值不再是一个单纯的点,而是一个函数关系
⎣⎢⎡x1d...xnd⎦⎥⎤→⎣⎢⎡p1(t)...pn(t)⎦⎥⎤
实现系统向着目标点跟踪,并且在代价函数中也会体现
J=∣∣xn−xnd∣∣2Sn+k=0∑n−1(∣∣xk−xkd∣∣2Qk+∣∣uk∣∣2R)
其中第一项为末端代价,第二项为过程代价
避障
这是与系统状态跟踪是相关联的,系统可以运行的区域为容许轨迹 p∗
在定义轨迹函数 p 时,需要保证 p∈p∗
最优化控制
代价函数也可以写作
J=k=m+1∑nhd(xn,k)+k=0∑mgd(xk,uk,k)
其中第一项表示最终目标量的权重,而第二项表示过程的权重,最后的目标就是找到一个合适的 uk 来使得系统状态向着目标值转换,并且使代价函数 J 最小
动态规划
实际上最优控制策略体现出一种动态规划
例子
一个无人机,从地面以最短时间上升到 10 m

h(0)=0h˙(0)=0⇓h(tf)=10h˙(tf)=0
由于需要时间最短,可以设计代价函数
J=tf
约束(只能向上/静止)
−3≤a≤20≤v≤3
列出系统状态方程
mh¨(t)=f(t)−mgf(t)=Fvm
可以将系统离散化为多个状态

从终点开始,逐个计算每个状态所需的最小 cost to go,也就是将要的花费,从而得到最佳的速度路径规划

可以使用暴力算法直接解算出所有状态的代价函数,但是所需要的计算资源是不可估量的,所以要使用一个更简单的方法——动态规划
一个简单的例子
对于一个一维系统
xk+1=xk+ukx0=1xd=0
设置代价函数
J=0.5∣∣xn−xnd∣∣2+0.5k=0∑n−1(∣∣xk−xkd∣∣2Qk+∣∣uk∣∣2R)⇓J=0.5x22+0.5(x12+u12+x02+u02)
可以提出两种策略
u0=−1 x1=x0+u0=0u1=0 x2=x1+u1=0⇓J=1
u0=−0.5 x1=x0+u0=0.5u1=−0.5 x2=x1+u1=0⇓J=0.875
在这里就通过计算 u∗[0],u∗[1] 使代价函数最小,使用逆向分级的思想
J1→2=0.5x22+0.5x12+u12=0.5(x1+u1)2+0.5x12+0.5u12∂u1∂J=x1+u1+u1=0⇓u1∗=−21x1⇓J1→2∗=43x12⇓J0→2=0.5x22+0.5(x12+u12+x02+u02)=J1→2+0.5(x02+u02)
根据贝尔曼最优理论:当 J0→2 最小,其中包含的 J1→2 一定是最小的
J0→2=J1→2+0.5(x02+u02)=43x12+21(x02+u02)=43(x0+u0)2+21(x02+u02)∂u0∂J=23(x0+u0)+u0=0⇓u0∗=−53x0
贝尔曼动态规划最优控制方程
JN−k→N∗(xN−k)=uN−kmin(JN−(k−1)→N∗(f(xN−k,uN−k))+g(xN−k,uN−k))