☰
无模型自适应预测控制与迭代学习控制的仿真对比及调参实战
2026/10/13 21:18:16 网站建设 项目流程

前一段时间做了个仿真程序,对象就是标题里这两个方法:MFAPC,也就是无模型自适应预测控制,还有MFAILC,无模型自适应迭代学习控制。折腾下来最大的感受是:这两种方法虽然都顶着“无模型”三个字,但设计思路、适用场景、调试手感完全不一样,放在一起做数值验证,比单独跑任何一个都有意思。这篇文章就把我从算法原理、仿真框架搭建到调参踩坑的完整过程整理出来,适合正在研究数据驱动控制、或者想用仿真验证MFAC系列方法的小伙伴参考。

整个程序本身不复杂,但里面有几个“坑”非常隐蔽,比如伪偏导数的重置时机、预测时域和学习增益的耦合效应、批次维度上的初值影响,这些如果不亲自把曲线画出来,光看公式是体会不到的。下面我按自己做实验的顺序,从为什么要做这个仿真开始,一步步说清楚。

1. 这个仿真程序在验证什么:从“无模型”三个字说起

1.1 为什么还要强调“无模型”:基于模型控制器的现实瓶颈

传统控制设计里,如果要对一个被控对象做预测控制,第一步永远是辨识模型,不管是传递函数、状态空间还是神经网络模型,总归要先建立对系统的数学描述。但在实际工业场景里这个前提经常站不住脚:很多过程的机理模型要么复杂到没法解算,要么随着工况漂移需要频繁重新辨识,更不用说那些本来就说不清的强非线性环节。

我在做仿真的时候特意回忆了一个现场场景:某条生产线上的温度回路,名义上能写出热平衡方程,实际运行起来参数却随着物料批次变化,拿固定模型做的控制器一换工况就露馅。这时候你就会理解,所谓“无模型自适应”,并不是说完全不需要任何对象信息,而是只利用系统的输入输出数据,在线估计一个时变参数,我们把这种参数叫做伪偏导数,然后把它当作控制设计的关键依据。整个控制器结构里没有被控对象的任何显式数学模型,这是本质区别。

MFAPC在MFAC的基础上引入了预测机制,相当于既保留了数据驱动的自适应能力,又把“走一步看一步”变成了“看几步走一步”。而MFAILC则把同样的数据驱动思想迁移到了重复批次过程上,比如注塑、机器人关节的重复运动轨迹追踪,利用上一次运行的数据修正下一次的控制输入。仿真程序要验证的核心就是:在没有模型信息的前提下,这两种方法到底能不能稳定、能否跟踪、抗噪声和抗参数扰动能力如何。

1.2 MFAPC和MFAILC的定位差异:一个面向连续过程,一个面向重复批次

要是只看名字,很容易把这两种算法当成同一种东西的两个版本。实际上它们的应用维度完全不同。

MFAPC处理的是时间轴上的连续控制问题,每个采样周期都计算一次控制量,用过去和当前的输入输出数据在线更新伪偏导数,同时用已经得到的伪偏导数信息去预测未来若干步的输出,然后滚动优化当前控制量。MFAILC则是在“批次轴”上做文章,它面对的是同一条参考轨迹反复执行的场景,每个批次都不连续:一个批次跑完,拿到完整的误差轨迹,然后在下一次运行前把所有控制输入整体修正一次。它更接近人的“练习—总结—再练习”过程。

所以,如果把这两个方法放进同一个仿真程序里,它们承担的验证任务是不同的:MFAPC重点看它对时变信号和扰动的在线追踪能力,MFAILC重点看批次之间的误差收敛速度和最终精度。这两条技术路线恰好互补,一起做数值验证就能覆盖比较宽的数据驱动控制场景。

1.3 仿真的真正目的:不是炫技,而是回答三个问题

我给自己定的目标很具体,不是要复现一篇论文里的所有理论证明,而是回答三个工程问题。

第一,伪偏导数估计在强非线性对象上到底准不准?偏差大了以后控制器会不会发散?第二,预测步长权重和学习增益这些核心参数,对系统动态性能的影响有多大、有没有直观的调参顺序?第三,当对象参数在小范围内缓慢漂移时,MFAPC和MFAILC谁更稳?这些答案都不能靠推导得出,只能把程序跑起来,盯着输出曲线一条条看。

