0
点赞
收藏
分享

微信扫一扫

优化方法理论合集(3)——拉格朗日问题

源码之路 2022-04-14 阅读 28

目录


拉格朗日问题是一类 对于极值有约束的优化问题,本文针对这类优化问题给出解题方法。

1. 计算条件

这里直接给出拉格朗日问题必需的条件:

  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˙2x˙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 =[x1x2xn],u =[u1u2un],且 x i , u i x_i, u_i xi,ui均为时间的函数。
  2. 给定时间区间
    t ∈ [ t 0 , t k ] t \in \left[ t_0, t_k \right] t[t0,tk]
  3. 边界条件
    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个边界条件
  4. 性能指标
    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 )dtextr.

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=λ0F(t,x ,x ˙,u )+i=1nλi(t)(x˙ifi(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,Jminλ0<0,Jmax λ 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] [x1x2xnu1u2umλ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):Fpx1dtdFpx˙1FpxndtdFpx˙nFpu1dtdFpu˙1FpumdtdFpu˙mFpλ1dtdFpλ˙1FpλndtdFpλ˙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} u1um=φ1(x,λ)=φm(x,λ)并能够同时得出最优的 x x x与相应的指标 J J J

3. 例题

□ \square \quad 给出条件

  1. 数学模型 { 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
  2. 时间区间
    t ∈ [ 0 , 1 ] t \in \left[ 0, 1 \right] t[0,1]
  3. 性能指标
    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)dtmin
  4. 边界条件
    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=1nλi(t)(xi(t)fi(t,x ,u ))=λ0F+λ1(t)(x˙1f1)+λ2(t)(x˙2f2)=λ0(4x12+5x22+u2)+λ1(t)(x˙1x2)+λ2(t)(x˙2u)增广变量为
    [ 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˙1x2)0(x˙2u)0=0=0=0=0=0(1)由于题目要求 J → m i n J \rightarrow min Jmin,因此 λ 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=008010010000102100x1x2λ1λ2 det ⁡ ( p I − A ) = 0 \det \left( pI - A \right) = 0 det(pIA)=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 p45p2+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)=C1et+C2et+C3e2t+C4e2t=x˙1(t)=C1et+C2et2C3e2t+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的影响越大。因此,可以人为地增大某一项的权重系数来提高该项对整个系统的影响力。

举报

相关推荐

0 条评论