Skip to content

最优控制中的若干问题

是否显式依赖时间

显式依赖时间(只确定x和u无法确定\(\dot x\))/时变(非自治)

\[\dot x(t) = f(x(t),u(t),t)\]

举例: \(\(\dot x(t) = -a(t)x(t) + b(t)u(t)\)\) \(\(\dot x(t) = ax(t) + bu(t)+t\)\)

不显式依赖时间(确定x和u就确定\(\dot x\))/时不变系统(自治)

\[\dot x(t) = f(x(t),u(t))\]

举例: \(\(\dot x(t) = -ax(t) + bu(t)\)\)

区别

显式依赖时间(即非自治的,时变的系统),在设计控制器时更加复杂,比如分别针对一个时不变的弹簧系统和一个阻尼时变的弹簧系统。前者设计PID时PID的参数可以是定值,而后者必须PID参数要随时间变化,即设计一个适应性PID控制器。

1. 时间不依赖系统的 PID 控制器设计

对于给定的时间不依赖系统:

\[[ m\ddot{x}(t) + b\dot{x}(t) + kx(t) = u(t) ] \]

我们可以使用标准的 PID 控制策略。定义误差为:

\[ e(t) = r(t) - x(t) \]

其中 \(r(t)\) 是期望的参考轨迹。PID 控制律为:

\[ u(t) = K_p e(t) + K_i \int e(t) dt + K_d \frac{de(t)}{dt} \]

其中: - \(K_p\) 是比例增益,用于减小误差。 - \(K_i\) 是积分增益,用于消除稳态误差。 - \(K_d\) 是微分增益,用于减小系统的过渡过程。

2. 时间依赖系统的 PID 控制器设计

对于时间依赖系统:

\[ m\ddot{x}(t) + b(t)\dot{x}(t) + kx(t) = u(t) \]

我们需要更加小心地设计 PID 控制器,以便适应参数的时间变化。我们仍然定义误差为:

\[e(t) = r(t) - x(t) \]
适应性 PID 控制

在适应性 PID 控制中,我们不仅要设计 PID 控制器,还要设计一个算法来实时调整 PID 参数 \(K_p, K_i, K_d\)。适应性控制律可以写作:

\[ u(t) = K_p(t) e(t) + K_i(t) \int e(t) dt + K_d(t) \frac{de(t)}{dt} \]

其中,\(K_p(t), K_i(t), K_d(t)\) 需要根据某种适应性规则实时调整,以便适应系统参数 \(b(t)\) 的变化。适应性规则的设计通常基于系统的稳定性和性能要求。

预测控制

如果 \(b(t)\) 的变化是可预测的,我们可以使用预测控制策略。在预测控制中,我们使用一个模型来预测系统在未来的行为,并基于这些预测来优化控制输入。预测控制通常涉及到解决一个优化问题,以确定在给定的预测模型下能够最小化某个性能指标的控制输入。

鲁棒控制

对于不可预测的 \(b(t)\) 变化,我们可以设计一个鲁棒的 PID 控制器,它能够在 \(b(t)\) 变化的一定范围内保持稳定和满足性能要求。这通常涉及到在控制器设计阶段考虑到 \(b(t)\) 的不确定性,并确保控制器在这些不确定性下仍然能够提供良好的性能。

LQR的推导

1 .离散LQR

离散时间线性二次调节器(Discrete-Time Linear Quadratic Regulator, LQR)问题也可以通过动态规划来解决。在离散时间情况下,我们考虑一个线性系统和一个二次代价函数,但是所有的变量和方程都是在离散的时间步长上定义的。

问题设定

考虑一个离散时间线性系统: $$ x_{t+1} = Ax_t + Bu_t $$ 其中 \(x_t \in \mathbb{R}^n\) 是在时间 \(t\) 的状态,\(u_t \in \mathbb{R}^m\) 是在时间 \(t\) 的控制输入,\(A \in \mathbb{R}^{n \times n}\)\(B \in \mathbb{R}^{n \times m}\) 是已知的矩阵。

我们希望最小化以下二次代价函数: $$ J = \sum_{t=0}^{\infty} \left( x_t^T Q x_t + u_t^T R u_t \right) $$ 其中 \(Q \geq 0\)\(R > 0\)是给定的权重矩阵。

动态规划和Bellman方程

动态规划的核心是Bellman方程,它为我们提供了一个用于找到最优控制策略的方法。对于LQR问题,我们定义值函数 \(V_t(x_t)\) 为给定在时间 \(t\) 的初始状态 \(x_t\) 时的最优代价。Bellman方程给出了值函数满足的递归关系。

在LQR的背景下,我们可以写下以下的Bellman方程: $$ V_t(x_t) = \min_{u_t} \left( x_t^T Q x_t + u_t^T R u_t + V_{t+1}(Ax_t + Bu_t) \right) $$

解决Bellman方程

对于LQR问题,我们可以假设值函数是二次的: $$ V_t(x_t) = x_t^T P_t x_t $$ 其中 \(P_t\) 是一个待定的矩阵。