现在回头看,这三个问题几乎全部得到了让我意外的答案。比如伪偏导数的估计值在仿真里根本就不可能收敛到“真值”,因为被控对象压根没有严格意义上的真偏导数,动态线性化出来的只是一个等价时变参数。但是控制器依然能工作得很好,这说明方法依赖的是估计值与实际方向的一致性,而不是数值的精确性。这个认知几乎是所有无模型控制仿真调试的前提,理解了它,后面的参数调整才能有的放矢。

2. 两种算法的共同底座:动态线性化与伪偏导数估计

2.1 紧格式动态线性化:用增量关系代替全局模型

MFAPC和MFAILC都不是凭空出现的,它们共同的理论起点是动态线性化。如果你看过相关论文,一定对紧格式动态线性化不陌生:对被控的离散非线性系统,在满足Lipschitz条件的前提下,总存在一个时变标量φ(k),使得系统的增量关系可以写成

[ \Delta y(k+1) = \phi(k) \Delta u(k) ]

其中Δy(k+1)=y(k+1)-y(k),Δu(k)=u(k)-u(k-1)。这个式子里没有函数f,没有机理模型,只有一个随工作点变化的等价增益φ(k)。你可以把它理解成:虽然系统整体是强非线性的,但在相邻两个采样点之间,系统的行为可以被局部线性化成一条以φ(k)为斜率的直线。这个斜率不需要全局恒定,只需要在每一步足够近似即可。

用这个式子反推,控制器完全不关心非线性函数长什么样。我选择仿真的被控对象是一个带正弦输入项的非仿射系统,假设某种情况下这个系统的解析式里带着sin(u),这些非线性项留给基于线性模型的控制方法去头疼,而动态线性化只是把它们全部“吸收”进了φ(k),这正是最吸引人的地方。

2.2 PPD在线估计:投影算法与重置机制

φ(k)是要在线计算的。最开始没有任何先验信息,就先给一个初值,比如φ(1)=0.5。每来一组新的输入输出数据,就用投影算法更新一次。MFAC系列论文里最常用的形式是:

[ \hat{\phi}(k) = \hat{\phi}(k-1) + \frac{\eta \Delta u(k-1)}{\mu + \Delta u(k-1)^2} [\Delta y(k) - \hat{\phi}(k-1)\Delta u(k-1)] ]

这个式子看着长,逻辑其实很简单:方括号里是上一时刻的预测误差,如果Δu(k-1)很大,就说明当前系统增量对这个输入增量的响应发生了变化,估计值就往误差方向偏一偏;分母里的μ防止Δu太小时估计值剧烈跳变。η是步长,通常取0到2之间,μ取一个小的正数。

实际仿真中我被重置机制坑过一次。如果Δu(k-1)长时间接近零,上面的分母趋近于μ,按理说更新量不大,但有时候由于输出噪声影响,φ估计会一直向一个错误方向漂移,最终越积越大,控制器输出直接饱和。论文里的方法是在|\hat{φ}(k)|<ε或者发生符号突变时,把φ重置为初值,这个规则看着简单,但阈值ε的选择直接影响了仿真结果。我做了几组对照,ε太小等于没有重置,ε太大会频繁打断正常估计。在我的对象条件下,取ε=0.01比较合适。

2.3 MFAPC的预测机制:多步滚动优化而不是单步追赶

单步MFAC的控制律本质上是比例跟踪,见到误差才动,存在天然的滞后。MFAPC的思路是:既然已经有φ估计了,那就能用递推的方式近似预测未来若干步的输出。

设当前时刻为k,预测时域为N,那么未来第i步的输出可以近似为

[ \hat{y}(k+i) = y(k) + \sum_{j=1}^{i} \hat{\phi}(k+j-1) \Delta u(k+j-1) ]

不过这里有一个绕不开的问题:未来时刻的φ(k+j-1)是未知的。简单做法是假设它在预测时域内保持不变,等于当前估计值。高级做法是用时间序列模型对φ序列做外推,但会增加计算量。我的仿真程序为了测试原理,先在控制器里用常数外推,然后在另一个版本里加入了简单的一阶外推,对比下来差别不算大。这倒说明MFAPC对φ的未来变化不敏感,鲁棒性不错。

预测目标函数我用了标准的二次型:

[ J(k) = \sum_{i=1}^{N} [y^*(k+i) - \hat{y}(k+i)]^2 + \lambda \sum_{i=1}^{N} \Delta u(k+i-1)^2 ]

第一项要求预测输出贴近参考轨迹,第二项限制控制输入的变化幅度,λ就是控制权重。预测步长N给控制器提供了一定的“前瞻能力”,输入权重λ则抑制过激执行,二者配合决定了MFAPC的整体动态品质。

