1 计算原理
1.1 最优控制问题
在现代控制系统中,最优控制问题通常描述为在满足一定约束条件下,最小化某个性能指标。其数学形式如下:
$$ \dot{X} = f(X, U, t) \\\\ g(X(0),U(0),t) \leq 0 \quad \text{或} \quad g(X(t_{f}), U(t_{f}), t_{f}) \leq 0 \\\\ c(X,U,t) \leq 0 \\\\ \text{约束条件:} \min J(X,U,t) $$- 状态方程:描述系统动态,即状态变量微分与当前状态、控制输入和时间的关系。
- 边界约束:包括初始和终端时刻的状态与控制约束。
- 过程约束:在整个控制过程中必须满足的强约束条件。
- 性能指标:控制系统设计目标,即最小化某个泛函 $J$。
1.2 性能指标类型
从变分法角度看,最优控制问题本质是求解泛函 $X(\cdot)$ 和 $U(\cdot)$,使性能指标 $J$ 最小。常见性能指标分为三类:
1.2.1 Mayer型性能指标
仅与终端状态相关:
$$ J_M(X(\cdot), U(\cdot)) = h(X(t_f)) $$- 适用于只关注最终结果的问题,如导弹命中精度。
1.2.2 Lagrange型性能指标
关注整个控制过程:
$$ J_L(X(\cdot), U(\cdot)) = \int^{t_f}_{0} f^0(t, X(t), U(t)) \, dt $$- 适用于需要优化整个过程的问题,如能耗最小化。
1.2.3 Bolza型性能指标
结合终端和过程性能:
$$ J_B(X(\cdot), U(\cdot)) = h(X(t_f)) + \int^{t_f}_{0} f^0(t, X(t), U(t)) \, dt $$- 最常见的形式,兼顾最终状态和过程消耗。
2 Gauss积分回顾
2.1 基本概念
Gauss积分是一种数值积分方法,通过选取非均匀分布的积分点实现高精度积分。其核心思想是:使用 $n+1$ 个Gauss点可获得 $2n+1$ 阶代数精度。
与传统Newton-Cotes方法(如梯形法则)相比:
- 梯形法则(2点)仅具1阶精度:
- Gauss积分公式:
其中 $c_i$ 为权重系数,$x_i$ 为Gauss点。
2.2 Gauss点选取原理
Gauss点的选取基于正交多项式理论:
定义:函数集 ${ p_0, \cdots, p_n }$ 在区间 $[a, b]$ 上正交,当且仅当:
$$ \int^b_a p_j(x) p_k(x) \, dx = \begin{cases} 0, & j \neq k \\ \neq 0, & j = k \end{cases} $$选择一组正交多项式基(如Legendre多项式)后,其根即为Gauss点。Legendre多项式定义为:
$$ p_i(x) = \frac{1}{2^i i!} \frac{d^i}{dx^i} [(x^2 - 1)^i] $$在区间 $[-1, 1]$ 上正交。
通过拉格朗日插值近似函数:
$$ Q(x) = \sum_{i=1}^{n} L_i(x) f(x_i) $$其中 $L_i(x)$ 为拉格朗日基函数。积分后得:
$$ \int^1_{-1} Q(x) \, dx = \sum_{i=1}^{n} c_i f(x_i), \quad c_i = \int^1_{-1} L_i(x) \, dx $$这种选点方式能最大化积分精度。
3 非线性规划(NLP)问题
非线性规划问题通式为:
$$ minimize \ f(x) \\\\ subject \ to \ g_i(x) \le 0 \ for \ each \ i \in \{1, \cdots , m\} \\\\ h_j(x) = 0 \ for \ each \ j \in \{1, \cdots , p\} \\\\ x \in X. $$示例:
$$ 最小化\ f(x)=x_1x_2 \\\\ 其中满足 \ g_1(x)=-x_1, g_2(x_2) = -x_2 \\\\ x \in R^2 $$常用求解工具包括MATLAB的 fmincon、IPOPT、SNOPT等。高斯伪谱法的核心就是将最优控制问题转化为NLP问题求解。
4 Gauss伪谱法
4.1 时间区间变换
原始时间区间 $t \in [t_0, t_f]$ 变换至 $\tau \in [-1, 1]$:
$$ t = \frac{(t_f - t_0) \tau + (t_f + t_0)}{2}, \quad \tau = \frac{2t - t_f - t_0}{t_f - t_0} $$4.2 状态方程离散化
状态方程:
$$ \frac{dX}{dt} = f(X(t), U(t), t) $$应用链式法则:
$$ \frac{dX}{d\tau} \frac{d\tau}{dt} = f(X(\tau), U(\tau), \tau) $$由于 $\frac{d\tau}{dt} = \frac{2}{t_f - t_0}$,可得:
$$ \frac{dX}{d\tau} = \frac{t_f - t_0}{2} f(X(\tau), U(\tau), \tau) $$使用拉格朗日插值近似状态和控制变量:
$$ X(\tau) \approx \sum_{i=0}^{n} L_i(\tau) X(\tau_i), \quad U(\tau) \approx \sum_{i=1}^{n} L_i^*(\tau) U(\tau_i) $$其中基函数为:
$$ L_i(\tau) = \prod_{j=0, j \neq i}^{n} \frac{\tau - \tau_j}{\tau_i - \tau_j}, \quad L_i^*(\tau) = \prod_{j=1, j \neq i}^{n} \frac{\tau - \tau_j}{\tau_i - \tau_j} $$在配点 $\tau_k$ 处,状态导数近似为:
$$ \dot{X}(\tau_k) \approx \sum_{i=0}^{n} D_{ki} X(\tau_i), \quad D_{ki} = \dot{L}_i(\tau_k) $$其中微分矩阵 $D$ 的元素由基函数导数计算。最终状态方程离散为代数约束:
$$ \sum_{i=0}^{n} D_{ki} X_i - \frac{t_f - t_0}{2} F(X_k, U_k, \tau_k; t_0, t_f) = 0 $$5 计算例程
考虑如下最优控制问题:
$$ \dot{x} = -x^2 + u, \quad x(0) = 1, \quad x(2) = 0.5, \quad J = 0.5 \int^2_0 u^2(t) \, dt, \quad t \in [0, 2] $$5.1 问题变换
时间变换:
$$ t = \tau + 1 \Rightarrow \frac{dx}{d\tau} = -x^2 + u $$选择 $N=2$ 的Gauss-Legendre点:
$$ \tau_0 = -1, \quad \tau_1 = -\frac{1}{\sqrt{3}}, \quad \tau_2 = \frac{1}{\sqrt{3}}, \quad \tau_f = 1 $$5.2 离散化
状态和控制变量近似:
$$ X(\tau) \approx L_0(\tau) X_0 + L_1(\tau) X_1 + L_2(\tau) X_2 \\\\ U(\tau) \approx L_1^*(\tau) U_1 + L_2^*(\tau) U_2 $$决策变量为:
$$ Z = [X_0, X_1, X_2, U_1, U_2]^T $$微分矩阵 $D$ 计算如下(以 $\tau_1, \tau_2$ 为配点):
$$ D = \begin{bmatrix} \frac{(\tau_1 - \tau_1) + (\tau_1 - \tau_2)}{(\tau_0 - \tau_1)(\tau_0 - \tau_2)} & \frac{(\tau_1 - \tau_0) + (\tau_1 - \tau_2)}{(\tau_1 - \tau_0)(\tau_1 - \tau_2)} & \frac{(\tau_1 - \tau_0) + (\tau_1 - \tau_1)}{(\tau_2 - \tau_0)(\tau_2 - \tau_1)} \\\\ \frac{(\tau_2 - \tau_1) + (\tau_2 - \tau_2)}{(\tau_0 - \tau_1)(\tau_0 - \tau_2)} & \frac{(\tau_2 - \tau_0) + (\tau_2 - \tau_2)}{(\tau_1 - \tau_0)(\tau_1 - \tau_2)} & \frac{(\tau_2 - \tau_0) + (\tau_2 - \tau_1)}{(\tau_2 - \tau_0)(\tau_2 - \tau_1)} \end{bmatrix} $$约束条件:
- 初始条件:$X_0 = 1$
- 终端条件:$X_f \approx X_0 + \sum_{i=1}^2 c_i (-X_i^2 + U_i)$
- 微分约束:
- 目标函数:$\min J = 0.5 (U_1^2 + U_2^2)$
5.3 MATLAB实现
|
|