将这个形式的值函数代入Bellman方程, $$ V_t(x_t) = \min_{u_t} \left( x_t^T Q x_t + u_t^T R u_t + (Ax_t + Bu_t)^T P_{t+1} (Ax_t + Bu_t) \right) $$ 对u求导=0,找到最小化表达式的控制输入 \(u_t\),我们得到: $$ u_t^* = - (R + B^T P_{t+1} B)^{-1} B^T P_{t+1} A x_t $$

确定P矩阵

要确定矩阵 \(P_t\),我们将最优控制策略 \(u_t^*\) 代入Bellman方程,

\[ x_t^T P_t x_t= x_t^T Q x_t + u_t^T R u_t + (Ax_t + Bu_t)^T P_{t+1} (Ax_t + Bu_t) $$ 并使用我们的二次值函数形式。这将给出一个关于 $P_t$ 的递归方程,通常被称为离散时间Riccati方程: $$ P_t = Q + A^T P_{t+1} A - A^T P_{t+1} B (R + B^T P_{t+1} B)^{-1} B^T P_{t+1} A \]

通常,我们考虑一个无限时间地平线问题,其中 \(P_t\) 在所有的时间步长上都是相同的。在这种情况下,我们可以找到一个固定的矩阵 \(P\),使得: $$ P = Q + A^T P A - A^T P B (R + B^T P B)^{-1} B^T P A $$

解这个方程将给出矩阵 \(P\),进而确定了最优控制策略 \(u_t^* = - (R + B^T P B)^{-1} B^T P A x_t\)

总结

通过解决Bellman方程和相应的Riccati方程,我们可以得到离散时间LQR问题的解。这个解给出了最优控制策略,它是状态的线性反馈,并且确定了与最优代价关联的值函数。这个方法展示了动态规划是如何用于推导最优控制策略的。

2. 连续LQR

线性二次调节器(Linear Quadratic Regulator, LQR)是一个经典的最优控制问题,它涉及到一个线性系统和一个二次代价函数。我们可以使用动态规划来推导LQR的解。下面是一个简化的步骤来说明如何使用动态规划来解决一个连续时间LQR问题。

问题设定

考虑一个线性时间不变系统: $$\dot{x}(t) = Ax(t) + Bu(t) $$ 其中 \(x(t) \in \mathbb{R}^n\) 是状态,\(u(t) \in \mathbb{R}^m\) 是控制输入,\(A \in \mathbb{R}^{n \times n}\)\(B \in \mathbb{R}^{n \times m}\) 是已知的矩阵。

我们希望最小化以下二次代价函数: $$J = \int_{0}^{\infty} \left( x(t)^T Q x(t) + u(t)^T R u(t) \right) dt $$ 其中 \(Q \geq 0\)\(R > 0\) 是给定的权重矩阵。

Hamilton-Jacobi-Bellman (HJB) 方程

动态规划的核心是Hamilton-Jacobi-Bellman (HJB) 方程,它为我们提供了一个用于找到最优控制策略的方法。对于LQR问题,我们定义值函数 \(V(x)\) 为给定初始状态 \(x\) 时的最优代价。HJB方程给出了值函数满足的偏微分方程。

在LQR的背景下,我们可以写下以下的HJB方程: $$ \frac{\partial V}{\partial t} + \min_u \left( x^T Q x + u^T R u + \frac{\partial V}{\partial x}(Ax + Bu) \right) = 0 $$

解决HJB方程

对于LQR问题,我们可以假设值函数是二次的: $$ V(x) = x^T P x $$ 其中 \(P\) 是一个待定的矩阵。

将这个形式的值函数代入HJB方程,并找到最小化表达式的控制输入 \(u\),我们得到: $$ u^*(t) = -R{-1}BT \nabla_x V(x(t)) $$ $$ = -2R{-1}BT P x(t) $$

确定P矩阵

要确定矩阵 \(P\),我们将最优控制策略 \(u^*(t)\) 代入HJB方程,并使用我们的二次值函数形式。这将给出一个关于 \(P\) 的代数方程,通常被称为Riccati方程。在连续时间LQR问题中,这是一个代数Riccati方程: $$ PA + A^T P - PBR{-1}BT P + Q = 0 $$

解这个方程将给出矩阵 \(P\),进而确定了最优控制策略 \(u^*(t) = -R^{-1}B^T P x(t)\)

总结

通过解决HJB方程和相应的Riccati方程,我们可以得到LQR问题的解。这个解给出了最优控制策略,它是状态的线性反馈,并且确定了与最优代价关联的值函数。这个方法展示了动态规划是如何用于推导最优控制策略的。

HJB 方程

Hamilton-Jacobi-Bellman (HJB) 方程是最优控制理论中的一个关键方程,它描述了在给定最优策略下值函数的变化。HJB方程有连续和离散的两种形式,分别适用于连续时间和离散时间的动态系统。

连续时间HJB方程

对于连续时间的动态系统,我们通常考虑这样的形式: $$ \dot{x}(t) = f(x(t), u(t), t) $$ 其中 \(x(t) \in \mathbb{R}^n\) 是状态,\(u(t) \in \mathbb{R}^m\) 是控制输入。