2.4 MFAILC的迭代机制:沿批次轴修正控制输入

MFAILC把问题放到批次维度上。第n次运行时,控制输入序列是u_n(0), u_n(1), ..., u_n(T-1)。运行结束后,我们得到每个采样点的误差e_n(k)=y^*(k)-y_n(k)。下一次运行的控制输入按下式修正:

[ u_{n+1}(k) = u_n(k) + \frac{\rho \hat{\phi}_n(k)}{\lambda + |\hat{\phi}_n(k)|^2} e_n(k+1) ]

这里φ_n(k)依然用动态线性化估计,但是是在第n批次内部沿时间轴递推的。ρ是学习增益,直接决定每个批次修正的幅度;λ同样是权重,防止单个点的误差过大导致输入剧烈修正。

这个结构与MFAPC最大的区别在于:MFAPC每个时刻只向前看几步,而MFAILC是在完整跑完一个批次之后,用一个标量增益乘上误差,统一更新整条控制轨迹。它天然适合具有重复性的工艺过程,比如机器人关节走固定轨迹、注塑机循环成型等。仿真中我观察到,即使第一个批次的控制输入完全乱来,经过几个批次修正后误差也能指数级收敛,这是非常直观的迭代学习特征。

3. 仿真框架搭建:对象、扰动、指标一个都不能少

3.1 被控对象选型:为什么选非仿射非线性系统

仿真程序最容易被忽略但最关键的环节是被控对象的设计。要是选一个线性系统,那两种算法都看不出太多名堂,跟普通PID没有区别。我要的是那种线性模型完全搞不定的对象,才算有说服力。

我用的离散被控对象如下:

[ y(k+1)=\frac{2.5 y(k)}{1+y(k)^2} + 1.2 u(k) + \sin(u(k)) + d(k) ]

第一项是状态相关的非线性增益,在y接近零时增益最大,y很大时增益变小,压得很平;第二项和第三项构成了对控制输入的非线性映射。d(k)是噪声或扰动项,我在仿真里分别做了三种:定值扰动、慢变正弦扰动、随机噪声。

选这个对象的一个原因是它在文献里是常见的非线性测试对象,有代表性,又不至于过难导致控制器失效。另一个原因是我希望它包含输入非线性项sin(u),很多工程对象都有执行机构死区、摩擦这类输入相关非线性,正好考验数据驱动控制器不依赖模型的能力。

3.2 参考轨迹与扰动注入设计

参考轨迹我做了两套。第一套是恒定值,比如y*=1.0,用来测试稳态精度和初始阶段的收敛速度。第二套是时变轨迹:

[ y^*(k) = 0.5 + 0.3 \sin\left(\frac{\pi k}{100}\right) + 0.1 \sin\left(\frac{\pi k}{30}\right) ]

包含两个频率成分,能够观察控制器对不同频段信号的跟随能力。对于MFAPC,我用这条轨迹跑了完整2000步;对于MFAILC,每个批次固定用同一套轨迹,但批次长度T设为200步,一共跑60个批次,这样每个批次恰好覆盖两个周期。

扰动注入分三个场景:场景A不加扰动,作为基准;场景B在k=500之后加入一个幅度0.05的常数扰动;场景C加入方差0.01的随机测量噪声。实际上这次我重点看的是噪声,因为无模型控制器的伪偏导数估计对测量噪声的敏感度是绕不开的软肋。

3.3 评价指标体系:跟踪误差、控制能量和收敛代数

评价指标直接决定你能从仿真里“看见”什么。我定义了三组指标:第一个是平均绝对跟踪误差

[ MAE = \frac{1}{K}\sum_{k=1}^{K}|y^*(k)-y(k)| ]

用于横向对比MFAPC和MFAILC的最终精度。第二个是控制输入的总变动

[ \Delta U = \sum_{k=1}^{K}|u(k)-u(k-1)| ]

反映执行机构的平滑程度,没这个指标你会被低权重λ带来的“抖动型高精度”骗过去。第三个是MFAILC特有的“批次数阈值”,定义为误差首次小于稳态阈值时的批次,用来量化收敛速度。

在程序里我还特意把每条运行的控制轨迹直接输出成数据表,不只看最终误差曲线,因为学习控制的收敛过程比结果更能说明问题。某个批次误差虽然小,但如果控制输入在中间出现了不自然的跳变,那这个结果是要质疑的,不是精度好就能糊弄过去。

