§6  补充答疑

理论深挖 · 推导细节 · 与教材的差异说明
水箱液位控制实验 · 阅读前建议先过一遍 §1~§4
问题清单

以下问题来自阅读 §1~§4 后的疑问,按章节分组:

编号来源问题
§1-Q1§1 辨识水箱系统为什么是一/二阶惯性纯滞后系统?自控中一/二阶的含义?
§1-Q2§1 §4 AICAIC 进行阶次扫描,比较的量化依据是什么?
§1-Q3§1 §5 最小二乘最小二乘辨识的理论推导、问题对象圈定,以及归一化的部分
§2-Q1§2 §1-4为什么和教材不一样?E、F、G 的项数也不一样?
§2-Q2§2 §5没看懂为什么 $\tilde A$ 是二阶,$F_j$ 有 3 项
§4-Q1§4 §2RLS 原理,对 GPC 整个推导的影响
§1-Q1  水箱系统为什么是一/二阶惯性纯滞后系统
○ 物理直觉

纯滞后:泵的驱动电流变化后,水流经管道到达水箱需要一段固定时间,这段时间内输出完全不响应。这就是纯时延 $k=24$ 步(24秒)。

惯性:水箱有容积,水位不能瞬间变化——就像电容充电,需要时间积累。这产生了"惯性"(低通滤波效应)。

自控中的阶次含义

系统的"阶次"对应传递函数分母多项式的次数,等于系统的独立储能元件数量:

阶次物理含义传递函数阶跃响应
一阶1个储能元件(水箱容积)$G(s) = \frac{K}{\tau s + 1} e^{-\theta s}$指数上升,无超调
二阶2个储能元件(如串联两个水箱,或水箱+管道惯性)$G(s) = \frac{K}{(\tau_1 s+1)(\tau_2 s+1)} e^{-\theta s}$S形上升,可能有超调

为什么 AIC 选出 na=4 而不是 na=1?

真实水箱并不是理想的一阶系统。管道、阀门、传感器滤波都会引入额外的动态,使得实际响应比纯一阶更复杂。AIC 选 na=4 是因为数据里确实有这些高阶动态。但对于控制器设计,na=1 已经捕捉了主要动态(主极点 0.9846),RLS 在线更新可以弥补模型误差。

离散时间与连续时间的对应
连续时间一阶系统极点在 $s = -1/\tau$,离散化后极点在 $z = e^{-T/\tau}$。
本实验 $a_1 = 0.9846$(极点),$T=1$s,则 $\tau = -T/\ln(0.9846) \approx 64$ 步 = 64s。
这与水箱的物理时间常数(约 1~2 分钟)吻合。
§1-Q2  AIC 阶次扫描的量化依据
★ 核心

AIC(Akaike Information Criterion,赤池信息准则)的核心思想是在拟合精度模型复杂度之间取平衡:

$$ \text{AIC} = N \ln(\hat\sigma_e^2) + 2 \cdot n_\text{params} \tag{6.1}$$
  • $N \ln(\hat\sigma_e^2)$:残差方差的对数,越小说明拟合越好(精度项)
  • $2 n_\text{params}$:参数数量的惩罚(复杂度项),防止过拟合
  • $n_\text{params} = n_a + n_b + 1$(ARX 模型的参数个数)
为什么用对数似然而不是直接用 RMSE

AIC 来自信息论,本质是最大化模型的对数似然函数。对于高斯噪声假设下的 ARX 模型,对数似然正比于 $-N\ln(\hat\sigma_e^2)$,所以最小化 AIC 等价于在精度和复杂度之间找最优平衡。

直接用 RMSE 比较不同阶次的模型会偏向高阶(参数越多 RMSE 越小),AIC 的惩罚项纠正了这个偏差。

量化依据:AIC 差值 $\Delta\text{AIC} = \text{AIC}_i - \text{AIC}_\text{min}$

  • $\Delta\text{AIC} < 2$:两个模型几乎等价,选简单的
  • $\Delta\text{AIC} \in [2, 10]$:较弱的证据支持更复杂的模型
  • $\Delta\text{AIC} > 10$:强证据支持更复杂的模型

本实验 na=1 vs na=4 的 $\Delta\text{AIC} = -21843 - (-21452) = -391$,差距极大,说明 na=4 在统计上显著优于 na=1。但我们选 na=1 是出于工程考虑(简单、便于调试),不是统计最优。

§1-Q3  最小二乘辨识的推导与归一化
★ 核心

问题圈定:已知 $N$ 组输入输出数据 $\{u(t), y(t)\}$,假设系统满足 ARX 模型:

$$ y(t) = \varphi(t)^T \theta + e(t) \tag{6.2}$$

其中 $\varphi(t) = [-y(t-1), u(t-k)]^T$(na=1, nb=0),$\theta = [a_1, b_0]^T$ 是待估参数,$e(t)$ 是白噪声。

矩阵形式:把所有时刻堆叠:

