1. 问题背景
首先来看如何定义一个最优化问题。
一个最优化问题不可或缺4个条件:
- 优化器,在系统中起到优化的作用。
- 数学模型。系统的数学模型一般可以用以下形式描述:
{ x ˙ 1 = f 1 ( t , x ⃗ , u ⃗ ) x ˙ 2 = f 2 ( t , x ⃗ , u ⃗ ) ⋮ x ˙ m = f n ( t , x ⃗ , u ⃗ ) \begin{cases} \dot x_1 = f_1 \left( t, \vec x, \vec u \right) \\ \dot x_2 = f_2 \left( t, \vec x, \vec u \right) \\ \vdots \\ \dot x_m = f_n \left( t, \vec x, \vec u \right) \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x˙1=f1(t,x,u)x˙2=f2(t,x,u)⋮x˙m=fn(t,x,u)此种形式称为柯西形式。 - 性能指标,一般记为
J
J
J,它表征了以何种方式来衡量优化的程度。
一般地,性能指标 J J J还可以具有以下3种形式:
3.1) 拉格朗日形式:
J = ∫ t 0 t k F ( t , x ⃗ , x ⃗ ˙ , u ⃗ ) d t → e x t r . , t ∈ [ t 0 , t k ] J = \int _{t_0} ^{t_k} F \left( t, \vec x, \dot {\vec x}, \vec u \right) dt \rightarrow extr., \quad t \in \left[ t_0, t_k \right] J=∫t0tkF(t,x,x˙,u)dt→extr.,t∈[t0,tk]其中 e r t r ertr ertr表示 J J J趋于极值; F F F为被积函数。
值得注意的是,整个积分部分 ∫ t 0 t k F d t \int _{t_0} ^{t_k} F dt ∫t0tkFdt被称为泛函数。
拉格朗日形式最常见,多体现在对快速性有要求的系统中。如,对时间有要求(一般要求时间最短)的任务中就有
J = ∫ t 0 t k 1 d t = t k − t 0 = Δ t → m i n J = \int _{t_0} ^{t_k} 1 dt = t_k - t_0 = \Delta t \rightarrow min J=∫t0tk1dt=tk−t0=Δt→min
3.2) 迈耶尔形式:
J = Φ ( x ⃗ ( t 0 ) , x ⃗ ( t k ) ) → e x t r . J = \Phi \left( \vec x \left( t_0 \right), \vec x \left( t_k \right) \right) \rightarrow extr. J=Φ(x(t0),x(tk))→extr.此种形式不是积分型的,因此称为端点型,仅取决于 x ( t 0 ) x(t_0) x(t0)与 x ( t k ) x(t_k) x(tk)两个边界值。
3.3) 波尔茨型:
J = ∫ t 0 t k F ( t , x ⃗ , x ⃗ ˙ , u ⃗ ) d t + Φ [ x ( t 0 ) , x ( t k ) ] → e x t r . J = \int _{t_0} ^{t_k} F \left( t, \vec x, \dot {\vec x}, \vec u \right) dt + \Phi \left[ x(t_0), x(t_k) \right] \rightarrow extr. J=∫t0tkF(t,x,x˙,u)dt+Φ[x(t0),x(tk)]→extr.这种形式是拉格朗日型和迈耶尔型的组合形式,既含有积分项,也含有端点项。 - 优化算法。这一部分即为重点部分,将在本次及后续笔记分享中逐一介绍。
2. 最简单问题
如上图所示,设
x
∘
(
t
)
x^{\circ}(t)
x∘(t)为最优轨迹,起点为
x
(
t
0
)
x(t_0)
x(t0),终点为
x
(
t
k
)
x(t_k)
x(tk)。任务目标是寻找一条最优路径,从
x
(
t
0
)
x(t_0)
x(t0)出发,到
x
(
t
k
)
x(t_k)
x(tk)截止(即穿过两点),并满足一定的其他要求或约束。
在寻找该最优路径的过程中,可能得到很多条连接起点和终点的轨迹,它们统称为曲线簇,具有以下形式:
x
(
t
)
=
x
∘
(
t
)
+
α
⋅
δ
x
(
t
)
(1)
x(t) = x^{\circ}(t) + \alpha \cdot \delta x(t) \tag{1}
x(t)=x∘(t)+α⋅δx(t)(1)其中
δ
x
(
t
)
\delta x(t)
δx(t)是该最优轨迹的变分。
(1)式可以这样理解:所得到的曲线簇是在最优轨迹
x
∘
(
t
)
x^{\circ}(t)
x∘(t)基础上,进行不同程度的偏离得到的,偏移量即为变分
δ
x
(
t
)
\delta x(t)
δx(t)。随着
α
\alpha
α取值不同,偏移量也不同,进而构成了一组曲线簇集合,而
x
∘
(
t
)
x^{\circ}(t)
x∘(t)正是其中最优的一条。
3. 欧拉公式
这里不加证明地引入欧拉公式:
F
x
−
d
d
t
F
x
˙
=
0
(2)
F_x - \frac{d}{dt} F_{\dot x} = 0 \tag{2}
Fx−dtdFx˙=0(2)其中
F
x
F_x
Fx为
F
F
F关于
x
x
x的导数,
F
x
˙
F_{\dot x}
Fx˙为
F
F
F关于
x
˙
\dot x
x˙的导数。
欧拉方程是
J
J
J的极值存在的必要但非充分条件。
4. 具体算法步骤
下面列出最简单问题的具体算法步骤。
- 列出条件,包含如下部分:
1-1) 时间区间 t ∈ [ t 0 , t k ] t \in \left[ t_0, t_k \right] t∈[t0,tk];
1-2) 边界条件 x ( t 0 ) , x ( t k ) x(t_0), x(t_k) x(t0),x(tk)共2个;
1-3) 拉格朗日判据:
J = ∫ t 0 t k F ( t , x , x ˙ ) d t → e x t r . J = \int _{t_0} ^{t_k} F \left( t, x, \dot x \right)dt \rightarrow extr. J=∫t0tkF(t,x,x˙)dt→extr.以上三点也是最简单问题不可或缺的3个条件,缺一不可。 - 算出偏导数,为欧拉方程做准备:
F x = ∂ F ∂ x F x ˙ = ∂ F ∂ x ˙ \begin{aligned} F_x &= \frac{\partial F}{\partial x} \\ F_{\dot x} &= \frac{\partial F}{\partial \dot x} \end{aligned} FxFx˙=∂x∂F=∂x˙∂F - 写出欧拉方程:
F x − d d t F x ˙ = 0 F_x - \frac{d}{dt} F_{\dot x} = 0 Fx−dtdFx˙=0 - 用两个边界条件解欧拉方程。它是二阶微分方程,有唯一解。
- 证明解的唯一性。
5. 例题
设性能指标为
J
=
∫
0
1
(
x
2
+
τ
2
x
˙
2
)
d
t
→
e
x
t
r
.
J = \int _0 ^1 \left( x^2 + \tau ^2 \dot x ^2 \right)dt \rightarrow extr.
J=∫01(x2+τ2x˙2)dt→extr.边界条件:
{
x
(
0
)
=
0
x
(
1
)
=
x
1
\begin{cases} x(0) = 0\\ x(1) = x_1 \end{cases}
{x(0)=0x(1)=x1时间区间:
t
∈
[
0
,
1
]
t \in \left[ 0, 1 \right]
t∈[0,1]要求找出最优的
x
∘
(
t
)
x^{\circ} (t)
x∘(t)。
解:
- F ( t , x , x ˙ ) = x 2 + τ 2 x ˙ 2 F \left( t, x, \dot x \right) = x^2 + \tau ^2 \dot x ^2 F(t,x,x˙)=x2+τ2x˙2。
- 计算欧拉方程:
F x = ∂ F ∂ x = 2 x F x ˙ = ∂ F ∂ x ˙ = 2 τ 2 x ˙ \begin{aligned} F_x &= \frac{\partial F}{\partial x} = 2x \\ F_{\dot x} &= \frac{\partial F}{\partial \dot x} = 2 \tau ^2 \dot x \end{aligned} FxFx˙=∂x∂F=2x=∂x˙∂F=2τ2x˙代入欧拉方程
F x − d d t F x ˙ = 0 ⟹ 2 x − 2 τ 2 x ¨ = 0 F_x - \frac{d}{dt} F_{\dot x} = 0 \Longrightarrow 2x - 2 \tau ^2 \ddot x = 0 Fx−dtdFx˙=0⟹2x−2τ2x¨=0解得
x ( t ) = C 1 e 1 τ t + C 2 e − 1 τ t (1) x(t) = C_1 e^{ \frac{1}{\tau} t } + C_2 e ^{- \frac{1}{\tau} t } \tag{1} x(t)=C1eτ1t+C2e−τ1t(1)由于 C C C取值不定,因此(1)式即为一组曲线簇。
为了确定 C C C,需要代入边界条件:
x ( 0 ) = 0 , x ( 1 ) = x 1 x(0) = 0, \quad x(1) = x_1 x(0)=0,x(1)=x1解出
{ C 1 = x 1 e 1 τ − e − 1 τ C 2 = − x 1 e 1 τ − e − 1 τ \begin{cases} C_1 &= \frac{x_1}{e^{\frac{1}{\tau} - e^{- \frac{1}{\tau}}}} \\ C_2 &= - \frac{x_1}{e^{\frac{1}{\tau} - e^{- \frac{1}{\tau}}}} \end{cases} ⎩⎨⎧C1C2=eτ1−e−τ1x1=−eτ1−e−τ1x1那么就可以得到最优解
x ∘ ( t ) = x 1 e 1 τ − e − 1 τ e 1 τ t − x 1 e 1 τ − e − 1 τ e − 1 τ t x^{\circ} (t) = \frac{x_1}{e^{\frac{1}{\tau} - e^{- \frac{1}{\tau}}}} e^{ \frac{1}{\tau} t } - \frac{x_1}{e^{\frac{1}{\tau} - e^{- \frac{1}{\tau}}}} e ^{- \frac{1}{\tau} t } x∘(t)=eτ1−e−τ1x1eτ1t−eτ1−e−τ1x1e−τ1t
之前提到过,欧拉方程仅仅是必要条件,只能保证已经达到极值,但并不能指出是最大值还是最小值。因此,这里附加一个条件进行判别,称为拉格朗日条件:
若 F x ˙ x ˙ = ∂ 2 F ∂ x ˙ 2 < 0 F _{\dot x \dot x} = \frac{\partial ^2 F}{\partial \dot x ^2 } < 0 Fx˙x˙=∂x˙2∂2F<0,则 J → m a x J \rightarrow max J→max;
若 F x ˙ x ˙ = ∂ 2 F ∂ x ˙ 2 > 0 F _{\dot x \dot x} = \frac{\partial ^2 F}{\partial \dot x ^2 } > 0 Fx˙x˙=∂x˙2∂2F>0,则 J → m i n J \rightarrow min J→min;
若 F x ˙ x ˙ = 0 F _{\dot x \dot x} = 0 Fx˙x˙=0,那么要么是欧拉方程解错了,要么是存在断点/不连续点。
6. 最简单问题的几种情形
-
F
(
x
,
t
)
F (x, t)
F(x,t),即
F
F
F中不含有
x
˙
\dot x
x˙。此时欧拉方程变为
F x = 0 F_x = 0 Fx=0 -
F
(
x
˙
,
t
)
F \left( \dot x, t \right)
F(x˙,t),即
F
F
F中不含
x
x
x。此时欧拉方程变为
d d t F x ˙ = 0 \frac{d}{dt} F_{\dot x} = 0 dtdFx˙=0即
F x ˙ = c o n s t . F_{\dot x} = const. Fx˙=const. -
F
(
x
,
x
˙
)
F \left( x, \dot x \right)
F(x,x˙)中不含
t
t
t。此时欧拉方程变为
F − x ˙ F x ˙ = c o n s t . F - \dot x F _{\dot x} = const. F−x˙Fx˙=const.