4. MFAPC数值实验:预测时域参数与跟踪效果

4.1 基准参数下的跟踪曲线解读

我先给了一组比较保守的基准参数:\rho=0.6,\lambda=0.01,\eta=1.0,\mu=1.0,预测步长N=6,控制权重\lambda_u=0.5,PPD初值0.5。仿真跑2000步,对象参数全程不变,参考轨迹是恒定值y*=1.0。

观察输出曲线,前50步是最激烈的调整期。因为初始PPD猜测值0.5和真实等价增益差了不少,控制输入出现了大约±2的振荡幅度,随后迅速收敛,50步之后基本稳定在参考值附近,稳态误差在0.005以内。这个初始振荡幅度比我预想的要小,原因在于MFAPC的滚动优化本身对控制量有限制作用,每一步只会基于当前预测做局部修正,不会一次性给一个全局冒进的解。如果把它和单步MFAC对比,同样是\rho=0.6,MFAC的初始超调会更大,因为单步控制在误差大的时候容易惯性外推过度。

整体来看,MFAPC在基准参数下表现很稳,但也谈不上惊艳。真正有意思的是改动N和\lambda之后,系统的性格会发生明显变化。

4.2 预测时域N和权重λ怎么配合

预测时域N是最能体现“预测”二字的参数。我把N从2改到10,其他参数保持不变,结果如下表所示:

预测时域N初始超调(百分比)收敛时间(步)稳态MAE控制输入变动ΔU
218.6%380.004112.7
412.2%300.003214.2
67.5%240.002815.8
104.9%280.003517.6

这里有个很关键的转折点:N从2增大到6时,超调持续减小,收敛变快,因为控制器有足够的“前瞻距离”提前行动;但N到10以后,稳态误差不但没有继续下降,反而略微回升了,控制能量还变大。原因在于N越大,预测模型需要外推的步数越多,而外推过程本身有误差,等于你在用不准的预测信息做优化,自然会削弱最终精度。

所以N并不是越大越好,最佳值取决于系统的响应时间和PPD外推误差的累积速率。仿真里响应时间大约5步,N取6到8之间收益最大。这个规律放之四海而皆准,换一个更慢的系统,最佳N就会相应变大。

λ的作用更像一个阻尼器。我把λ从0.1增大到5,直观结果就是控制输入变得更克制,输出曲线更平滑,但跟踪误差相应增大。具体数值上,λ=0.1时MAE是0.0012,但控制量在参考值附近出现明显的微小颤动;λ=5时MAE变成0.0101,控制曲线平滑得像理想信号。工程中不能只看误差,很多时候执行机构的磨损和能耗比那一点精度更重要。实际操作中可以先用大λ跑通,再逐步减小,观察输出抖动出现后再退回一个台阶,这样能找到平衡点。

4.3 MFAPC相比单步MFAC的提前量优势

为了确认预测机制确实有效,我在同一个程序里实现了单步MFAC作为对照。二者都用相同的PPD估计器和重置逻辑,唯一区别是MFAC只用当前误差修正,MFAPC用N步预测优化。

在时变参考轨迹上,MFAC的相位滞后大约是3步,而MFAPC的滞后只有1步,代价是动态过程中控制输入更频繁地变化。相位滞后的差异在高频信号段最明显。我在参考轨迹里加了一个频率较高的正弦分量,MFAC在波峰和波谷处都会出现可见的跟踪偏差,MFAPC则能保持比较饱满的幅值。这就是预测步长的价值:它把未来参考轨迹的信息提前用上了,等于控制系统长了一双“前眼”。

当然,这里说的提前量只对已知参考轨迹有效。如果参考是未来未知的随机信号,MFAPC只能用当前和过去信息做零阶外推,预测优势会削弱。仿真中这一点很重要,因为很多实际工艺的设定值本身就可能是人工在线修改的,不是预设轨迹。所以MFAPC最适用的场合,至少参考趋势是可知或缓慢时变的,这一点在工程选型时要先想清楚。

5. MFAILC数值实验:批次维度上的收敛规律

5.1 初值批次的控制输入变化过程

MFAILC程序把时间轴分成了60个批次,每个批次200步,参考轨迹是固定的时变信号。第一个批次我没有做任何智能控制,控制输入直接给零,输出完全是被动响应,误差自然是全场满江红。