$$ \mathbf{Y} = \mathbf{\Phi}\,\theta + \mathbf{e}, \quad \mathbf{Y} \in \mathbb{R}^M,\; \mathbf{\Phi} \in \mathbb{R}^{M \times 2} \tag{6.3}$$

最小二乘目标:最小化残差平方和:

$$ \min_\theta \|\mathbf{Y} - \mathbf{\Phi}\theta\|^2 \tag{6.4}$$

求导令其为零(正规方程):

$$ \frac{\partial}{\partial\theta}\|\mathbf{Y} - \mathbf{\Phi}\theta\|^2 = -2\mathbf{\Phi}^T(\mathbf{Y} - \mathbf{\Phi}\theta) = 0 \tag{6.5}$$ $$ \Rightarrow \mathbf{\Phi}^T\mathbf{\Phi}\,\hat\theta = \mathbf{\Phi}^T\mathbf{Y} \tag{6.6}$$ $$ \Rightarrow \hat\theta = (\mathbf{\Phi}^T\mathbf{\Phi})^{-1}\mathbf{\Phi}^T\mathbf{Y} \tag{6.7}$$
为什么归一化后要重新辨识

设原始空间的模型为 $y = a_1 y_{-1} + b_0^\text{raw} u_{-k}$,归一化后 $y_n = y/Y_R$,$u_n = u/U_R$(简化,忽略偏移),则:

$$ y_n \cdot Y_R = a_1 \cdot y_{n,-1} \cdot Y_R + b_0^\text{raw} \cdot u_{n,-k} \cdot U_R$$ $$ y_n = a_1 \cdot y_{n,-1} + \underbrace{b_0^\text{raw} \cdot \frac{U_R}{Y_R}}_{b_0^\text{norm}} \cdot u_{n,-k} \tag{6.8}$$

所以 $b_0^\text{norm} = b_0^\text{raw} \times U_R/Y_R = 0.0055 \times 16/3.634 \approx 0.0242$,与直接在归一化空间辨识的结果 0.02436 吻合。

$a_1$ 不变,因为它是 $y/y$ 的比值,量纲相消。

§2-Q1  为什么和教材不一样?E/F/G 项数不同?
○ 对照教材 §5.2~§5.3

教材(第五章 §5.2)的 CARIMA 模型式(5.1):

$$ A(q^{-1})\Delta y(t) = B(q^{-1})\Delta u(t-1) + C(q^{-1})\xi(t) \tag{教材5.1}$$

丢番图恒等式式(5.3):$1 = E_j(q^{-1})\tilde A(q^{-1}) + q^{-j}F_j(q^{-1})$,其中 $\tilde A = A\Delta$。

教材 §5.3 式(5.9)~(5.11) 给出的 $F_j$ 初值($j=1$):

$$ F_1(q^{-1}) = (1+a_1) + (a_1+a_2)q^{-1} + \cdots + (a_{n_a-1}+a_{n_a})q^{-(n_a-1)} + a_{n_a}q^{-n_a} \tag{教材5.10}$$

这里 $F_1$ 有 $n_a+1$ 项($q^0$ 到 $q^{-n_a}$),与我们代码一致。

看起来不一样的原因

教材式(5.10) 的系数写法是 $(a_{i-1}+a_i)$,而我们代码用的是 $(\tilde A_i - \tilde A_{i+1})$。两者等价,只是展开方式不同:

$$ \tilde A_i - \tilde A_{i+1} = (a_{i-1} - a_i) - (a_i - a_{i+1}) \quad \text{(对 } \tilde A = A\Delta \text{ 展开后)}$$

教材式(5.18) 的递推:$f_j^i = f_{j-1}^{i+1} - e_{j-1}(a_{i+1}-a_i)$,与我们代码完全一致。

结论:代码与教材完全一致,只是初值的书写形式不同。

$G_j$ 的长度:教材式(5.16) $G_j = E_j(q^{-1})B(q^{-1})$,长度 $= (j-1) + (n_b+1) = n_b+j$。本实验 $n_b=0$,所以 $G_j$ 长度 $= j$,与教材一致。

教材定义本实验(na=1, nb=0)
$\deg E_j$$j-1$$j-1$(代码不显式存储)
$F_j$ 项数$n_a+1$(对 $\tilde A$ 递推)$n_a+1 = 2$(但存3项,含 $q^{-2}$ 项)
$G_j$ 长度$n_b+j$$j$($n_b=0$)
§2-Q2  为什么 $\tilde A$ 是二阶,$F_j$ 有 3 项
★ 核心 · 对照教材 §5.2

教材 §5.2 式(5.2) 明确写出:$\tilde A(q^{-1}) = A(q^{-1})\Delta(q^{-1})$,阶次 $= n_a + 1$。

逐步拆解(na=1):

$A = 1 + a_1 q^{-1}$(一阶,$a_1 = -0.9846$),$\Delta = 1 - q^{-1}$(一阶),则:

