想象你是一位新手厨师,正在学习做菜。第一天,你严格照着菜谱,每种调料精确到克,火候时间分秒不差——这就像传统控制里的“开环控制”,只凭计划行事。 第二天,你学会尝菜了——太咸就加水,太淡就加盐——这就像“反馈控制”,根据实际结果调整动作。 但第三天,问题来了:你换了一个厨房,炉灶火力和原来的完全不同。按照昨天的经验,菜总是炒糊或者不熟。这时候,一位老厨师告诉你:“好厨师不是背菜谱,而是能感知环境变化、随时调整策略的人。” 这句话,就是自适应控制的精髓。一个自适应控制器,就像一位经验丰富的厨师,它不仅会做菜,还能在一次次的尝试中感知炉灶的脾气(参数辨识)、调整自己的火候策略(模型参考自适应),并且确保整个过程不会翻车(Lyapunov稳定性与鲁棒性分析)。 在这篇文章里,我们将用“学做菜”这条主线,从零开始理解自适应控制。你会发现,它并没有想象中那么高深——本质上,它就是一种“不断学习、不断调整、确保稳定”的智能策略。而当你读完这篇文章,你将不仅看懂自适应控制的原理,还能理解它在机器人、自动化领域中的真实应用,以及如何在实际工作中做出合理的设计权衡。
自适应控制是机器人在未知环境中稳定作业的核心能力。掌握它,你就能设计出在负载变化、模型失配时依然可靠的智能系统,这是从“能用”走向“好用”的关键一步。
可视化演示
动态演示深入理解自适应控制的核心机制,通过入门/进阶/实战/优化四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
深入理解自适应控制:自适应控 自适应控制基本概念与分类 模型参考自适应MRAC设计 核心机制可视化 深入理解自适应控制整体架构与关键组件
自适应控制概述
假设你刚入职一家餐厅的后厨,主厨递给你一本厚厚的菜谱,说:“照着这个做。”但很快你发现,菜谱上写的“中火”根本没法执行——每个灶台的火力都不同。你问旁边的老师傅,他头也不抬地说:“别管菜谱,先看看灶台什么样的。”你蹲下来观察火了五分钟,又颠了两下锅感受重量,然后调整了旋钮——这就是一个完整的自适应控制过程。
控制理论解决的从来不只是“如何让输出等于输入”,而是“如何在环境变化时依然让输出等于输入”。传统反馈控制好比“凭嘴巴尝味道再调整”,它能容忍一定误差,但前提是你对系统的了解基本正确——菜谱大方向没错。可当你连食材、灶台、锅的脾气都拿不准时,尝了也白尝。这时候,你需要的是——自适应控制。
自适应控制的核心逻辑可以拆成三个动作:感知(参数辨识)、决策(找出差距)、调整(更新控制策略)。它不是在控制一个已知的系统,而是在控制一个“正在被认识”的系统。从数学语言来说,自适应控制器的结构可以写为:
所以自适应控制与传统反馈控制的根本区别在于:反馈控制是“用固定策略纠正误差”,自适应控制是“先认识系统,再制定策略”。它把“学习”直接放进了控制器里。这正是它在机器人负载变化、无人机飞行条件改变等场景中不可或缺的原因——因为在这些场景里,系统的真实参数你就是没法事先知道。
- 控制信号$u(t)$ 是当前时刻施加给系统的控制量,比如电机的电压、加热器的功率。它决定了系统下一步怎么走。
- 估计参数$\hat{\theta}(t)$ 顶部的小帽子表示“估计值”,它不是真实参数,而是我们通过观测数据不断猜出来的近似值。厨师对灶台火力的判断就相当于它。
- 特征向量$\phi(t)$ 是当前系统的状态特征,包含了位置、速度等可测量的信息,相当于“锅里的菜现在什么状态”。
- 二者相乘$u(t)=\hat{\theta}(t)^\mathrm{T}\phi(t)$ 的含义是“根据你目前的认识,给这个状态施加相应的力”。认识变了,出力方式就变。
模型参考自适应
回到后厨的场景。餐厅有一个规矩:每道菜出锅前,必须对照墙上挂着的一张“标准成品图”——图上的菜颜色金黄、摆盘精致。这道菜做出来应该什么样,是由这张图决定的。但是在实际操作中,新手厨师手一抖,火大了,菜焦了;手一轻,火小了,菜生。怎么快速调整?答案是:不停地把自己的菜和标准图做对比,看差在哪里,然后调整。
这就是模型参考自适应控制(MRAC)的核心思想。它把“理想的控制表现”写进一个数学模型里,叫作参考模型。真实系统在运行中产生的输出,会和参考模型的输出之间存在一个误差。这个误差就像“你的菜和标准图的差异”,而自适应律的作用就是:根据这个误差的大小和方向,实时调整控制器参数,让真实系统一步步向参考模型靠拢。
用数学语言来描述:参考模型给出期望的动态行为
而真实系统有自己的动态方程。由于参数未知,真实系统输出 $\small y$ 与参考模型输出 $\small y_m$ 之间存在误差 $\small e = y - y_m$。自适应律的目标就是让 $\small e$ 趋向于零:
在整个 MRAC 结构中,系统同时运行着两个环路:内环是常规的反馈控制,外环是自适应律的参数更新。外环相当于“老师傅在旁边看你做菜,不断提醒你火大了、火小了”,而内环是你根据提醒调整手上动作。两者的配合使整个系统既能快速响应,又能持续学习。MRAC 特别适合飞行器控制、机械臂抓取这类“模型大体已知但参数不确定”的场景。
- 参考模型状态$x_m$ 是参考模型的状态,比如理想情况下机器人手臂的角度和角速度。它描述“应该怎么动”。
- 系统矩阵$A_m$ 是参考模型的系统矩阵,决定了模型的动态特性。相当于规定“菜应该逐渐变成标准图上的样子”,这个“逐渐”有多快,由它决定。
- 输入信号$r(t)$ 是外部参考输入,比如用户设定的目标位置。它驱动参考模型运行。
- 误差信号$e = y - y_m$ 是实际输出与参考输出的差。它是“菜和标准图的差距”,是整个自适应过程的燃料。
- 自适应增益$\Gamma$ 是一个正定矩阵,它决定了参数调整的“步幅”。$\Gamma$ 太大,调整过猛;$\Gamma$ 太小,学得太慢。
参数辨识基础
有经验的厨师有个本事:看到一块牛肉,掂一掂,就知道大约多重、大概需要煮多久。这个“看一眼就能估算”的能力不是天生的,而是无数次尝试训练出来的。控制系统中也有类似的问题:系统的物理参数(质量、阻尼、惯性矩)往往未知,我们只能通过测量输入输出数据,反向推断这些参数的取值。这个“由数据反推参数”的过程,就叫参数辨识。
最经典的参数辨识工具是最小二乘法。它的思路非常朴素:我们假设系统遵循某个带未知参数 $\theta$ 的模型,然后找一组参数值,使得模型预测输出与实测输出之间的误差平方和最小。用公式表达就是:
在实际的自适应控制系统中,数据是源源不断到达的——每一次控制指令发出后,都会收到新的传感器反馈。这时候我们不可能等积累完所有数据再做一次最小二乘,而是要用递推最小二乘法(RLS),每来一个新数据就更新一次参数估计:
参数辨识是整个自适应控制系统的“眼睛”。没有它,控制器就像一个蒙着眼睛的厨师,只能瞎猜。有了它,控制器才能在运行中不断修正对系统的认知,从而为后续的自适应调整提供依据。值得注意的是,辨识效果的好坏很大程度上取决于激励条件——如果系统的参考输入太“温和”,数据里包含的信息量不够,参数就难以被准确辨识。这就好比一道菜如果从头到尾都用一个火候一种调料,你是永远无法判断哪些调料起作用的。
- 旧估计$\hat{\theta}_k$ 是第 $k$ 步的参数估计值,即当前对系统参数的认知。
- 预测残差$y_{k+1} - \phi_{k+1}^\mathrm{T}\hat{\theta}_k$ 是第 $k+1$ 个新样本到来时,旧模型给出的预测误差。
- 增益加权$K_k$ 乘以残差,决定“这次学多少”。如果新数据的信息量大,$K_k$ 就大;如果新数据比较普通,$K_k$ 就小。
- 更新旧估计$\hat{\theta}_{k+1} = \hat{\theta}_k + \text{修正量}$,从旧估计出发,向新数据指出的方向迈一小步。
Lyapunov稳定性
假设你手里捧着一碗热汤,手一抖,汤在碗里晃荡起来。你当然希望这碗汤慢慢平静下来,而不是越晃越厉害最后洒一地。稳定性,就是描述“扰动之后系统能不能恢复平静”的概念。在自适应控制中,稳定性是最重要的底线——你可以学得慢,可以辨识得不准,但绝对不能失控。
1892年,俄国数学家和力学家李雅普诺夫提出了一套判断稳定性的方法,它的核心思想特别巧妙:不要去解系统的运动方程,而是构造一个“能量函数”。这个能量函数 $\small V(x)$ 是系统状态 $\small x$ 的标量函数,它必须满足两个条件:正定(状态非零时能量为正)和径向无界(状态越远能量越大)。如果这个能量函数沿着系统轨迹的时间导数始终小于等于零,那么系统就是稳定的。
在模型参考自适应控制中,李雅普诺夫方法不只是用来“验证”稳定性的,更是用来设计自适应律的工具。回顾前面的自适应律 $\dot{\hat{\theta}} = -\Gamma e^\mathrm{T} P B_m$,这个形式看似是直接拍脑袋想出来的,但实际上,它恰恰是通过选取一个包含状态误差 $\small e$ 和参数误差 $\small \tilde{\theta}$ 的二次型能量函数,然后要求其导数负定而推导出来的。用公式看就是:
这种优雅的自洽性,是李雅普诺夫方法最迷人的地方——你不是先设计控制器、再验证稳定性,而是先用稳定性要求确定控制器的形式。回到汤碗的比喻:你不需要知道汤里每个水分子的运动轨迹,只需要确认“总能量在下降”,就能确信汤会平静下来。这种从“细节分析”到“整体洞察”的思维跃迁,正是控制理论中最重要的顿悟时刻。
- 跟踪误差能量$e^\mathrm{T} P e$ 是误差向量的加权二次型,$P$ 是正定矩阵,用于度量跟踪误差的“大小”。
- 参数误差能量$\tilde{\theta}^\mathrm{T}\Gamma^{-1}\tilde{\theta}$ 是参数误差 $\tilde{\theta} = \hat{\theta}-\theta^*$ 的加权二次型,度量“对系统认识偏差的大小”。
- 能量总和整个 $V$ 函数把“输出层面”和“参数层面”的偏差统一度量。两者都收敛,$V$ 才趋近于零。
鲁棒性分析
你辛辛苦苦按照“自适应控制”的菜谱学会了一道菜,自信满满。但有一天,餐厅的供应商突然换了品牌,盐的咸度完全不同;厨房里新装了一台大功率烤箱,导致周围温度环境全变了;甚至你的手臂可能因为前一天的搬货受了伤,握锅的力度都变了。这些变化,不是你靠“自学”能消除的——它们会持续存在,并且无法通过辨识来准确建模。面对这种情况,你的菜还能保持水准吗?
这就是鲁棒性要回答的问题:当系统存在未建模动态、外部扰动或参数摄动时,控制器能否继续保持稳定性和性能。如果说自适应是“主动学习未知参数”,那么鲁棒性就是“被动抵抗未知扰动”。一个标准的鲁棒性度量来自频域分析——增益裕度和相位裕度。它们分别衡量:当系统增益变化多少倍、或相位延迟变化多少度时,系统才会从稳定变成不稳定。
自适应控制与鲁棒控制之间存在着深刻的张力:自适应试图“学习并消除”不确定参数的影响,但对于学习不动的那些不确定因素(比如高频动态),它必须依靠鲁棒性来兜底。有经验的工程师会综合使用两种策略——用自适应处理“慢变的、可建模的”参数变化,用鲁棒设计(如 $\small H_\infty$ 控制、滑模控制)压制“快变的、不可建模的”扰动。这就像大厨既会通过尝菜调整口味(自适应),也懂得用稳定的手法和工具保证基本功不出错(鲁棒)。
实际上,自适应控制本身也可能损害鲁棒性——如果自适应增益设置得过高,控制器会对噪声和干扰过分敏感,甚至产生参数漂移。这就是为什么工程上要在自适应环路中加入死区(误差小于一定阈值时不更新参数),或者用σ-修正在参数更新中加入阻尼项。这些技巧,都是在对“适应能力”和“抗扰动稳定”之间做出平衡。
- 幅值裕度$G_m$ 是在相位穿越频率 $\omega_c$ 处,系统开环幅值的倒数。它告诉你系统容忍增益增大的余量还有多大。
- 相位裕度$\phi_m$ 是在增益穿越频率 $\omega_p$ 处,系统相位与 $-180^{\circ}$ 的距离。它衡量系统容忍相位延迟的余量。
设计权衡取舍
故事讲到这儿,你已经明白了自适应控制的全部核心概念。但在真实工程中,最让工程师头疼的问题往往不是“怎么实现”,而是“怎么取舍”。我们回到餐厅后厨,进行一次终极面试:主厨问你,如果灶台的火力一直在缓慢变化,同时客人催得急,你怎么兼顾“学得快”和“做得稳”?
这一问题背后,是自适应控制设计中三组核心权衡:适应速度 vs 噪声敏感度、辨识精度 vs 计算成本、模型复杂度 vs 工程可落性。
工程实践中的权衡原则可以总结为三条:第一,先保稳定,再谈性能——一个快速但不稳定的自适应系统比一个慢速但稳定的系统危险得多;第二,能辨识的用自适应,不能辨识的用鲁棒——把模型结构已知的部分交给自适应律,把模型结构未知的部分交给鲁棒设计;第三,简化模型时要保留核心动态——过度简化会导致辨识结果与真实系统严重错位,过度精确则会导致计算负担过大、实时性不足。
这三原则呼应了本文开篇的比喻:好的厨师既不会被菜谱束缚,也不会完全抛弃基本功。自适应控制的核心智慧,在于知道什么该学、什么该防、什么该简化。掌握这些权衡,你就能在实际项目中做出合理的控制架构设计,让机器人在负载与动力学变化环境下依然稳定高效地工作。
- 自适应增益$\gamma$ 增益就是“学习步长”。$\gamma$ 大,参数更新快,适应能力强,但同时对测量噪声的敏感度也会放大。
- 修正阻尼$\sigma$ 修正项是一个衰减项,在参数更新时施加“阻尼”。它牺牲了部分适应速度,换取了参数更新的稳定性。
AI 应用场景
机器人负载自适应抓取
阶段:控制策略部署与在线适应
解决的问题:传统机器人在抓取不同重量的物体时,如果控制器参数固定,要么响应过慢、要么产生剧烈震荡。工程师需要花费大量时间对不同负载工况做实验标定,效率低且泛化能力差。自适应控制通过在线辨识负载惯量并实时调整增益,让机器人“自动学会”适应不同负载。
具体案例:某物流分拣中心的机械臂需要处理 0.5kg 到 25kg 的包裹。采用模型参考自适应控制后,机械臂在每次抓起新包裹时,通过前几秒的运动数据快速辨识负载参数,自动调整控制增益。部署后,平均抓取周期缩短 20%,因负载突变导致的停机事故减少了 90%。
无人机飞行姿态自适应调整
阶段:模型不确定条件下的在线参数辨识
解决的问题:无人机在空中会受到风力、载重变化、电池电压下降等不可预知因素的影响。固定 PID 控制器很难同时保证悬停精度和快速机动性。通过参数辨识实时估计当前环境下的气动参数,并动态更新控制律,使无人机在多种气象条件下保持稳定悬停。
具体案例:某工业巡检无人机在跨江大桥检测任务中,需要承受 6 级阵风干扰。控制系统中内置递推最小二乘辨识模块,持续估计风扰力矩,并自适应调整姿态环参数。实测悬停位置误差从 2.3m 降至 0.4m,任务成功率从 72% 提升至 98%。
Python 演示
# -*- coding: utf-8 -*-"""模型参考自适应控制(MRAC)与固定参数控制的对比演示"""import mathimport random class MRACController: """带sigma修正的模型参考自适应控制器""" def __init__(self, gamma=0.5, sigma=0.01, dt=0.01): self.gamma = gamma self.sigma = sigma self.dt = dt self.theta_hat = 0.0 def update(self, ref_out, plant_out): """根据参考输出与实际输出的误差更新参数""" error = ref_out - plant_out correction = self.gamma * error damping = self.sigma * self.theta_hat self.theta_hat += correction - damping return self.theta_hat class FixedController: """固定参数控制器(对照实验组)""" def __init__(self, theta_fixed=1.0): self.theta_fixed = theta_fixed def update(self, ref_out, plant_out): return self.theta_fixed def plant_step(plant_prev, control_force, true_param): """一阶惯性系统: x(k+1) = a*x(k) + b*u(k)""" a = 0.6 b = true_param return a * plant_prev + b * control_force def simulate(controller, true_param, num_steps=500): """运行一阶系统仿真,返回每一步的输出序列与参考序列""" plant = 0.0 ref = 0.0 outputs = [] references = [] for k in range(num_steps): if k < 200: ref = 1.0 else: ref = 2.5 plant = plant_step(plant, ref, true_param) ctrl = controller.update(ref, plant) plant = plant_step(plant, ctrl, true_param) outputs.append(plant) references.append(ref) if 100 < k < 150: plant += random.uniform(-0.1, 0.1) return references, outputs def main(): true_param = 1.8 mrac = MRACController(gamma=0.8, sigma=0.05) fixed = FixedController(theta_fixed=1.0) refs, mrac_out = simulate(mrac, true_param) _, fixed_out = simulate(fixed, true_param) mrac_err = sum(abs(r - o) for r, o in zip(refs, mrac_out)) / len(refs) fixed_err = sum(abs(r - o) for r, o in zip(refs, fixed_out)) / len(refs) print("=== MRAC vs 固定参数控制对比 ===") print("真实系统参数: %.1f" % true_param) print("MRAC平均绝对误差: %.4f" % mrac_err) print("固定参数平均绝对误差: %.4f" % fixed_err) print("MRAC参数估计最终值: %.4f" % mrac.theta_hat) if mrac_err < fixed_err: print("结论: 自适应控制显著优于固定参数控制") else: print("结论: 固定参数控制在此场景下表现更优") if __name__ == "__main__": main()
class MRACController:定义了模型参考自适应控制器,内部维护可更新的参数估计self.theta_hat。error = ref_out - plant_out计算参考模型输出与实际输出的误差,这是驱动参数更新的“燃料”。self.theta_hat += correction - damping参数更新规则:误差推动学习,σ 阻尼项防止漂移。def plant_step(...)定义被控对象的动态方程,true_param是系统的真实物理参数。plant = plant_step(plant, ref, true_param)先用参考输入直接驱动系统,模拟“开环猜测”的效果。ctrl = controller.update(ref, plant)控制器根据误差给出控制力,形成闭环。for k in range(num_steps)仿真循环,按时间步推进系统演化。mrac_err = sum(abs(...))计算平均绝对误差,用数值对比说服力更强。if mrac_err < fixed_err:用数值结论判断自适应控制是否更优。
常见误区
误区“自适应控制听起来更高级,所以不管什么系统我都应该用自适应控制,反馈控制已经过时了。”
正解自适应控制是在反馈控制的基础上增加了“参数在线更新”机制,它的优势体现在系统参数持续变化或未知的场景中。对于模型准确、参数稳定的系统,经典 PID 控制表现良好且计算量小、可靠性高。自适应控制需要持续激励、在线计算,反而可能引入噪声敏感和参数漂移问题。就像一位厨师不会在每天做同一道菜时反复调整配方——只有食材变化了才需要重新校准。
为何常见:对自适应控制“越先进越好”的直觉,以及看多了自适应控制演示中“奇迹般收敛”的曲线,容易让人忽略它的适用边界。
误区“辨识算法输出的估计值 $\hat{\theta}$ 应该等于系统的真实物理参数 $\theta^*$,否则就是算法出错了。”
正解参数辨识的目标是让模型输出拟合系统输出,而非还原物理量本身。由于系统存在噪声、未建模动态、以及激励不充分等因素,估计值往往是“对模型预测有用的虚值”,而非物理意义上真实的参数。当输入激励不具备丰富性时,不同参数组合可能产生几乎相同的输出,此时辨识结果严重偏离真实值也是正常的。和厨师估锅的重量一样——他不需要知道精确克数,只需要知道“这把力够不够”。
为何常见:“识别”二字的日常语义带有“还原真相”的暗示,而控制领域的识别本质上是“行为拟合”,两者目标不同。
误区“自适应控制学得越快来适应新环境,所以我应该把自适应增益 $\Gamma$ 设得很大。”
正解自适应增益太大,参数估计会对测量噪声过度敏感,产生高频抖动甚至参数漂移,导致控制效果恶化。增益太小则收敛太慢,无法及时应对参数变化。工程中通常需要在“适应速度”与“噪声抑制”之间做折中,甚至引入死区或 σ-修正来增强鲁棒性。就像厨师学新菜,一次放盐太猛就可能毁掉整锅菜,正确做法是“小步快跑,多次微调”。
为何常见:人们习惯认为“越快越好”是普遍规律,忽略了控制系统中“快”与“稳”常常相互矛盾的本质。
误区“只要找到了李雅普诺夫函数且 $\dot{V} \leq 0$,系统就一定收敛到期望状态。”
正解$\dot{V} \leq 0$ 只保证系统不会发散,但不保证一定收敛到平衡点——可能存在极限环等不收敛但也不发散的情况。要保证渐近收敛,需要更严格的条件(如 LaSalle 不变集原理或 $\dot{V}$ 的严格负定性)。这就像确认水温不再升高,不等于它一定会降到室温——也许它只是稳定在一个较高的温度上。
为何常见:“能量不增加”的直觉容易让你误以为能量一定会降到最低点,忽略了“卡在局部平台”的可能性。
误区“参数辨识必须在持续的外部激励下才能工作,实际系统中很难满足,所以参数辨识没什么用。”
正解持续激励条件(PE 条件)是保证参数估计收敛到真值的充分条件,但如果目标只是让输出跟踪误差足够小,那么辨识本身不需要严格收敛。自适应控制的精髓在于“输入输出层面”的目标达成,而非“参数层面”的真理发现。许多实际应用(如机器人负载辨识)中,短暂而充分的激励已经足够让系统性能大幅改善。就像你不需要完全摸清一个人的全部性格,也能和他愉快地共事。
为何常见:对 PE 条件的过分关注让初学者忘记了自适应控制的最终目标是输出跟踪,而非参数复原。
面试题
Q1. 自适应控制与经典反馈控制最本质的区别是什么?
- A.自适应控制无需传感器反馈
- B.自适应控制能在线更新控制器参数← 正确答案
- C.自适应控制永远保持稳定
- D.自适应控制不使用数学模型
答案:B。经典反馈控制使用固定参数策略纠偏,而自适应控制通过参数辨识和自适应律在线调整控制器参数,即“边运行边学习”。选项 B 准确刻画了这一核心区别。A 错误,自适应依然依赖反馈; C 是理想化误区; D 错误,自适应控制以模型为设计基础。
Q2. 模型参考自适应控制中的“参考模型”起什么作用?
- A.提供系统的真实参数值
- B.定义期望的动态响应行为← 正确答案
- C.消除系统的所有外部扰动
- D.替代控制器完成控制任务
答案:B。参考模型定义了系统“应该怎样表现”,即理想动态响应,控制器目标是让真实系统输出向参考模型输出靠拢。参考模型不直接参与控制,参数估计仍需在线辨识,所以 A/C/D 均不对。
Q3. 在自适应律 $\dot{\hat{\theta}} = -\Gamma e^\mathrm{T} P B_m$ 中,$\Gamma$ 的作用是什么?
- A.保证系统稳定的状态矩阵
- B.调节参数更新速度的增益← 正确答案
- C.测量系统输出的传感器
- D.决定参考模型的结构形式
答案:B。$\Gamma$ 是正定自适应增益,控制参数估计的更新步长。$\Gamma$ 越大更新越快,但噪声敏感度也随之增大。A 是 $A_m$ 的角色,C 是硬件,D 与 $\Gamma$ 无关。
Q4. 李雅普诺夫函数 $V(x)$ 为正定且 $\dot{V}(x) \leq 0$,可以推出什么结论?
- A.系统状态必然收敛到原点
- B.系统是稳定的但未必渐近收敛← 正确答案
- C.系统的能量必然持续增加
- D.参考模型输出必然等于实际输出
答案:B。$\dot{V} \leq 0$ 保证系统不发散,即李雅普诺夫意义下的稳定,但不排除极限环等非收敛情形。若要保证渐近收敛,还需 $\dot{V}$ 严格负定或借助 LaSalle 不变集原理。A 过于绝对,C 正好说反,D 不是李雅普诺夫分析的结论。
Q5. 最小二乘参数辨识的核心目标是什么?
- A.让所有采样点都落在模型曲线上
- B.让模型预测误差平方和最小← 正确答案
- C.让系统输出永远等于参考输入
- D.让辨识出的参数绝对正确
答案:B。最小二乘通过最小化预测误差平方和来寻找最优参数,是“拟合优度”的评价标准。A 是过拟合状态,并非目标; C 是控制目标而非辨识目标; D 忽略了辨识的本质是“行为拟合”而非“真相还原”。
Q6. 下列关于自适应控制的说法,正确的有哪些?
- A.自适应控制需要在线获取系统信息← 正确答案
- B.参数辨识不需要传感器数据
- C.自适应增益过大会导致噪声敏感← 正确答案
- D.自适应控制可以完全规避鲁棒性问题
答案:AC。A 正确,自适应依赖在线数据驱动参数更新。C 正确,自适应增益过大会放大噪声。B 错误,辨识必须有测量数据; D 错误,自适应控制本身也会遇到未建模动态问题,依然需要鲁棒分析。
Q7. 关于递推最小二乘(RLS)的描述,正确的有哪些?
- A.每来一个新样本就更新一次参数估计← 正确答案
- B.增益 $K_k$ 决定了新信息对旧估计的影响程度← 正确答案
- C.RLS 得到的参数估计一定等于真实物理参数
- D.输入信号不丰富时 RLS 参数收敛会受影响← 正确答案
答案:ABD。A 是递推的本质; B 正确,$K_k$ 是修正增益; D 正确,缺乏充分激励时参数不可辨识。C 错误,辨识结果不一定等于真实物理参数,只是行为拟合的最优解。
Q8. 鲁棒性分析中,相位裕度 $\phi_m$ 衡量的是什么?
- A.系统容忍增益增加的余量
- B.系统容忍相位延迟的余量← 正确答案
- C.参数辨识的收敛速度
- D.自适应增益的调节范围
答案:B。相位裕度衡量系统在失稳前能容忍的最大相位延迟,相位裕度越大,系统对时间延迟等相位类扰动的鲁棒性越强。A 是增益裕度的含义,C/D 与频域鲁棒性无直接关系。
Q9. 在自适应控制的工程设计中,常见的鲁棒性增强手段有哪些?
- A.死区(不更新小误差参数)← 正确答案
- B.σ-修正项← 正确答案
- C.无限增大的自适应增益
- D.投影算子限幅← 正确答案
答案:ABD。死区可防止噪声引起的参数漂移,σ-修正提供阻尼,投影算子保证参数在合理范围内。C 错误,无限增大增益只会加剧噪声敏感与不稳定风险。
Q10. 在设计自适应律时,选择李雅普诺夫函数 $V = e^\mathrm{T} P e + \tilde{\theta}^\mathrm{T}\Gamma^{-1}\tilde{\theta}$ 的主要动机是什么?
- A.同时度量输出跟踪误差与参数估计误差← 正确答案
- B.使系统运行速度最大化
- C.消除系统模型中的所有非线性
- D.减少控制器所需的传感器数量
答案:A。该能量函数的第一项衡量跟踪性能,第二项衡量参数辨识性能,两者综合考虑可设计出保证双重收敛的自适应律。B/C/D 均不是李雅普诺夫设计方法的动机,而是工程中独立的性能指标或简化手段。