从第二个批次开始,学习机制接管控制输入。我观察前5批次的控制轨迹变化:第二批次的控制输入已经不再是一条直线,它开始在参考轨迹变化的位置出现对应形状的起伏,虽然幅度和相位都不对,但说明误差信息已经成功投影到控制修正量上了。到第5批次,控制输入的轮廓几乎和最终形态接近,剩下的是振幅收敛问题。到第15批次左右,轨迹误差已经降到了稳态水平以下。

这个过程的直观价值在于,学习控制不是逐步微调某一段,而是整条控制轨迹在批次之间同步变形。用工程语言说,它更像一个“全局积分器”,传统控制是时间轴上逐点积分,MFAILC是批次轴上逐点积分。

5.2 学习增益ρ对收敛速度的影响

控制学习增益ρ是MFAILC最核心的旋钮。我对比了ρ=0.2、0.5、0.8、1.4四组。每组都从零输入开始,记录误差达到阈值所需的最小批次数,结果如表所示:

学习增益ρ达到稳态所需批次数最终MAE第5批次的输入峰值
0.2300.00951.3
0.5170.00361.9
0.890.00272.4
1.460.00254.8

ρ增大明显加快初期收敛,但代价很直观:控制输入峰值从1.3涨到4.8,早期批次的执行机构负担非常重。更要命的是,ρ=1.4时虽然收敛快,但在第4和第5批次之间出现了轻微振荡,相邻批次误差不单调下降。这在工程上是不能接受的,说明学习增益一旦跨过稳定边界,控制器会从一个极端摆到另一个极端。安全做法是从ρ=0.5起步,确认误差单调下降5个批次以上,再逐步增大到0.8左右,这样既有速度又不至于碰到不稳定边界。

λ的调节逻辑与ρ相反。λ增大相当于降低每个点误差对输入修正的信任度,收敛变慢但过程更平滑。在仿真中λ=0.5和λ=2之间的差别,主要体现在输入曲线的毛刺数量上。λ越小,控制输入越容易在噪声环境下产生尖刺。

5.3 参考轨迹改变后重新学习的表现

迭代学习控制有一个先天假设:每个批次任务完全相同。现实中更常见的情况是,任务会在某一批之后被整体改变,比如产品规格换线。为了验证MFAILC对这个场景的适应能力,我在第30批次把参考轨迹从0.5+0.3sin改成了0.8+0.5cos组合。

第31批次的反应很激烈,因为控制输入还停留在老轨迹修正后的形态,输出与新的参考差距很大。不过有意思的是,重新学习只需要大约12个批次就能恢复到稳态精度,比从零开始的17个批次要快。这说明前30批次积累的控制知识和PPD估计经验没有完全浪费,它让后续学习有一个更好的起点,至少PPD估计已经比初始猜测值准得多。

这给工程应用提了个醒:MFAILC换产之后不需要从头调试,保留历史学习结果做热启动,能明显加快新品上量速度。程序设计上也可以在批次之间保留PPD估计值,而不是批次开始时重置成初值,除非系统工况发生了本质变化,否则都建议沿用上一批次的末值。

6. 调试记录:调参陷阱、初始化细节与一个意外现象

6.1 PPD初值和重置阈值影响为何那么大

程序跑通很容易,跑出满意的效果难。我在调试过程中踩的第一个坑就是PPD初值。最初以为初值只是一个无关紧要的启动缓存,随便设了0.1,结果发现MFAPC在初始阶段的控制输入冲到了±5以上,跟踪曲线出现了大振幅振荡。

原因是初值偏差越大,PPD估计器在初期需要修正的量就越大,而每次修正都要通过实际施加的输入增量来观察系统响应,这就形成了一个不畏缩的探索过程。要抑制这个初始探索的强度,除了把PPD初值设得接近系统等价增益,限制控制增量的幅值更直接。我在MFAPC里给Δu加了一个限幅环节,初始阶段限制在±0.5,然后按步数逐渐放开限幅范围。这一招比单纯增大λ效果更自然,因为它只约束了探索阶段,不影响稳态性能。

重置阈值的调试同样费劲。按照论文思路,PPD估计值太小就要重置,我在噪声环境下经常触发重置,导致PPD频繁跳回初值,学习效果显著变差。后来改用双重条件:只有连续3步|\hat{φ}|<ε,同时预测误差超过阈值,才允许重置。这个逻辑过滤掉了很多由噪声引起的误触碰,我的实际经验是,噪声环境下重置条件一定要加“连续N步”的门槛,否则等于自己给自己制造干扰。

6.2 我踩过的三个典型仿真坑