$$ \tilde A = A \cdot \Delta = (1 + a_1 q^{-1})(1 - q^{-1}) = 1 + (a_1-1)q^{-1} - a_1 q^{-2} \tag{6.9}$$

代入数值:$\tilde A = [1,\ -1.9846,\ 0.9846]$,阶次 $= 2$,有 3 个系数

丢番图恒等式中 $F_j$ 的阶次

恒等式 $1 = E_j \tilde A + q^{-j} F_j$ 中,两边次数平衡要求:

  • $\deg(E_j \tilde A) = (j-1) + (n_a+1) = j + n_a$
  • $\deg(q^{-j} F_j) = j + \deg F_j$
  • 两边最高次相等:$\deg F_j = n_a$

$na=1$ 时 $\deg F_j = 1$,即 $F_j$ 有 $q^0$ 和 $q^{-1}$ 两项,系数向量长度 $= n_a + 1 = 2$。

但代码里存了 3 项($f_j^0, f_j^1, f_j^2$),这是因为递推公式式(5.18) 中 $f_j^{n_a} = e_{j-1} \cdot a_{n_a}$ 用到了 $\tilde A$ 的第 $n_a+1$ 个系数(即 $\tilde A_2 = a_1 = 0.9846$),所以实现时把 $F_j$ 扩展为与 $\tilde A$ 等长(3项),第3项 $f_j^2$ 对应 $q^{-2}$ 系数。

自由响应为什么需要 $y(t-2)$

$Y_1[j] = F_j(q^{-1}) y(t) = f_j^0 y(t) + f_j^1 y(t-1) + f_j^2 y(t-2)$。$\tilde A$ 是二阶,系统的"记忆"深度是 2 步,所以自由响应需要 $y(t), y(t-1), y(t-2)$ 三个值。

规律:$F_j$ 存储长度 $= n_a + 2$($= \deg\tilde A + 1$),自由响应需要 $n_a+2$ 个历史 $y$ 值。

§4-Q1  RLS 原理及对 GPC 推导的影响
★ 核心 · 对照教材 §5.1

教材 §5.1 图1 给出了自控正控制的基本框图:辨识器(在线估计模型参数)+ 设计器(根据当前参数设计控制律)+ 控制器(执行控制量)。RLS 就是辨识器的具体实现。

RLS 的本质:批量最小二乘 $\hat\theta = (\Phi^T\Phi)^{-1}\Phi^T Y$ 的递推版本。利用矩阵求逆引理,每来一个新数据点只做增量更新,不重新解整个方程组:

$$ \mathbf{K}(t) = \frac{\mathbf{P}(t-1)\varphi(t)}{\lambda + \varphi^T(t)\mathbf{P}(t-1)\varphi(t)} \tag{6.10}$$ $$ \hat\theta(t) = \hat\theta(t-1) + \mathbf{K}(t)\left[y(t) - \varphi^T(t)\hat\theta(t-1)\right] \tag{6.11}$$ $$ \mathbf{P}(t) = \frac{1}{\lambda}\left[\mathbf{P}(t-1) - \mathbf{K}(t)\varphi^T(t)\mathbf{P}(t-1)\right] \tag{6.12}$$

其中 $\mathbf{P}(t)$ 是参数估计的协方差矩阵,$\lambda$ 是遗忘因子。

遗忘因子 λ 的作用

带遗忘因子的 RLS 等价于对历史数据指数加权:

$$ \min_\theta \sum_{i=1}^{t} \lambda^{t-i} \left[y(i) - \varphi^T(i)\theta\right]^2 \tag{6.13}$$

$\lambda < 1$ 时旧数据权重指数衰减,有效窗口 $N_\text{eff} = 1/(1-\lambda)$。$\lambda=0.995$ 对应 200 步有效窗口,适合水箱这种慢时变系统。

RLS 对 GPC 推导链的影响

教材 §5.2~§5.4 的 GPC 推导假设 $A, B$ 已知固定。引入 RLS 后,每步 $\hat\theta$ 更新,整个推导链都要重算:

推导步骤固定参数 GPC自校正 GPC(+RLS)
①构造 $\tilde A = A\Delta$离线一次每步用最新 $\hat a_1$ 重算
②丢番图递推(§5.3)离线预计算 $F_j, G_j$每步在线递推
③自由响应 $Y^1$(§5.4)用固定 $F_j$ 计算用当步 $F_j$ 计算
④控制律 $\delta$(§5.5)用固定 $G_2$, denom用当步 $G_2$, denom
⑤RLS 更新用 $y(t)$ 更新 $\hat\theta$,供下步用
为什么 RLS 更新放在控制律计算之后

控制律用的是"当前对系统的最佳估计",然后施加控制量 $u(t)$,等到下一步观测到 $y(t+1)$ 后再更新参数。如果先更新参数再计算控制律,会用到还没发生的观测,逻辑上不对。

本实验的顺序:读 $y(t)$ → 用旧 $\hat\theta$ 算控制律 → 输出 $u(t)$ → 用 $y(t)$ 更新 $\hat\theta$ → 等待下一步。