目录
拉格朗日问题是一类 对于极值有约束的优化问题,本文针对这类优化问题给出解题方法。
1. 计算条件
这里直接给出拉格朗日问题必需的条件:
- 数学模型
{ x ˙ 1 = f 1 ( t , x ⃗ , u ⃗ ) x ˙ 2 = f 2 ( t , x ⃗ , u ⃗ ) ⋮ x ˙ n = 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_n &= f_n \left( t, \vec x, \vec u \right) \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x˙1x˙2⋮x˙n=f1(t,x,u)=f2(t,x,u)=fn(t,x,u)值得注意的是,这里的 x ⃗ \vec x x和 u ⃗ \vec u u都是向量:
x ⃗ = [ x 1 x 2 ⋯ x n ] , u ⃗ = [ u 1 u 2 ⋯ u n ] \vec x = \left[ \begin{matrix} x_1 & x_2 & \cdots & x_n \end{matrix} \right], \quad \vec u = \left[ \begin{matrix} u_1 & u_2 & \cdots & u_n \end{matrix} \right] x=[x1x2⋯xn],u=[u1u2⋯un],且 x i , u i x_i, u_i xi,ui均为时间的函数。 - 给定时间区间
t ∈ [ t 0 , t k ] t \in \left[ t_0, t_k \right] t∈[t0,tk] - 边界条件
S t a r t = { x 1 ( t 0 ) = x 10 x 2 ( t 0 ) = x 20 ⋮ x n ( t 0 ) = x n 0 Start = \begin{cases} x_1 (t_0) &= x_{10} \\ x_2 (t_0) &= x_{20} \\ \vdots \\ x_n (t_0) &= x_{n0} \end{cases} Start=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x1(t0)x2(t0)⋮xn(t0)=x10=x20=xn0 E n d = { x 1 ( t k ) = x 1 k x 2 ( t k ) = x 2 k ⋮ x n ( t k ) = x n k End = \begin{cases} x_1 (t_k) &= x_{1k} \\ x_2 (t_k) &= x_{2k} \\ \vdots \\ x_n (t_k) &= x_{nk} \end{cases} End=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x1(tk)x2(tk)⋮xn(tk)=x1k=x2k=xnk应注意,左边界和右边界各自有 n n n个边界条件,故一共 2 n 2n 2n个边界条件。 - 性能指标
J = ∫ t 0 t k F ( t , x ⃗ , x ⃗ ˙ , u ⃗ ) d t → e x t r . J = \int _{t_0} ^{t_k} F \left( t, \vec x, \dot {\vec x}, \vec u \right) dt \rightarrow extr. J=∫t0tkF(t,x,x˙,u)dt→extr.
2. 解题步骤
2.1 建立增广泛函
对于拉格朗日问题,应当先列出增广泛函:
F
p
=
λ
0
⋅
F
(
t
,
x
⃗
,
x
⃗
˙
,
u
⃗
)
+
∑
i
=
1
n
λ
i
(
t
)
⋅
(
x
˙
i
−
f
i
(
t
,
x
⃗
,
u
⃗
)
)
F_p = \lambda_0 \cdot F \left( t, \vec x, \dot {\vec x}, \vec u \right) + \sum _{i=1} ^n \lambda_i (t) \cdot \left( \dot x_i - f_i \left( t, \vec x, \vec u \right) \right)
Fp=λ0⋅F(t,x,x˙,u)+i=1∑nλi(t)⋅(x˙i−fi(t,x,u))其中
λ
0
\lambda_0
λ0为一未确定参数,其性质满足:
{
若
λ
0
>
0
,
则
J
→
m
i
n
若
λ
0
<
0
,
则
J
→
m
a
x
\begin{cases} 若 \lambda_0 > 0, \quad 则 J \rightarrow min \\ 若 \lambda_0 < 0, \quad 则 J \rightarrow max \end{cases}
{若λ0>0,则J→min若λ0<0,则J→max且
λ
0
≠
0
\lambda_0 \neq 0
λ0=0。
同时还需有:
λ
i
(
t
)
\lambda_i(t)
λi(t)中不可以所有
λ
i
\lambda_i
λi都等于0。
2.2 建立增广变量向量
现在建立增广变量向量:
[
x
1
x
2
⋯
x
n
u
1
u
2
⋯
u
m
λ
1
λ
2
⋯
λ
n
]
\left[ \begin{matrix} x_1 & x_2 & \cdots & x_n & u_1 & u_2 & \cdots & u_m & \lambda_1 & \lambda_2 & \cdots & \lambda_n \end{matrix} \right]
[x1x2⋯xnu1u2⋯umλ1λ2⋯λn]共
2
n
+
m
2n+m
2n+m个元素,其中
x
i
x_i
xi与
λ
i
\lambda_i
λi个数相同,均为
n
n
n个,而
u
u
u有
m
m
m个。
此时,如果把上述向量中的每个元素都看成一个单独的变量,则拉格朗日问题就转化为了多变量问题。
2.3 欧拉方程
对于泛函
F
p
F_p
Fp写出欧拉方程:
共
(
2
n
+
m
)
个
:
{
F
p
x
1
−
d
d
t
F
p
x
˙
1
=
0
⋮
F
p
x
n
−
d
d
t
F
p
x
˙
n
=
0
F
p
u
1
−
d
d
t
F
p
u
˙
1
=
0
⋮
F
p
u
m
−
d
d
t
F
p
u
˙
m
=
0
F
p
λ
1
−
d
d
t
F
p
λ
˙
1
=
0
⋮
F
p
λ
n
−
d
d
t
F
p
λ
˙
n
=
0
(*)
共(2n+m)个: \begin{cases} F_{px_1} - \frac{d}{dt} F_{p \dot x_1} &= 0 \\ \vdots \\ F_{px_n} - \frac{d}{dt} F_{p \dot x_n} &= 0 \\ F_{pu_1} - \frac{d}{dt} F_{p \dot u_1} &= 0 \\ \vdots \\ F_{pu_m} - \frac{d}{dt} F_{p \dot u_m} &= 0 \\ F_{p \lambda_1} - \frac{d}{dt} F_{p \dot \lambda_1} &= 0 \\ \vdots \\ F_{p \lambda_n} - \frac{d}{dt} F_{p \dot \lambda_n} &= 0 \tag{*} \end{cases}
共(2n+m)个:⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧Fpx1−dtdFpx˙1⋮Fpxn−dtdFpx˙nFpu1−dtdFpu˙1⋮Fpum−dtdFpu˙mFpλ1−dtdFpλ˙1⋮Fpλn−dtdFpλ˙n=0=0=0=0=0=0(*)利用欧拉方程组可以解出向量
u
⃗
\vec u
u的表达式:
{
u
1
=
φ
1
(
x
,
λ
)
⋮
u
m
=
φ
m
(
x
,
λ
)
\begin{cases} u_1 &= \varphi_1 (x, \lambda) \\ \vdots \\ u_m &= \varphi_m (x, \lambda) \end{cases}
⎩⎪⎪⎨⎪⎪⎧u1⋮um=φ1(x,λ)=φm(x,λ)并能够同时得出最优的
x
x
x与相应的指标
J
J
J。
3. 例题
□ \square \quad □给出条件
- 数学模型 { x ˙ 1 = x 2 x ˙ 2 = u \begin{cases} \dot x_1 &= x_2 \\ \dot x_2 &= u \end{cases} {x˙1x˙2=x2=u
- 时间区间
t ∈ [ 0 , 1 ] t \in \left[ 0, 1 \right] t∈[0,1] - 性能指标
J = ∫ 0 1 ( 4 x 1 2 + 5 x 2 2 + u 2 ) d t → m i n J = \int _0 ^1 \left( 4x_1^2 + 5x_2^2 + u^2 \right) dt \rightarrow min J=∫01(4x12+5x22+u2)dt→min - 边界条件
S t a r t = { x 1 ( 0 ) = 5 x 2 ( 0 ) = 0 Start = \begin{cases} x_1(0) &= 5 \\ x_2 (0) &= 0 \end{cases} Start={x1(0)x2(0)=5=0 E n d = { x 1 ( 1 ) = 0 x 2 ( 1 ) = 0 End = \begin{cases} x_1(1) &= 0 \\ x_2 (1) &= 0 \end{cases} End={x1(1)x2(1)=0=0
解:
根据数学模型有
f 1 = x 2 , f 2 = u f_1 = x_2, \quad f_2 = u f1=x2,f2=u写出增广泛函
F p = λ 0 F ( t , x ⃗ ˙ , x ⃗ , u ⃗ ) + ∑ i = 1 n λ i ( t ) ( x i ( t ) − f i ( t , x ⃗ , u ⃗ ) ) = λ 0 F + λ 1 ( t ) ( x ˙ 1 − f 1 ) + λ 2 ( t ) ( x ˙ 2 − f 2 ) = λ 0 ( 4 x 1 2 + 5 x 2 2 + u 2 ) + λ 1 ( t ) ( x ˙ 1 − x 2 ) + λ 2 ( t ) ( x ˙ 2 − u ) \begin{aligned} F_p &= \lambda_0 F \left(t, \dot {\vec x}, \vec x, \vec u \right) + \sum _{i=1}^n \lambda_i (t) \left( x_i(t) - f_i \left(t, \vec x, \vec u \right) \right) \\ &= \lambda_0 F + \lambda_1 (t) \left( \dot x_1 - f_1 \right) + \lambda_2 (t) \left( \dot x_2 - f_2 \right) \\ &= \lambda_0 \left( 4x_1^2 + 5x_2^2 + u^2 \right) + \lambda_1(t) \left(\dot x_1 - x_2 \right) + \lambda_2 (t) \left( \dot x_2 - u \right) \end{aligned} Fp=λ0F(t,x˙,x,u)+i=1∑nλi(t)(xi(t)−fi(t,x,u))=λ0F+λ1(t)(x˙1−f1)+λ2(t)(x˙2−f2)=λ0(4x12+5x22+u2)+λ1(t)(x˙1−x2)+λ2(t)(x˙2−u)增广变量为
[ x 1 x 2 u λ 1 λ 2 ] \left[ \begin{matrix} x_1 & x_2 & u & \lambda_1 & \lambda_2 \end{matrix} \right] [x1x2uλ1λ2]代入(*)式可有
{ 8 λ 0 x 1 − λ ˙ 1 ( t ) = 0 ( 10 λ 0 x 2 − λ 1 ) − λ ˙ 2 ( t ) = 0 ( 2 λ 0 u − λ 2 ( t ) ) − 0 = 0 ( x ˙ 1 − x 2 ) − 0 = 0 ( x ˙ 2 − u ) − 0 = 0 (1) \begin{cases} 8\lambda_0 x_1 - \dot \lambda_1 (t) &= 0 \\ \left( 10 \lambda_0 x_2 - \lambda_1 \right) - \dot \lambda_2 (t) &= 0 \\ \left( 2\lambda_0 u - \lambda_2 (t) \right) - 0 &= 0 \\ \left(\dot x_1 - x_2 \right) - 0 &= 0 \\ \left( \dot x_2 - u \right) - 0 &= 0 \tag{1} \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧8λ0x1−λ˙1(t)(10λ0x2−λ1)−λ˙2(t)(2λ0u−λ2(t))−0(x˙1−x2)−0(x˙2−u)−0=0=0=0=0=0(1)由于题目要求 J → m i n J \rightarrow min J→min,因此 λ 0 > 0 \lambda_0 > 0 λ0>0,不妨取 λ 0 = 1 \lambda_0 = 1 λ0=1,则(1)式可解出
{ x ˙ 1 = x 2 x ˙ 2 = λ 2 2 λ 0 = λ 2 2 λ ˙ 1 = 8 λ 0 x 1 = 8 x 1 λ ˙ 2 = 10 λ 0 x 2 − λ 1 = 10 x 2 − λ 1 (2) \begin{cases} \dot x_1 &= x_2 \\ \dot x_2 &= \frac{\lambda_2}{2 \lambda_0} = \frac{\lambda_2}{2} \\ \dot \lambda_1 &= 8 \lambda_0 x_1 = 8 x_1 \\ \dot \lambda_2 &= 10 \lambda_0 x_2 - \lambda_1 = 10x_2 - \lambda_1 \tag{2} \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x˙1x˙2λ˙1λ˙2=x2=2λ0λ2=2λ2=8λ0x1=8x1=10λ0x2−λ1=10x2−λ1(2)将(2)写成标准柯西形式 X ˙ = A X \dot X = AX X˙=AX有
[ x ˙ 1 x ˙ 2 λ ˙ 1 λ ˙ 2 ] = [ 0 1 0 0 0 0 0 1 2 8 0 0 0 0 10 − 1 0 ] ⋅ [ x 1 x 2 λ 1 λ 2 ] \left[ \begin{matrix} \dot x_1 \\ \dot x_2 \\ \dot \lambda_1 \\ \dot \lambda_2 \end{matrix} \right] = \left[ \begin{matrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & \frac{1}{2} \\ 8 & 0 & 0 & 0 \\ 0 & 10 & -1 & 0 \end{matrix} \right] \cdot \left[ \begin{matrix} x_1 \\ x_2 \\ \lambda_1 \\ \lambda_2 \end{matrix} \right] ⎣⎢⎢⎡x˙1x˙2λ˙1λ˙2⎦⎥⎥⎤=⎣⎢⎢⎡008010010000−102100⎦⎥⎥⎤⋅⎣⎢⎢⎡x1x2λ1λ2⎦⎥⎥⎤用 det ( p I − A ) = 0 \det \left( pI - A \right) = 0 det(pI−A)=0解得
p 4 − 5 p 2 + 4 = 0 , ⟹ p 1 = 2 , p 2 = − 2 , p 3 = 1 , p 4 = − 1 p^4 - 5p^2 + 4 = 0, \quad \Longrightarrow p_1 = 2, \quad p_2 = -2, \quad p_3 = 1, \quad p_4 = -1 p4−5p2+4=0,⟹p1=2,p2=−2,p3=1,p4=−1进而
x 1 ( t ) = C 1 e − t + C 2 e t + C 3 e − 2 t + C 4 e 2 t x 2 ( t ) = x ˙ 1 ( t ) = − C 1 e − t + C 2 e t − 2 C 3 e − 2 t + 2 C 4 e 2 t \begin{aligned} x_1(t) &= C_1 e^{-t} + C_2 e^t + C_3 e^{-2t} + C_4 e^{2t} \\ x_2(t) &= \dot x_1 (t) = -C_1 e^{-t} + C_2 e^t - 2C_3 e^{-2t} + 2C_4 e^{2t} \end{aligned} x1(t)x2(t)=C1e−t+C2et+C3e−2t+C4e2t=x˙1(t)=−C1e−t+C2et−2C3e−2t+2C4e2t再代入边界条件有
C 1 = 25.098 , C 2 = − 7.303 , C 3 = − 14.498 , C 4 = 1.703. □ C_1 = 25.098, C_2 = -7.303, \\ C_3 = -14.498, C_4 = 1.703. \quad \square C1=25.098,C2=−7.303,C3=−14.498,C4=1.703.□
4. 一个tip
回顾性能指标 J J J的表达式可以看出,被积函数 F F F中在 x i , u x_i, u xi,u前都有系数,这个系数可以看做各个变量的权重。某一项的权重越大,该变量对 J J J的影响越大。因此,可以人为地增大某一项的权重系数来提高该项对整个系统的影响力。