第一个坑是PPD估计初始阶段发散。原因是被控对象在y=0附近增益很高,而初始控制量可能正好让系统跨过这个区域,等效增益快速变化,单步投影算法的修正方向跟不上。解决方法是把初始控制输入先固定为空载值,让系统靠近参考点之后再启动控制器,仿真里等于先给50步的“预热”阶段,这个处理在工业上称为安全启动。

第二个坑是MFAPC在强扰动场景下的积分饱和效应。当系统受到一个长时间的正向扰动时,预测优化为了消除误差会不断要求更大的控制增量,控制输入趋近饱和值,PPD估计量同时被夸大,等扰动消失后系统需要很长时间才能恢复。我在控制器里给控制增量做了限幅,并且把φ估计器的μ参数从1提高到2,这样在控制量接近饱和时降低了PPD更新增益,减弱了积分饱和的恶性循环。

第三个坑最有隐蔽性:MFAILC在第3批次之后误差不降反升,甚至出现了一次类似发散的巨大尖峰。排查了很久才发现问题出在批次参考轨迹定义上。我在代码里把参考轨迹序列从0到T-1定义,但控制器在计算误差时用的是e(k+1),也就是把参考序列左移了一位,等于在每个批次里都重复出现一次错位误差补偿。这个错误在单批次仿真里几乎看不出来,因为MFAPC是实时滚动优化,不会把它当成一个固定错误反复学习,但MFAILC会在每个批次里把同一个错误记住并放大。它的收敛快,纠错能力强,对系统性的偏差也格外敏感。这个教训也说明,学习控制程序的参考轨迹对齐问题比普通控制器重要得多,必须用单位脉冲响应测试确认每一条数据链路的延时关系。

6.3 一个值得留意的耦合现象:预测步长与学习增益的关系

我在做完两组独立实验后,又做了一次联合扫描,把MFAPC的N从4调到8,同时把MFAILC的ρ从0.4调到0.9,直接看它们在同一噪声水平下的误差表现。本以为是两个独立变量,结果发现存在明显的耦合:预测步长增大之后,学习增益的最大允许值反而减小,否则高噪声条件下系统更容易进入振荡状态。

解释起来也不难:预测时域越长,控制动作越“激进”,因为优化器会为了满足远期轨迹而更大幅度地调整当前输入;此时如果MFAILC的学习增益也高,两者叠加等于控制能量被双重放大,噪声引起的PPD估计误差也就被同时放大。这种耦合效应提醒我,参数扫描不能一个一个单独做,至少要两两联合看曲面。仿真程序里我把这个联合扫描的脚本保留了下来,每次调参都先自动生成一张二维热力图,标出误差稳定区域,再在稳定区域里选点,大大减少了盲目试凑的次数。

6.4 如果把这套程序扩展开,还能做什么

目前的仿真只是把MFAPC和MFAILC各自跑通,并做了独立的参数分析。要是后面继续做,我会优先往三个方向扩展。

一是增加被控对象复杂度,把单入单出改成两入两出,这样就能测试MFAPC在多变量耦合通道下的表现,伪偏导数也要从标量升级成矩阵,对应的重置规则和控制系统稳定性会更接近实际多变量过程。二是把MFAPC的预测模型改进为基于历史PPD序列的在线预测网络,看看能否进一步提高前馈能力。三是在MFAILC中加入批次间的输入信号滤波,用来抑制学习过程对噪声的过度拟合,这对于真实系统尤其重要,因为我见过太多仿真数据好看、一上设备就抖得不能看的案例。

另外一个我很想做的扩展是参数不确定性测试:把被控对象的2.5这个系数在每个批次或每隔若干步随机扰动20%,看看两种算法的鲁棒性差距。这种测试在仿真里成本极低,但对工程判断非常有价值,因为它能告诉你,一套控制器参数到底能覆盖多大的工况范围。

整套程序的核心文件并不长,无非是一个PPD估计函数、一个控制律求块、一个对象模型函数,再加一个主循环脚本。但真正有价值的不是代码量,而是你从仿真曲线里读出的那些规律:预测时域不是越大越好,学习增益必须和预测能力联合标定,伪偏导数估计算不准没关系,方向对就行。这些经验,光看公式是看不出来的。我自己从这套仿真里收获最大的,就是终于把“无模型”三个字从概念变成了手上的曲线:它不是说你可以完全不了解对象,而是说你可以用一种完全不同的在线数据机制,去替代传统建模这个负担。希望这篇记录能帮你少走几个我走过的弯路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询