
简介面向研究不确定非线性系统H∞跟踪控制问题的科研与工程人员这份资源复现了基于积分强化学习IRL的在线模型无关控制方案重点解决Hamilton-Jacobi-IsaacsHJI方程求解难题。方案通过评价-执行-干扰三神经网络同步更新配合Lyapunov分析证明稳定性并引入鲁棒项抑制逼近误差适用于含外部干扰和输入约束的场景。包体为单个docx文档约49KB文中提供基于Python的可运行代码及逐段解释覆盖折扣非二次成本函数设计、评价-执行-干扰三类神经网络结构、IRL在线更新流程、鲁棒项构造和两个仿真示例的结果分析便于读者按图索骥复现实验。目前已有153人学习下载适合具备一定编程基础、希望掌握神经网络与积分强化学习结合实践的读者。1. 不确定非线性系统的H∞跟踪控制积分强化学习为什么值得试做非线性系统的H∞跟踪控制最卡人的不是控制器推导本身而是你手里的模型几乎永远对不上真实对象。未建模动态、负载变化、增益不确定性都会让精心推导的鲁棒控制参数变成一张废纸。积分强化学习Integral Reinforcement Learning, IRL给了一条不同的路它不要求你精确知道系统动力学而是沿真实轨迹采样奖励积分用神经网络在线逼近值函数再从中提取鲁棒跟踪控制律。这篇文章把从问题建模、积分贝尔曼方程到MATLAB在线学习的实现整条链路走一遍并把我在这个方向上踩过的坑逐条列出来。适合正在复现自适应动态规划ADP论文的研究生以及想评估在线学习方案能否落到实际控制工程里的工程师。2. 把H∞跟踪问题改写成可学习的博弈形式IRL的关键一步想理解积分强化学习在鲁棒跟踪里的位置得先把“不确定非线性系统的H∞跟踪控制”这个标题拆成能写进代码的数学形式。这一章全程围绕一个问题怎么把鲁棒控制变成可以靠数据迭代求解的问题。2.1 误差动力学与不确定性建模先分清哪些是模型、哪些是“敌人”考虑一个二阶不确定非线性系统ẋ₁ x₂ ẋ₂ f(x) g(x)u d(t)其中 x [x₁, x₂]ᵀu 是控制输入d(t) 是外部扰动。这个形式在机械臂、飞行器姿态、电机驱动里很常见第一个方程是运动学关系第二个方程含动力学和输入。为了把“不确定”落到具体处我在仿真里这样设置f(x) -x₁ - 0.3x₂ 0.2x₁x₂ g(x) 1 0.1sin(x₁)设计者手里只有标称模型 f_nom(x) -x₁ - 0.3x₂g_nom 1。那 0.2x₁x₂ 和 0.1sin(x₁) 就是所谓的“不确定项” —— 前者代表未建模动态后者代表控制增益的摄动。实际工程里这两项可能是摩擦力矩、负载变化或执行器死区在仿真里我们把它们装进“真实对象”但绝不告诉设计者。这就是整个问题的来源模型对不上却还要保证闭环系统对外部扰动有规定的抑制水平。跟踪任务的定义是让 x₁ 跟踪一条光滑参考轨迹。参考轨迹取 x_d1(t) 0.5sin(t)则 x_d2(t) 0.5cos(t)其二阶导 ẍ_d1(t) -0.5sin(t)。定义跟踪误差e₁ x₁ - x_d1 e₂ x₂ - x_d2对误差求导得到误差动力学ė₁ e₂ ė₂ f(x) g(x)u d(t) - ẍ_d1注意最后一项 ẍ_d1 是已知的参考加速度这一项会作为已知的时变信号进入控制器这是后面代码里需要保留的项。对设计者而言误差动力学就是 ė F(e,t) G(e)u D(t)d(t)其中 G 只能取标称值 g_nom实际增益和标称值的偏差就是鲁棒控制要吸收掉的“敌人”。提示参考轨迹尽量选光滑周期信号。阶跃参考会让误差快速归零在线学习采样不到足够信息后面持续激励一节会再解释。2.2 H∞指标与两人零和博弈γ 参数反映性能与可行域H∞跟踪控制不是要“误差尽量小”这种模糊说法它给的是一个显式的能量比不等式∫₀^∞ (eᵀQe uᵀRu) dτ ≤ γ² ∫₀^∞ dᵀd dτ V(e(0))这个不等式的工程含义是从外部扰动 d 到“误差加控制能量”这个输出通道的 L2 增益不超过 γ。γ 越小同样能量的扰动对被控量的影响越小控制性能越强但代价是 HJI 方程存在解的可行域变窄γ 小到一定程度问题就无解。常见做法是先取 γ 1.52.0跑通了再逐步下调试探边界。这个不等式形式上不好直接求解。但控制输入和扰动方向正好相反可以把它改写成两人零和博弈控制输入 u 是最小化性能的一方外部扰动 d 是最大化性能的一方。定义值函数V(e) min_u max_d ∫₀^∞ (eᵀQe uᵀRu - γ²dᵀd) dτ这个 V(e) 满足哈密顿-雅可比-伊斯克斯方程HJI 方程。对误差动力学 ė F Gu Dd 写出具体形式0 eᵀQe ∇VᵀF - (1/4)∇VᵀGR⁻¹Gᵀ∇V (1/(4γ²))∇VᵀDDᵀ∇V其中最优控制与最坏扰动可以显式解出来u* -(1/2)R⁻¹Gᵀ∇V d* (1/(2γ²))Dᵀ∇V现在问题的性质变了原本要直接设计控制器 u现在变成了求值函数 V(e)。而 HJI 方程是一个偏微分方程对不确定非线性系统基本不存在解析解——这就是神经网络进场的地方。2.3 积分贝尔曼方程绕过系统模型的核心操作经典强化学习用瞬时奖励做时序差分但在连续时间系统上会碰到 V 对时间的导数项对测量噪声非常敏感。积分强化学习的核心改动是在一个固定时间区间 [t, tT] 上积分贝尔曼方程而不是看瞬时值。从博弈值函数出发对任意时刻 t 和区间长度 T有V(e(t)) ∫ₜ^{tT} (eᵀQe uᵀRu - γ²dᵀd) dτ V(e(tT))把 V(e) 用神经网络 V̂(e) Wᵀσ(e) 代替就得到Wᵀ[σ(e(t)) - σ(e(tT))] ≈ ∫ₜ^{tT} (eᵀQe uᵀRu - γ²dᵀd) dτ这条等式是这个标题里最核心的可计算对象。它有两个关键性质第一方程里没有显式出现 f(x)模型不确定部分的误差以积分形式被平均掉了你只需要测量状态轨迹和奖励积分第二它天然适合在线实现——每隔 T 秒采样一个数据点喂给最小二乘或递推算法更新 W不需要任何离线训练集。另一方面这条等式用的是“近似值函数”神经网络逼近误差是必然存在的。所以后面仿真得到的不是等号而是一个带残差的方程权重更新就是把残差往最小二乘意义下压。这也是为什么积分区间 T 不能取太大——T 越大神经网络逼近误差在区间内累积越多。3. 神经网络在线学习设计单Critic结构与权重更新参数HJI 方程没解析解我们用神经网络去逼近值函数 V(e)。这一章讲网络结构怎么选、权重更新怎么写、激励条件怎么保证。这些决定仿真能不能收敛也是和普通监督学习最不一样的地方。3.1 选前馈网络还是多项式基单Critic网络的取舍标准 ADP 文献里常见的是 Actor-Critic 双网络一个网络逼近值函数另一个网络逼近控制策略。但在本文这个具体问题里最优控制律已经有解析表达式 u* -(1/2)R⁻¹Gᵀ∇V只要能算出值函数的梯度控制器就直接出来了。所以一个 Critic 网络就够不需要单独的 Actor 网络。这种单网络结构参数少在线更新的计算量小收敛也快我一般优先试它。网络本身我推荐用多项式基而不是带激活函数的多层前馈网络。对二阶系统取 2 次和 4 次单项式共 8 个特征σ(e) [e₁², e₁e₂, e₂², e₁⁴, e₁³e₂, e₁²e₂², e₁e₂³, e₂⁴]ᵀ选 2 次项是因为 LQR 意义下的值函数是二次型2 次项能覆盖线性控制的基准选 4 次项是为了能逼近非线性系统的非二次值函数。这里有个容易忽略的细节σ(e) 里没有一次项。对原点附近的调节问题值函数通常是状态的正定函数一次项在原点处梯度不为零会让控制器在原点附近产生恒定偏置不合理。多项式基本质上就是一层不带激活函数的前馈网络好处是梯度的解析式完全写死不需要反向传播在线更新时数值上非常稳定。代价是它对状态范围敏感多项式阶数越高|e| 2 之后特征值暴涨。所以后面代码里要么限制状态范围要么先做归一化否则训练很容易变成 NaN。3.2 RLS权重更新从积分贝尔曼误差到逐样本递推上一章的积分贝尔曼方程 Wᵀ[σ(e(t)) - σ(e(tT))] ≈ ∫ r dτ 对每一个采样区间都构成一个线性方程。收集一批样本后一次性解最小二乘 W (ΦᵀΦ)⁻¹ΦᵀY 就是离线版本适合做事后分析。在线实现时我用递归最小二乘RLS每来一个样本就更新一次权重不需要保存大批历史数据。标准 RLS 递推式是P_k (1/λ)[P_{k-1} - P_{k-1}φ_kᵀφ_kP_{k-1} / (λ φ_kP_{k-1}φ_kᵀ)] W_k W_{k-1} P_kφ_kᵀ(y_k - φ_kW_{k-1})其中 φ_k [σ(e(t)) - σ(e(tT))]ᵀ 是 1×8 行向量y_k 是区间奖励积分。遗忘因子 λ 越接近 1对旧数据记忆越长、更新越平滑λ 明显小于 1 时对新数据响应更快但权重波动也更大。我通常在 0.99~0.999 之间选仿真里取 0.995。这个值不是玄学在线学习过程中系统参数和参考轨迹都在变给一点遗忘能力才能持续跟踪。P 矩阵的初始值 P₀ 也很关键。取太小前几步更新几乎不动取太大前几个样本可能把 W 冲过头导致发散。常见做法是取 1e-3 到 1e-1 的对角阵代码里我取 1e-2。3.3 探测噪声与持续激励训练收敛的前提条件这是在线强化学习最容易翻车、也最常被忽略的一环。神经网络权重能收敛前提是输入数据覆盖足够多的方向——学控制理论的人习惯叫它持续激励条件。放到这个仿真里如果参考轨迹是常数误差很快归零采到的 σ(e) 全在原点附近RLS 更新矩阵 P 的信息量趋近于零权重卡住不动。解决办法是往控制输入里叠加探测噪声probing noise。代码里我用均匀分布随机数乘一个随指数衰减的包络前期噪声幅度大保证状态被充分激励后期噪声衰减保证跟踪精度不受影响。噪声幅度不是越大越好——太大直接把跟踪性能打崩太小持续激励不满足。我的经验是初始幅度取控制量量级的 0.20.5 倍衰减时间常数取总仿真时长的 1/3 左右。这个折中能在“信息量”和“控制品质”之间站住脚。提示判断激励是否足够的土办法是把 RL 权重更新关掉只跑系统加探测噪声然后看误差状态是否在两个方向上都有明显波动。如果 e₁、e₂ 曲线都贴在零轴上噪声幅度必须加大。4. 用MATLAB跑通最小仿真完整代码与跑通参数这一章给出可在 MATLAB 里直接运行的最小实现。仿真对象就选第 2 章那个带未建模动态和增益摄动的二阶系统控制器由单 Critic 网络生成权重用 RLS 在线更新。代码分三段贴参数与网络初始化、主循环、结果绘图。4.1 仿真对象与参数预设%% 参数与初始化 dt 0.001; % 仿真步长单位 s T 20; % 总仿真时长 t (0:dt:T); N length(t); % 参考轨迹及其二阶导数 xd1 0.5*sin(t); xd2 0.5*cos(t); xdd1 -0.5*sin(t); % 性能权重与 Hinf 指标 Q [10 0; 0 1]; R 1; gamma 1.2; % 初始状态 x zeros(2, N); x(:,1) [0.3; -0.2]; u zeros(N, 1); d zeros(N, 1); % 多项式基2 次 4 次单项式共 8 个特征 basis (e) [e(1)^2; e(1)*e(2); e(2)^2; e(1)^4; e(1)^3*e(2); e(1)^2*e(2)^2; e(1)*e(2)^3; e(2)^4]; dbasis (e) [2*e(1) 0; e(2) e(1); 0 2*e(2); 4*e(1)^3 0; 3*e(1)^2*e(2) e(1)^3; 2*e(1)*e(2)^2 2*e(1)^2*e(2); e(2)^3 3*e(1)*e(2)^2; 0 4*e(2)^3]; % 初始权重用 LQR 近似值函数 V e*P*e 填充二次项 P0 [2.0 0.5; 0.5 0.8]; W zeros(8, 1); W(1) P0(1,1); W(2) 2*P0(1,2); W(3) P0(2,2); % RLS 参数 P_rls 1e-2 * eye(8); lambda_rls 0.995; % IRL 积分区间 T_ir 0.05; N_ir round(T_ir / dt); acc_e 0; acc_u 0; acc_d 0; % 探测噪声幅度递减保证持续激励 noise_amp 0.5; noise_decay exp(-0.3*t); % 记录数组 W_log zeros(N, 8); err_log zeros(N, 1);这段代码里有两个容易误设的参数Q 矩阵取 diag(10,1) 表示对位置误差的惩罚远大于速度误差这在实际跟踪问题里合理——用户关心的是输出位置是否跟住参考。gamma 取 1.2 是试探值如果后面发现收敛困难优先从这里调大。P0 矩阵是我随手给的稳定正定阵它的作用只是让初始控制器别把系统推到发散不需要精确。4.2 主循环、IRL样本采集与RLS权重更新%% 主循环仿真推进 IRL 样本生成 RLS 更新 for k 1:N-1 % 当前误差状态 e1 x(1,k) - xd1(k); e2 x(2,k) - xd2(k); e [e1; e2]; % 外部扰动两个正弦叠加有界且能量有限 d(k) 0.4*sin(2*t(k)) 0.2*cos(3*t(k)); % 由 Critic 网络梯度生成控制信号标称增益 g_hat 1 g_hat 1; dVde dbasis(e) * W; % 2x1 梯度向量 u_base -0.5 / R * g_hat * dVde(2); % 控制加在第二个状态方程 % 叠加递减探测噪声保证持续激励 u(k) u_base noise_amp * noise_decay(k) * (rand - 0.5); % 实际系统更新含未知非线性 0.2*x1*x2 与增益摄动 0.1*sin(x1) f_actual -x(1,k) - 0.3*x(2,k) 0.2*x(1,k)*x(2,k); g_actual 1 0.1*sin(x(1,k)); xdot [x(2,k); f_actual g_actual*u(k) d(k) - xdd1(k)]; x(:,k1) x(:,k) dt*xdot; % 区间奖励积分 acc_e acc_e (e*Q*e)*dt; acc_u acc_u R*u(k)^2*dt; acc_d acc_d gamma^2*d(k)^2*dt; % 每 T_ir 秒生成一个 IRL 样本 if k N_ir mod(k, N_ir) 0 e_start x(:,k-N_ir1) - [xd1(k-N_ir1); xd2(k-N_ir1)]; e_end e; phi_row (basis(e_start) - basis(e_end)); % 1x8 y_row acc_e acc_u - acc_d; % 标量 % RLS 在线更新 P_rls (1/lambda_rls) * ... (P_rls - P_rls*(phi_row)*(phi_row)*P_rls / ... (lambda_rls phi_row*P_rls*(phi_row))); P_rls (P_rls P_rls) / 2; % 保证对称 W W P_rls * phi_row * (y_row - phi_row * W); % 清空区间积分 acc_e 0; acc_u 0; acc_d 0; end % 记录 W_log(k,:) W; err_log(k) norm(e); end主循环里有几个顺序细节值得说明。探测噪声必须在系统更新之前叠加进 u(k)因为实际执行到对象上的控制输入包含噪声奖励积分也必须用这个实际输入计算如果先用无噪声控制推进系统再去加噪声做奖励积分样本就对不上号了。每个 IRL 样本由三部分组成起点和终点的特征差、区间奖励积分。代码在 mod(k, N_ir) 0 时采样一次起点状态取 k-N_ir1 步之前的历史值终点状态取当前值。这样窗口长度正好是 N_ir 步对应物理时间 T_ir 0.05s。需要强调的是这个区间长度要覆盖系统主导时间尺度的一个零头不能太短也不能太长——太短样本噪声占比大太长神经网络逼近误差在区间内累积。RLS 更新那三行是核心第一行更新 P 矩阵第二行做对称化防数值漂移第三行用增益乘以残差去修正 W。遗忘因子 λ0.995 意味着约 200 个样本之后旧数据权重降到 1/e 以下对于 20 秒仿真产生的 400 个样本来说中段之后基本靠近期数据驱动。4.3 从曲线判断学习是否成功%% 结果绘图 figure; subplot(2,1,1); plot(t(1:end-1), err_log(1:end-1)); xlabel(t (s)); ylabel(||e||); title(跟踪误差范数); subplot(2,1,2); plot(t(1:end-1), W_log(1:end-1, 1:3)); xlabel(t (s)); ylabel(W); legend(W1,W2,W3);运行这段代码理论上你会看到三个现象前 5 秒误差范数有明显波动这是探测噪声引起的激励随着噪声衰减误差范数逐步稳定到零点附近的小邻域内体现跟踪性能W 的三个二次项权重从初始值快速调整10 秒后基本不再大幅变化说明学习收敛。如果误差曲线在后期明显增大优先检查是否探测噪声幅度衰减过慢如果 W 曲线从头到尾几乎不动优先检查持续激励条件。这些曲线比任何理论分析都更直接告诉你算法是否在工作。参数选择汇总如下表仿真时最常动的就是 gamma、noise_amp、lambda_rls 三个参数取值说明dt0.001 s固定步长越小越稳但总步数增多Qdiag(10,1)位置误差惩罚远大于速度误差R1控制能量权重越大控制越保守gamma1.2扰动抑制水平越小要求越高可能无解T_ir0.05 sIRL 积分区间需覆盖系统动态的关键尺度lambda_rls0.995遗忘因子接近 1 则记忆越长noise_amp0.5探测噪声初始幅度按控制量量级调整P_rls 初值1e-2·I初始协方差决定前几步更新步长5. 在线学习的常见问题与避坑记录五个真实翻车点写代码跑通是一回事跑通之后换参数、换系统再调试才能真正理解这个算法。下面五条是我在这类在线学习方案里反复踩过的坑每条按现象、原因、解决三个层次写。5.1 权重更新成NaN病态矩阵与特征爆炸现象RLS 更新十几步之后W 突然变成 NaN跟踪误差曲线断开仿真直接报废。这种情况通常发生在状态跑出 [-3, 3] 范围之后。原因两层。第一层是多项式基的指数特性——四次单项式在 |e| 超过 2 之后增长极快状态一发散特征值就是几百上千P_rls 矩阵变得病态。第二层是 RLS 里 P 矩阵在连乘连除后失去正定性数值误差逐步累积最后更新增益变成无意义的巨大数。解决给控制输出加饱和限幅u 限制在 [-2, 2]P_rls 初始值从 1e-2 降到 1e-3每次更新后做对称化甚至强制修正特征值保证正定如果状态已经发散直接复位 W 到初始值重新跑。工程上最省事的土办法是在进入 RLS 更新前检查 norm(e) 是否超过阈值超过就直接跳过本次更新——反正这个样本质量也差。5.2 训练不收敛激励不够误差卡在半山腰现象误差曲线前期下降但到某个水平就再也不动了W 曲线只在最开始动几步后面变成一条直线。很多人这时候去调学习率、调遗忘因子调半天没用。原因数据没有信息量。误差接近零之后σ(e) 所有元素都趋近零IRL 样本的 φ_row σ(e_start) - σ(e_end) 也趋近零向量RLS 更新对 W 几乎没有修正。这是持续激励条件不满足不是学习率的问题。解决加大探测噪声的初始幅度或延长衰减时间把参考轨迹从阶跃改成周期正弦在误差快速收敛到零的工况里甚至需要主动往参考轨迹上叠加小幅高频分量。我的经验是先关掉 RLS 更新给系统加噪声跑 2 秒然后看误差状态的轨迹是不是覆盖了一个二维区域。如果 e₁、e₂ 的散点图挤成一条线说明激励不够。5.3 仿真一开始就爆初始W必须对应一个稳定策略现象仿真跑不到 0.1 秒x₂ 直接飞到上百后面全是 NaN。原因初始权重 W 是随机或者任意给的对应的控制律可能把系统推向不稳定方向。神经网络在线学习并不是“从零学起”的算法它需要一个能稳住系统的初始策略做底子在线更新只是在这个基础上去优化。初始权重太差系统状态发散采到的样本全是发散轨迹上的数据什么更新都救不回来。解决先用 LQR 在标称线性系统上算一个近似值函数把二次项系数填进 W 的初始值代码里 P0 矩阵就是干这个的再确认控制律公式的符号——dVde(2) 前面那个负号错了系统第一步就爆。调试时先固定 W 关闭更新确保开环加初始控制器能跑满 1 秒再开 RLS。5.4 γ设太小导致怎么调都不收敛HJI方程的可行域边界现象无论怎么调学习率、噪声幅度、遗忘因子误差就是压不下去事后算 L2 增益总是比设定的 γ 大不少。原因H∞ 博弈问题对 γ 有一个可行域边界γ 小于某个临界值时 HJI 方程不存在满足不等式的解。这不是学习算法的参数问题而是问题本身在数学上无解。你把算法逼到极限它只能给你一个次优结果——不稳定或不达标。解决把 γ 从 1.2 往上调比如 1.5、2.0跑通后感受一下性能变化再用二分法试探临界值。实际工程的合理顺序是先用大 γ 把系统稳住、让学习收敛确认整条链路是对的再逐步调小 γ 逼近性能极限。一上来就设一个理想的小 γ基本会卡在调试瘫痪状态。5.5 论文复现符号对不上1/2系数、Q与R的权重口径现象按某篇论文的公式实现代码却怎么都复现不出论文报告的误差曲线差得不是一点点。原因文献里 H∞ 跟踪控制的写法存在口径差异。控制律有的写 u -R⁻¹Gᵀ∇V有的写 u -(1/2)R⁻¹Gᵀ∇V值函数积分里有的用 eᵀQe uᵀRu有的把 Q 换成包含 R 的扩维矩阵。这些系数差异会直接改变网络权重的收敛方向和稳态值。还有一个常见问题有些论文里 d 的惩罚项写作 -γ²‖d‖²有些写作 -(1/2)γ²‖d‖²导致最坏扰动 d* 的表达式差一倍。解决动手前先把论文里定义值函数的那一段精读三遍把 u*、d* 的表达式手工推导一遍再写代码用标称线性系统加 LQR 结果做对照验证自己实现的控制律梯度方向对不对。不要迷信论文公式直接抄那是最容易踩的隐坑。如果从零开始写这个仿真我的调试顺序是先固定 W 不更新跑通状态、扰动与控制律确认系统不发散再开 RLS 但关闭探测噪声看 W 是否完全不动——不动是正常的说明激励那句代码还没加对最后加噪声看 W 是否开始移动。每一步只引入一个变量出了问题一眼就能定位。直接跑完整代码翻车了都不知道去哪查。6. 验证H∞性能与几个进阶方向确定方案值得投入再加深学习收敛只是第一步更关键的问题是这个控制器真的满足 H∞ 性能吗对不确定性真有鲁棒性吗这一章讲怎么数值验证以及往哪儿进阶。6.1 用外部扰动实验估计实际L2增益仿真跑完后用记录的数据直接算实际 L2 增益估计值γ_est sqrt( ∫₀^∞ (eᵀQe uᵀRu) dτ / ∫₀^∞ dᵀd dτ )严格说这个比值应该取所有非零扰动信号下的上确界实际仿真只能用有限信号近似所以见到 γ_est 比设计值 γ 小 10%20% 就算合格。计算时建议跳过前 3 秒的暂态段只统计后续数据——初始误差大时扰动到误差的比值偏高会把合格结果误判成不合格。6.2 对不确定性系数做扫描测试一个控制器说自己“鲁棒”必须有证据。把实际系统 f(x) 里 0.2x₁x₂ 的系数从 0.1 改成 0.5g(x) 里 0.1sin(x₁) 的幅度从 0.05 改成 0.2固定已经学好的权重 W逐个工况重跑仿真记录误差范数峰值和 γ_est。如果所有工况下误差都有界且 γ_est 压在设计值附近才算真正验证了“对不确定非线性系统鲁棒”这个标题承诺。这一步最容易被跳过但也是评审和同行最看重的部分。6.3 进阶方向如果控制增益 g(x) 也完全未知IRL 样本里那个 G 项需要额外估计可查无模型 IRL 的相关做法如果实际控制器计算频率有限制可以把 RLS 更新改成事件触发只有误差超过阈值才产生新样本如果状态测量带噪声值函数输入不能再直接用测量值需要先加状态观测器。这几个方向里无模型 IRL 对工程实际最有吸引力——它连标称控制增益都不需要彻底摆脱模型依赖。我自己的习惯是每次调完参数先看 W 有没有动、再看误差有没有降、最后算一次 L2 增益确认性能达标。这三条曲线比任何理论推导都诚实它们不会骗你。积分强化学习不是开箱即用的黑匣子但对带扰动和模型误差的非线性系统它确实给了一条不需要精确模型就能逼近最优鲁棒控制的在线路径。希望这份最小实现和踩坑记录能帮到你。本文还有配套的精品资源点击获取