多段最优控制问题

简介

大多数现实世界的最优控制问题定义在一个单独的时间区间内。然而,pockit 求解一个更一般的问题:多阶段最优控制问题。

多阶段最优控制问题由两个层级的对象组成:一个系统和一个或多个阶段。每个阶段定义在独立的时间区间上,具有独立的变量和动力学。系统对象将阶段组合在一起形成一个完整的问题。采用多阶段问题主要有两个原因:

  • 一些问题本质上具有多个阶段。例如,化学反应可能有多个阶段,每个阶段由不同的变量和关系描述。另一个例子是优化利用行星引力辅助的卫星轨道。在这种情况下,两个阶段由相同的变量和关系控制,但在引力辅助发生处有边界条件的突变
  • 数值原因。再次考虑化学反应的例子。在反应过程中,反应物的浓度可能在短时间内发生数量级的变化。在这种情况下,将问题分成多个阶段可能更有利

我们通过列出它们包含的数据和定义在数据上的关系来定义系统和阶段对象。

多段最优控制问题关系图,箭头表示以其为变量的函数

多段最优控制问题的构成

系统

系统包含

  • 一个或多个阶段:\(\mathbb{P} = \left\lbrace ^0P, ^1P, \dots, ^{n_p - 1}P \right\rbrace\)。
  • 系统参数:\(\mathbb{S} = \left\lbrace s_0, s_1, \dots, s_{n_s - 1} \right\rbrace\),每个系统参数是一个简单的优化变量,可以被所有阶段访问。系统参数的一个重要用途是通过将阶段的时间区间和边界条件指定为系统参数的函数来连接阶段。由于系统参数是共享的,相邻阶段在连接点满足所需的关系。

阶段

  • 时间区间:\(\left[t_0, t_f\right]\),其中 \(t_0, t_f\) 可以是自由变量,固定的常数或系统参数的函数
  • 状态变量:\(\boldsymbol{x} = \left\lbrace x_0, x_1, \dots, x_{n_x - 1} \right\rbrace\),状态变量是时间区间上的函数,满足动力学微分方程和边界条件
  • 控制变量:\(\boldsymbol{u} = \left\lbrace u_0, u_1, \dots, u_{n_u - 1} \right\rbrace\),控制变量是时间区间上的函数,但不能对其指定导数和边界条件。如果需要为控制变量指定边界条件,可以将其设置为状态变量,然后将其导数设置为控制变量

定义在阶段上的函数关系

  1. 动力学方程:状态变量随时间变化的微分方程

    $$ \dot {\boldsymbol{x}}(t) = \boldsymbol{D}\left(\boldsymbol{x}(t), \boldsymbol{u}(t), t, \mathbb S\right) $$

  2. 积分:被用于在系统层面定义目标函数和系统约束

    $$ \mathbb I=∫_{t_0}^{t_f}\boldsymbol{I}\left(\boldsymbol{x}(t), \boldsymbol{u}(t), t, \mathbb S\right)\mathrm dt $$

  3. 阶段约束(路径约束):在阶段的整个时间区间内任一点满足的约束

    $$ \underline {\boldsymbol{c}}≤\boldsymbol{C}\left(\boldsymbol{x}(t), \boldsymbol{u}(t), t, \mathbb S\right)≤\overline {\boldsymbol{c}},\quad\forall\, t\in[t_0, t_f] $$

  4. 边界条件:状态变量和时间区间的初值和终值。每个变量均可设定为自由变量、固定为常数或系统变量的函数

定义在系统上的函数关系

  1. 目标函数:整个最优控制问题中要最小化的量。目标函数是每个阶段定义的积分和系统参数的函数

    $$ F(^0{\mathbb I},^1{\mathbb I},…,^{n_p−1}{\mathbb I},\mathbb S) $$

  2. 系统约束(代数约束): 系统变量和各阶段的积分满足的代数约束

$$ \underline{\boldsymbol l}\leq {\boldsymbol L}(^0{\mathbb I},^1{\mathbb I},…,^{n_p−1}{\mathbb I},\mathbb S)\leq \overline{\boldsymbol l} $$

总结

本节详细定义了多阶段最优控制问题。大多数现实世界的最优控制问题都可以用这种多阶段最优控制框架描述,并可以通过 pockit 进行数值求解。