在这种情况下,HJB方程通常写作: $$ \frac{\partial V}{\partial t}(x, t) + \min_u \left{ \nabla V(x, t)^T f(x, u, t) + l(x, u, t) \right} = 0 $$ 其中 \(V(x, t)\) 是值函数,\(\nabla V\) 是值函数关于状态 \(x\) 的梯度,\(l(x, u, t)\) 是每一步的代价函数。

离散时间HJB方程

对于离散时间的动态系统,我们通常考虑这样的形式: $$ x_{t+1} = f(x_t, u_t, t) $$ 其中 \(x_t \in \mathbb{R}^n\) 是状态,\(u_t \in \mathbb{R}^m\) 是控制输入。

在这种情况下,HJB方程通常写作: $$ V(x_t, t) = \min_u \left{ l(x_t, u_t, t) + V(x_{t+1}, t+1) \right} $$ 其中 \(V(x_t, t)\) 是值函数,\(l(x_t, u_t, t)\) 是每一步的代价函数。

注意

  • 在连续时间HJB方程中,我们考虑值函数 \(V\) 关于时间 \(t\) 的偏导数和关于状态 \(x\) 的梯度。
  • 在离散时间HJB方程中,我们考虑在当前时间步和下一个时间步的值函数。

在两种情况下,HJB方程提供了一个方法来计算值函数和确定最优控制策略。在实际应用中,解HJB方程可能需要数值方法,特别是对于高维系统和非线性系统。

推导过程

Hamilton-Jacobi-Bellman(HJB)方程是最优控制理论中的一个基本方程,它描述了最优控制问题的解。HJB方程可以通过变分法和最大原理推导出来,下面是一个概述:

考虑一个最优控制问题,其中我们希望最小化一个特定的性能指标(通常是代价函数):

\[ J = \int_{t_0}^{t_f} L(x(t), u(t), t) dt \]

其中 \(x(t)\) 是系统的状态,\(u(t)\) 是控制输入,\(L\) 是拉格朗日密度(代价函数),\(t\) 是时间,\(t_0\)\(t_f\) 是时间区间的起始和结束时间。

为了推导HJB方程,我们引入一个值函数 \(V(x, t)\),表示从状态 \(x\) 开始并在时间 \(t\) 结束时的最小性能指标。这个值函数满足以下动态规划方程:

\[ V(x, t) = \min_u \left\{ L(x, u, t) + \frac{\partial V(x, t)}{\partial t} \right\} \]

其中,\(\frac{\partial V(x, t)}{\partial t}\) 是值函数 \(V\) 关于时间 \(t\) 的偏导数。这个方程的物理解释是,在每个时间步,我们选择一个控制输入 \(u\) 来最小化当前代价和从下一个状态 \(x'\) 开始的最小性能指标(即值函数在 \(x'\) 处的值)。这就是为什么我们使用了最小化操作符 \(\min_u\)

接下来,我们使用变分法来推导HJB方程。对值函数 \(V\) 进行微分,并利用优化条件(即最小值条件),我们可以得到:

\[ \frac{\partial V}{\partial t} = -\min_u \left\{ L(x, u, t) + \frac{\partial V}{\partial t} \right\} \]

然后,我们可以将上述方程重写为如下形式:

\[ \frac{\partial V}{\partial t} + \min_u \left\{ L(x, u, t) + \frac{\partial V}{\partial t} \right\} = 0 \]

最后,使用最大原理(Hamilton-Jacobi 最大原理),我们得到了HJB方程:

\[ \frac{\partial V}{\partial t} + \min_u \left\{ L(x, u, t) + \nabla V(x, t)^T f(x, u, t) \right\} = 0 \]

这就是HJB方程的一般形式,其中 \(f(x, u, t)\) 是系统的动态方程,\(\nabla V(x, t)\) 是值函数 \(V\) 关于状态 \(x\) 的梯度。

总之,HJB方程通过变分法和最大原理推导而来,它是解决最优控制问题的关键方程,提供了最优控制策略和相应的最小性能指标。解HJB方程通常需要数值方法,特别是对于高维和非线性系统。

稳定性问题

https://zhuanlan.zhihu.com/p/58738073

1. 李雅普诺夫稳定

简单来说,如果平衡状态 \(x_e\)受到扰动后,仍然停留在 \(x_e\)附近,我们就称 \(x_e\) 在李雅普诺夫意义下是稳定的(Lyapunov stable)。

2 渐近稳定

如果更进一步,如果平衡状态\(x_e\) 受到扰动后,最终都会收敛到\(x_e\) ,我们就称\(x_e\) 在李雅普诺夫意义下是渐进稳定的(Asymptotically stable)。

3大范围渐近稳定

再进一步,如果平衡状态 \(x_e\)受到任何扰动后,最终都会收敛到\(x_e\) ,我们就称 \(x_e\) 在李雅普诺夫意义下是大范围内渐进稳定的(Asymptotically stable in large)