最优控制问题(Optimal Control Problem)的数值求解方法主要有间接法和直接法。间接法是根据极大值原理或者动态规划得到最优性的一阶必要条件,然后使用数值求解得到最优控制和轨迹。
间接法的优点是解的精度高,满足最优性的一阶必要条件。 缺点是收敛域很小,对初值估计要求高,且难以估计协态变量初值。而且需要求解状态方程和协态方程,增加了计算量, 算法鲁棒性较差。 对于复杂的系统, 推导一阶必要条件特别困难。
直接法是将原最优控制问题转化为非线性规划问题,然后采用非线性规划算法求解。由于不需要推导一阶必要条件,所以应用方便。直接法根据离散化变量的不同,主要可以分为只离散控制变量、只离散状态变量和同时离散控制变量和状态变量三类。第一类方法由于需要进行数值积分,计算量较大,这种算法的代表是打靶法和多段打靶法;第二类方法是微分包含法,它只离散状态变量,将控制约束转化为状态约束,可以降低变量个数,但是对于非线性比较复杂的状态方程,难以求出控制变量关于状态的显式表达式;第三类方法同时将状态变量和控制变量进行离散化,微分方程转化为代数约束条件, 这一类算法收敛速度较快,并且收敛半径大。[1]
配点法也是一种直接法,其包括欧拉法、Runge-Kutta法、Hermit-Simpson法和伪谱法。其中伪谱法包括Chebyshev伪谱法、Legendre伪谱法、Gauss伪谱法和Radau伪谱法。伪谱法因其计算效率和计算精度上的优势、良好的收敛性以及较低的初值敏感度在最优控制领域求解算法中倍受关注[2]。
Pseudospectral methods are a class of direct collocation where the optimal control problem is transcribed to a nonlinear programming problem (NLP) by parameterizing the state and control using global polynomials and collocating the differential-algebraic equations using nodes obtained from a Gaussian quadrature.[3]
1. 数学基本理论
1.1 Lagrange Polynomials
假设给定
N
+
1
N+1
N+1个数据点
(
x
0
,
y
0
)
,
(
x
1
,
y
1
)
,
⋯
,
(
x
N
,
y
N
)
(x_0, y_0),(x_1, y_1),\cdots,(x_N, y_N)
(x0,y0),(x1,y1),⋯,(xN,yN),可以得到一个显示的,阶次为
N
N
N插值多项式,称为Lagrange Polynomials(拉格朗日多项式)。
P
(
x
)
=
∑
i
=
0
N
y
i
L
i
(
x
i
)
(1-1)
P(x) = \sum_{i=0}^{N} y_i L_i(x_i) \tag{1-1}
P(x)=i=0∑NyiLi(xi)(1-1)
其中,
L
i
(
x
)
L_i(x)
Li(x)是Lagrange Polynomial的基函数。
L
i
(
x
)
=
∏
j
=
0
j
≠
i
N
x
−
x
j
x
i
−
x
j
,
i
=
0
,
1
,
2
,
⋯
,
N
(1-2)
L_i(x) = \prod_{j=0 \\ j \neq i}^{N} {\frac{x - x_j}{x_i - x_j}}, i = 0, 1, 2, \cdots, N \tag{1-2}
Li(x)=j=0j=i∏Nxi−xjx−xj,i=0,1,2,⋯,N(1-2)
1.2 Legendre Polynomials
Legendre Polynomials(勒让德多项式)是勒让德微分方程的解,勒让德多项式
P
n
(
x
)
P_n(x)
Pn(x)是
n
n
n阶多项式,可用罗德里格公式表示为:
P
n
(
x
)
=
1
2
n
n
!
d
n
d
x
n
[
(
x
2
−
1
)
n
]
(1-3)
P_n(x) = \frac{1}{2^n n!} \frac{d^n}{dx^n} [(x^2 - 1)^n] \tag{1-3}
Pn(x)=2nn!1dxndn[(x2−1)n](1-3)
相邻三个Legendre Polynomials具有递推关系:
(
n
+
1
)
P
n
+
1
=
(
2
n
+
1
)
x
P
n
−
n
P
n
−
1
(1-4)
(n+1)P_{n+1} = (2n+1)xP_n - n P_{n-1} \tag{1-4}
(n+1)Pn+1=(2n+1)xPn−nPn−1(1-4)
Legendre Polynomials的微分递推关系可以用来计算Legendre Polynomials积分:
(
2
n
+
1
)
P
n
=
d
d
x
[
P
n
+
1
−
P
n
−
1
]
(1-5)
(2n + 1) P_n = \frac{d}{dx}[P_{n+1} - P_{n-1}] \tag{1-5}
(2n+1)Pn=dxd[Pn+1−Pn−1](1-5)
1.3 Collocation Points
有三种常用的配点:Legendre-Gauss(LG),Legendre-Gauss-Radau(LGR)和Legendre-Gauss-Lobatto(LGL) 。这些配点是Legendre Polynomials的根或者是Legendre Polynomials和其微分的根的线性组合。LG、LGR和LGL的配点分别分布在 τ ∈ ( − 1 , 1 ) \tau \in (-1, 1) τ∈(−1,1), τ ∈ [ − 1 , 1 ) \tau \in [-1, 1) τ∈[−1,1)或者 τ ∈ ( − 1 , 1 ] \tau \in (-1, 1] τ∈(−1,1]、 τ ∈ [ − 1 , 1 ] \tau \in [-1, 1] τ∈[−1,1]。假设 N N N是配点的数目, P N ( τ ) P_N(\tau) PN(τ)是 N N N阶Legendre Polynomial多项式,则有:
多项式的根 | 分布 | 伪谱法分类 | |
---|---|---|---|
L G LG LG | P N ( τ ) P_N(\tau) PN(τ) | τ ∈ ( − 1 , 1 ) \tau \in (-1, 1) τ∈(−1,1) | L o b a t t o Lobatto Lobatto |
L G R LGR LGR | P N − 1 ( τ ) + P N ( τ ) P_{N-1}(\tau) + P_N(\tau) PN−1(τ)+PN(τ) | τ ∈ [ − 1 , 1 ) \tau \in [-1, 1) τ∈[−1,1)或者 τ ∈ ( − 1 , 1 ] \tau \in (-1, 1] τ∈(−1,1] | G a u s s Gauss Gauss |
L G L LGL LGL | P ˙ N − 1 ( τ ) \dot{P}_{N-1}(\tau) P˙N−1(τ) | τ ∈ [ − 1 , 1 ] \tau \in [-1, 1] τ∈[−1,1] | R a d a u Radau Radau |
1.4 Quadrature
采用高斯型数值积分计算近似计算积分:
∫
τ
0
τ
f
f
(
τ
)
d
τ
≈
∑
i
=
1
N
w
i
f
(
τ
i
)
(1-6)
\int_{\tau_0}^{\tau_f} f(\tau)d{\tau} \approx \sum_{i=1}^{N} w_i f(\tau_i) \tag{1-6}
∫τ0τff(τ)dτ≈i=1∑Nwif(τi)(1-6)
其中,
w
i
w_i
wi是quadrature weights,
τ
i
\tau_i
τi是quadrature points或者notes。
f
(
τ
)
f(\tau)
f(τ)采用Lagrange Polynomial形式有:
∫
τ
0
τ
f
f
(
τ
)
d
τ
=
∫
τ
0
τ
f
∑
i
=
0
N
L
i
(
τ
i
)
f
(
τ
i
)
d
τ
(1-7)
\int_{\tau_0}^{\tau_f} f(\tau)d{\tau} = \int_{\tau_0}^{\tau_f} \sum_{i=0}^{N} L_i(\tau_i) f(\tau_i) d{\tau} \tag{1-7}
∫τ0τff(τ)dτ=∫τ0τfi=0∑NLi(τi)f(τi)dτ(1-7)
由公式
(
1
−
6
)
(1-6)
(1−6)和
(
1
−
7
)
(1-7)
(1−7)可以得到:
w
i
=
∫
τ
0
τ
f
L
i
(
τ
i
)
d
τ
=
∫
τ
0
τ
f
∏
k
=
1
,
k
≠
i
N
τ
−
τ
k
τ
i
−
τ
k
d
τ
,
i
=
1
,
2
,
⋯
,
N
(1-8)
w_i = \int_{\tau_0}^{\tau_f} L_i(\tau_i) d{\tau} = \int_{\tau_0}^{\tau_f} \prod_{k=1, k \neq i}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}} d{\tau}, i = 1, 2, \cdots, N \tag{1-8}
wi=∫τ0τfLi(τi)dτ=∫τ0τfk=1,k=i∏Nτi−τkτ−τkdτ,i=1,2,⋯,N(1-8)
如果
τ
i
\tau_i
τi是Legendre Polynomials的collocation points,可以得到:
w
i
=
2
1
−
τ
i
2
[
P
˙
N
(
τ
i
)
]
2
(1-9)
w_i = \frac{2}{1-\tau_i^2}[\dot{P}_N(\tau_i)]^2 \tag{1-9}
wi=1−τi22[P˙N(τi)]2(1-9)
其中,
P
˙
N
(
τ
)
\dot{P}_N(\tau)
P˙N(τ)是
N
N
N阶Legendre Polynomials的微分,
τ
0
=
−
1
,
τ
f
=
1
\tau_0=-1,\tau_f=1
τ0=−1,τf=1。
除此之外,可以通过对公式
(
1
−
8
)
(1-8)
(1−8)变形得到公式
(
1
−
10
)
(1-10)
(1−10),求解线性方程组得到
w
w
w:
[
P
0
(
τ
1
)
P
0
(
τ
2
)
⋯
P
0
(
τ
N
)
P
1
(
τ
1
)
P
1
(
τ
2
)
⋯
P
1
(
τ
N
)
⋮
⋮
⋱
⋮
P
N
−
1
(
τ
1
)
P
N
−
1
(
τ
2
)
⋯
P
N
−
1
(
τ
N
)
]
[
w
1
w
2
⋮
w
n
]
=
[
P
0
(
τ
1
)
P
0
(
τ
2
)
⋯
P
0
(
τ
N
)
P
1
(
τ
1
)
P
1
(
τ
2
)
⋯
P
1
(
τ
N
)
⋮
⋮
⋱
⋮
P
N
−
1
(
τ
1
)
P
N
−
1
(
τ
2
)
⋯
P
N
−
1
(
τ
N
)
]
[
∫
τ
0
τ
f
∏
k
=
1
,
k
≠
1
N
τ
−
τ
k
τ
i
−
τ
k
d
τ
∫
τ
0
τ
f
∏
k
=
1
,
k
≠
2
N
τ
−
τ
k
τ
i
−
τ
k
d
τ
⋮
∫
τ
0
τ
f
∏
k
=
1
,
k
≠
N
N
τ
−
τ
k
τ
i
−
τ
k
d
τ
]
=
[
∫
τ
0
τ
f
(
(
∏
k
=
1
,
k
≠
1
N
τ
−
τ
k
τ
i
−
τ
k
)
P
0
(
τ
1
)
+
(
∏
k
=
1
,
k
≠
2
N
τ
−
τ
k
τ
i
−
τ
k
)
P
0
(
τ
2
)
+
⋯
+
(
∏
k
=
1
,
k
≠
N
N
τ
−
τ
k
τ
i
−
τ
k
)
P
0
(
τ
n
)
)
d
τ
∫
τ
0
τ
f
(
(
∏
k
=
1
,
k
≠
1
N
τ
−
τ
k
τ
i
−
τ
k
)
P
1
(
τ
1
)
+
(
∏
k
=
1
,
k
≠
2
N
τ
−
τ
k
τ
i
−
τ
k
)
P
1
(
τ
2
)
+
⋯
+
(
∏
k
=
1
,
k
≠
N
N
τ
−
τ
k
τ
i
−
τ
k
)
P
1
(
τ
n
)
)
d
τ
⋮
∫
τ
0
τ
f
(
(
∏
k
=
1
,
k
≠
1
N
τ
−
τ
k
τ
i
−
τ
k
)
P
N
−
1
(
τ
1
)
+
(
∏
k
=
1
,
k
≠
2
N
τ
−
τ
k
τ
i
−
τ
k
)
P
N
−
1
(
τ
2
)
+
⋯
+
(
∏
k
=
1
,
k
≠
N
N
τ
−
τ
k
τ
i
−
τ
k
)
P
N
−
1
(
τ
n
)
)
d
τ
]
=
[
∫
τ
0
τ
f
P
0
(
τ
)
d
τ
∫
τ
0
τ
f
P
1
(
τ
)
d
τ
⋮
∫
τ
0
τ
f
P
N
−
1
(
τ
)
d
τ
]
(1-10)
\begin{aligned} &\left[\begin{matrix} P_0(\tau_1) & P_0(\tau_2) & \cdots & P_0(\tau_{N}) \\ P_1(\tau_1) & P_1(\tau_2) & \cdots & P_1(\tau_{N}) \\ \vdots & \vdots & \ddots & \vdots \\ P_{N-1}(\tau_1) & P_{N-1}(\tau_2) & \cdots & P_{N-1}(\tau_{N}) \end{matrix}\right] \left[\begin{matrix} w_1 \\ w_2 \\ \vdots \\ w_n \end{matrix}\right] \\ &= \left[\begin{matrix} P_0(\tau_1) & P_0(\tau_2) & \cdots & P_0(\tau_{N}) \\ P_1(\tau_1) & P_1(\tau_2) & \cdots & P_1(\tau_{N}) \\ \vdots & \vdots & \ddots & \vdots \\ P_{N-1}(\tau_1) & P_{N-1}(\tau_2) & \cdots & P_{N-1}(\tau_{N}) \end{matrix}\right] \left[\begin{matrix} \int_{\tau_0}^{\tau_f} \prod_{k=1, k \neq 1}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}d{\tau} \\ \int_{\tau_0}^{\tau_f} \prod_{k=1, k \neq 2}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}d{\tau} \\ \vdots \\ \int_{\tau_0}^{\tau_f} \prod_{k=1, k \neq N}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}d{\tau} \\ \end{matrix}\right] \\ &= \left[\begin{matrix} \int_{\tau_0}^{\tau_f} ((\prod_{k=1, k \neq 1}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_0(\tau_1) + (\prod_{k=1, k \neq 2}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_0(\tau_2) + \cdots + (\prod_{k=1, k \neq N}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_0(\tau_n))d{\tau} \\ \int_{\tau_0}^{\tau_f} ((\prod_{k=1, k \neq 1}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_1(\tau_1) + (\prod_{k=1, k \neq 2}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_1(\tau_2) + \cdots + (\prod_{k=1, k \neq N}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_1(\tau_n))d{\tau} \\ \vdots \\ \int_{\tau_0}^{\tau_f} ((\prod_{k=1, k \neq 1}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_{N-1}(\tau_1) + (\prod_{k=1, k \neq 2}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_{N-1}(\tau_2) + \cdots + (\prod_{k=1, k \neq N}^{N} {\frac{\tau - \tau_k}{\tau_i - \tau_k}}) P_{N-1}(\tau_n))d{\tau} \end{matrix}\right] \\ &= \left[\begin{matrix} \int_{\tau_0}^{\tau_f} P_0(\tau) d{\tau} \\ \int_{\tau_0}^{\tau_f} P_1(\tau) d{\tau} \\ \vdots \\ \int_{\tau_0}^{\tau_f} P_{N-1}(\tau) d{\tau} \\ \end{matrix}\right] \end{aligned} \tag{1-10}
P0(τ1)P1(τ1)⋮PN−1(τ1)P0(τ2)P1(τ2)⋮PN−1(τ2)⋯⋯⋱⋯P0(τN)P1(τN)⋮PN−1(τN)
w1w2⋮wn
=
P0(τ1)P1(τ1)⋮PN−1(τ1)P0(τ2)P1(τ2)⋮PN−1(τ2)⋯⋯⋱⋯P0(τN)P1(τN)⋮PN−1(τN)
∫τ0τf∏k=1,k=1Nτi−τkτ−τkdτ∫τ0τf∏k=1,k=2Nτi−τkτ−τkdτ⋮∫τ0τf∏k=1,k=NNτi−τkτ−τkdτ
=
∫τ0τf((∏k=1,k=1Nτi−τkτ−τk)P0(τ1)+(∏k=1,k=2Nτi−τkτ−τk)P0(τ2)+⋯+(∏k=1,k=NNτi−τkτ−τk)P0(τn))dτ∫τ0τf((∏k=1,k=1Nτi−τkτ−τk)P1(τ1)+(∏k=1,k=2Nτi−τkτ−τk)P1(τ2)+⋯+(∏k=1,k=NNτi−τkτ−τk)P1(τn))dτ⋮∫τ0τf((∏k=1,k=1Nτi−τkτ−τk)PN−1(τ1)+(∏k=1,k=2Nτi−τkτ−τk)PN−1(τ2)+⋯+(∏k=1,k=NNτi−τkτ−τk)PN−1(τn))dτ
=
∫τ0τfP0(τ)dτ∫τ0τfP1(τ)dτ⋮∫τ0τfPN−1(τ)dτ
(1-10)
1.5 Optimal Control Problem
最优控制问题(
O
C
P
OCP
OCP)可以简述为:对于一个受控系统,在满足约束条件下,寻找最优的控制量使性能指标最小。数学描述为:寻找控制变量
u
(
t
)
∈
R
m
u(t) \in R^m
u(t)∈Rm,使得下述性能指标最小:
J
=
Φ
(
X
(
t
0
)
,
t
0
,
X
(
t
f
)
,
t
f
)
+
∫
t
0
t
f
L
(
X
(
t
)
,
U
(
t
)
,
t
)
d
t
s
t
.
{
x
˙
(
t
)
=
f
(
X
(
t
)
,
U
(
t
)
,
t
)
,
t
∈
[
t
0
,
t
f
]
Φ
(
X
(
t
0
)
,
t
0
,
X
(
t
f
)
,
t
f
)
=
0
C
(
X
(
t
)
,
U
(
t
)
,
t
)
≤
0
(1-11)
J = \Phi(\boldsymbol{X}(t_0), t_0, \boldsymbol{X}(t_f), t_f) + \int_{t_0}^{t_f} L(\boldsymbol{X}(t), \boldsymbol{U}(t), t)dt \\ st. \begin{cases} \dot{x}(t) = f(\boldsymbol{X}(t), \boldsymbol{U}(t), t), t \in [t_0, t_f] \\ \Phi(\boldsymbol{X}(t_0), t_0, \boldsymbol{X}(t_f), t_f) = 0 \\ C(\boldsymbol{X}(t), \boldsymbol{U}(t), t) \leq 0 \end{cases} \tag{1-11}
J=Φ(X(t0),t0,X(tf),tf)+∫t0tfL(X(t),U(t),t)dtst.⎩
⎨
⎧x˙(t)=f(X(t),U(t),t),t∈[t0,tf]Φ(X(t0),t0,X(tf),tf)=0C(X(t),U(t),t)≤0(1-11)
其中, X ∈ R n , U ∈ R m \boldsymbol{X} \in R^{n}, \boldsymbol{U} \in R^{m} X∈Rn,U∈Rm。
2. Gauss Pseudo Spectral Method
2.1 OCP模型转换
采用高斯伪谱法对
O
C
P
OCP
OCP模型
(
1
−
11
)
(1-11)
(1−11)进行离散。由于上述
B
o
l
z
a
Bolza
Bolza问题的时域范围为
[
t
0
,
t
f
]
[t_0, t_f]
[t0,tf],但是高斯伪谱法的离散点分布在区间
[
−
1
,
1
)
[-1,1)
[−1,1),因此引入
τ
\tau
τ首先将
B
o
l
z
a
Bolza
Bolza问题转化到定义在
[
−
1
,
1
)
[-1, 1)
[−1,1)上的形式。
t
=
t
f
−
t
0
2
τ
+
t
f
+
t
0
2
(2-1)
t = \frac{t_f - t_0}{2} \tau + \frac{t_f + t_0}{2} \tag{2-1}
t=2tf−t0τ+2tf+t0(2-1)
将公式
(
2
−
1
)
(2-1)
(2−1)带入公式
(
1
−
11
)
(1-11)
(1−11)得:
J
=
Φ
(
X
(
τ
0
)
,
τ
0
,
X
(
τ
f
)
,
τ
f
)
+
t
f
−
t
0
2
∫
τ
0
τ
f
L
(
X
(
τ
)
,
U
(
τ
)
,
τ
)
d
τ
s
t
.
{
d
X
d
τ
=
t
f
−
t
0
2
f
(
X
(
τ
)
,
U
(
τ
)
,
τ
)
,
τ
∈
[
τ
0
,
τ
f
]
Φ
(
X
(
τ
0
)
,
τ
0
,
X
(
τ
f
)
,
τ
f
)
=
0
C
(
X
(
τ
)
,
U
(
τ
)
,
τ
)
≤
0
,
τ
∈
[
τ
0
,
τ
f
]
(2-2)
J = \Phi(\boldsymbol{X}({\tau}_0), {\tau}_0, \boldsymbol{X}({\tau}_f), {\tau}_f) + \frac{t_f - t_0}{2} \int_{{\tau}_0}^{{\tau}_f} L(\boldsymbol{X}({\tau}), \boldsymbol{U}({\tau}), {\tau})d{\tau} \\ st. \begin{cases} \frac{d\boldsymbol{X}}{d{\tau}} = \frac{t_f - t_0}{2} f(\boldsymbol{X}({\tau}), \boldsymbol{U}({\tau}), {\tau}), {\tau} \in [{\tau}_0, {\tau}_f] \\ \Phi(\boldsymbol{X}({\tau}_0), {\tau}_0, \boldsymbol{X}({\tau}_f), {\tau}_f) = 0 \\ C(\boldsymbol{X}({\tau}), \boldsymbol{U}({\tau}), {\tau}) \leq 0, {\tau} \in [{\tau}_0, {\tau}_f] \end{cases} \tag{2-2}
J=Φ(X(τ0),τ0,X(τf),τf)+2tf−t0∫τ0τfL(X(τ),U(τ),τ)dτst.⎩
⎨
⎧dτdX=2tf−t0f(X(τ),U(τ),τ),τ∈[τ0,τf]Φ(X(τ0),τ0,X(τf),τf)=0C(X(τ),U(τ),τ)≤0,τ∈[τ0,τf](2-2)
2.2 Collocation Points
高斯伪谱法是 O C P OCP OCP模型在 L G LG LG配点(collocation points)上进行离散化,这些配点是 N N N个Legendre Polynomial的零点和配点 − 1 -1 −1组成,Legendre Polynomial零点位于开区间 ( − 1 , 1 ) (-1, 1) (−1,1),加上配点 − 1 -1 −1就构成了区间 [ − 1 , 1 ) [-1, 1) [−1,1),因此高斯伪谱法有 N + 1 N+1 N+1个配点,即 τ 0 , τ 1 , τ 2 , ⋯ , τ N {\tau_0, \tau_1, \tau_2, \cdots, \tau_N} τ0,τ1,τ2,⋯,τN,其中 τ 0 = − 1 \tau_0 = -1 τ0=−1。
2.3 状态变量离散
状态变量在
N
+
1
N+1
N+1个配点上,采用Lagrange Polynomial插值拟合,可得:
X
j
(
τ
)
≈
∑
i
=
0
N
L
i
(
τ
)
X
j
(
τ
i
)
=
∑
i
=
0
N
L
i
(
τ
)
x
i
j
,
j
=
0
,
1
,
⋯
,
n
(2-3)
\boldsymbol{X}_j(\tau) \approx \sum_{i=0}^{N} L_i(\tau) \boldsymbol{X}_j(\tau_i) = \sum_{i=0}^{N} L_i(\tau) {x}_{ij}, j = 0, 1, \cdots, n \tag{2-3}
Xj(τ)≈i=0∑NLi(τ)Xj(τi)=i=0∑NLi(τ)xij,j=0,1,⋯,n(2-3)
其中,
X
j
\boldsymbol{X}_j
Xj表示第
j
j
j个状态变量,
τ
i
\tau_i
τi表示第
i
i
i个配点,则连续的
X
\boldsymbol{X}
X轨迹优化问题转换为离散状态变量:
X
≈
[
x
0
,
0
x
0
,
1
⋯
x
0
,
n
−
1
x
1
,
0
x
1
,
1
⋯
x
1
,
n
−
1
⋮
⋮
⋱
⋮
x
N
,
0
x
N
,
1
⋯
x
N
,
n
−
1
]
(2-4)
\boldsymbol{X} \approx \left[\begin{matrix} x_{0,0} & x_{0,1} & \cdots & x_{0,n-1} \\ x_{1,0} & x_{1,1} & \cdots & x_{1,n-1} \\ \vdots & \vdots & \ddots & \vdots \\ x_{N,0} & x_{N,1} & \cdots & x_{N,n-1} \\ \end{matrix}\right] \tag{2-4}
X≈
x0,0x1,0⋮xN,0x0,1x1,1⋮xN,1⋯⋯⋱⋯x0,n−1x1,n−1⋮xN,n−1
(2-4)
其中,
n
n
n是状态变量的维数,
N
+
1
N+1
N+1是配点的数目。
2.4 控制变量离散
控制变量在
N
+
1
N+1
N+1个配点上,采用Lagrange Polynomial插值拟合,可得:
U
j
(
τ
)
≈
∑
i
=
0
N
L
i
(
τ
)
U
j
(
τ
i
)
=
∑
i
=
0
N
L
i
(
τ
)
u
i
j
,
j
=
0
,
1
,
⋯
,
m
(2-5)
\boldsymbol{U}_j(\tau) \approx \sum_{i=0}^{N} L_i(\tau) \boldsymbol{U}_j(\tau_i) = \sum_{i=0}^{N} L_i(\tau) {u}_{ij}, j = 0, 1, \cdots, m \tag{2-5}
Uj(τ)≈i=0∑NLi(τ)Uj(τi)=i=0∑NLi(τ)uij,j=0,1,⋯,m(2-5)
其中,
U
j
\boldsymbol{U}_j
Uj表示第
j
j
j个控制变量,
τ
i
\tau_i
τi表示第
i
i
i个配点,则连续的
U
\boldsymbol{U}
U轨迹优化问题转换为离散状态变量:
U
≈
[
u
0
,
0
u
0
,
1
⋯
u
0
,
m
−
1
u
1
,
0
u
1
,
1
⋯
u
1
,
m
−
1
⋮
⋮
⋱
⋮
u
N
,
0
u
N
,
1
⋯
u
N
,
m
−
1
]
(2-6)
\boldsymbol{U} \approx \left[\begin{matrix} u_{0,0} & u_{0,1} & \cdots & u_{0,m-1} \\ u_{1,0} & u_{1,1} & \cdots & u_{1,m-1} \\ \vdots & \vdots & \ddots & \vdots \\ u_{N,0} & u_{N,1} & \cdots & u_{N,m-1} \\ \end{matrix}\right] \tag{2-6}
U≈
u0,0u1,0⋮uN,0u0,1u1,1⋮uN,1⋯⋯⋱⋯u0,m−1u1,m−1⋮uN,m−1
(2-6)
其中,
m
m
m是控制变量的维数,
N
+
1
N+1
N+1是配点的数目。
2.5 微分方程离散
对公式
(
2
−
3
)
(2-3)
(2−3)进行微分,并令
τ
=
τ
k
\tau = \tau_k
τ=τk得:
X
˙
j
(
τ
k
)
=
∑
i
=
0
N
L
˙
i
(
τ
k
)
x
i
j
=
∑
i
=
0
N
D
k
i
x
i
j
,
D
k
i
=
L
˙
i
(
τ
k
)
,
k
=
1
,
2
,
⋯
,
N
(2-7)
\dot{\boldsymbol{X}}_j(\tau_k) = \sum_{i=0}^{N} \dot{L}_i(\tau_k) {x}_{ij} = \sum_{i=0}^{N} \boldsymbol{D}_{ki} {x}_{ij}, \boldsymbol{D}_{ki} = \dot{L}_i(\tau_k), k = 1, 2, \cdots, N \tag{2-7}
X˙j(τk)=i=0∑NL˙i(τk)xij=i=0∑NDkixij,Dki=L˙i(τk),k=1,2,⋯,N(2-7)
矩阵
D
\boldsymbol{D}
D叫做Gauss Pseudospectral differentiation matrix,维数是
N
×
(
N
+
1
)
N \times (N+1)
N×(N+1)。
O
C
P
OCP
OCP模型的动力学微分约束方程可以离散为:
(
∑
i
=
0
N
D
k
,
i
)
X
j
=
t
f
−
t
0
2
(
A
X
j
−
1
T
+
B
U
j
−
1
T
)
T
,
j
=
1
,
2
,
⋯
,
n
−
1
;
(2-8)
(\sum_{i=0}^{N} \boldsymbol{D}_{k,i}) \boldsymbol{X}_{j} = \frac{t_f - t_0}{2} (\boldsymbol{A} \boldsymbol{X}^T_{j-1} + \boldsymbol{B} \boldsymbol{U}^T_{j-1})^T, j = 1, 2, \cdots, n-1; \tag{2-8}
(i=0∑NDk,i)Xj=2tf−t0(AXj−1T+BUj−1T)T,j=1,2,⋯,n−1;(2-8)
2.6 终端状态约束离散
根据
G
a
u
s
s
Gauss
Gauss积分公式,终端状态可以表示为:
X
f
=
X
N
+
1
=
X
0
+
t
f
−
t
0
2
f
(
X
(
τ
)
,
U
(
τ
)
,
τ
)
d
τ
=
X
0
+
t
f
−
t
0
2
∑
k
=
1
N
w
k
(
A
X
k
−
1
T
+
B
U
k
−
1
T
)
T
(2-9)
\begin{align} \boldsymbol{X}_f &= \boldsymbol{X}_{N+1} \\ &= \boldsymbol{X}_0 + \frac{t_f - t_0}{2} f(\boldsymbol{X}({\tau}), \boldsymbol{U}({\tau}), {\tau})d{\tau} \\ &= \boldsymbol{X}_0 + \frac{t_f - t_0}{2} \sum_{k=1}^{N} {w_k (\boldsymbol{A} \boldsymbol{X}^T_{k-1} + \boldsymbol{B} \boldsymbol{U}^T_{k-1})^T} \end{align} \tag{2-9}
Xf=XN+1=X0+2tf−t0f(X(τ),U(τ),τ)dτ=X0+2tf−t0k=1∑Nwk(AXk−1T+BUk−1T)T(2-9)
其中,
k
=
1
,
2
,
⋯
,
N
k=1,2,\cdots,N
k=1,2,⋯,N,
w
k
w_k
wk是公式
(
1
−
10
)
(1-10)
(1−10)计算得到的结果。
X
N
+
1
\boldsymbol{X}_{N+1}
XN+1并不在公式
(
2
−
4
)
(2-4)
(2−4)中。
2.7 优化目标离散
J = Φ ( X ( τ 0 ) , τ 0 , X ( τ f ) , τ f ) + t f − t 0 2 ∑ k = 1 N w k L k (2-10) J = \Phi(\boldsymbol{X}({\tau}_0), {\tau}_0, \boldsymbol{X}({\tau}_f), {\tau}_f) + \frac{t_f - t_0}{2} \sum_{k=1}^{N} {w_k \boldsymbol{L}_k} \tag{2-10} J=Φ(X(τ0),τ0,X(τf),τf)+2tf−t0k=1∑NwkLk(2-10)
通过高斯伪谱法离散化 O C P OCP OCP模型,得到的离散化模型就可以使用 N L P NLP NLP等数值优化求解器进行求解了。
3. References
[1] 求解含复杂约束非线性最优控制问题的改进Gauss 伪谱法.
[3] An overview of three pseudospectral methods for the numerical solution of optimal control problems.