无模型自适应控制算法介绍以及与PID对比程序验证

引言

随着工业过程,智能无人系统的快速发展,被控对象的复杂性与日俱增,且逐渐呈现出非线性、强耦合等特点导致系统的数学模型难以精确的建立表达。而传统控制理论需要以被控对象的数学模型为基础,通过机理分析或系统辨识建立精确的数学描述,进而设计控制器以实现期望的控制性能比如PID,MPC等控制方式。在此背景下,数据驱动控制应运而生,其核心思想是直接利用被控系统在线或离线的输入输出数据进行控制器设计。不需要建立显式精确的数学模型。其中,无模型自适应控制 (Model-Free Adaptive Control, MFAC) 理论是1994年由侯忠生教授教授提出,本文后续内容将详细介绍该方法。

无模型自适应控制的基本原理

无模型自适应控制的核心创新在于引入了动态线性化技术及伪偏导数等概念。该方法无需辨识复杂的非线性系统机理模型,而是在每个工作点处,利用受控系统的输入输出数据建立一个等价的虚拟“动态线性化数据模型”,以此逼近原非线性系统在该时刻附近的动态行为。控制器基于此等效模型进行设计,并在线实时更新伪偏导数的估计值,从而实现参数自适应控制乃至结构自适应控制。

关键技术

动态线性化技术

动态线性化分为紧格式动态线性化和偏格式动态线性化,本文从简单基础的紧格式动态线性化进行推导介绍。

假设一般的单输入单输出(SISO)非线性系统为

其中,u(k),y(k)分别代表k时刻系统的输入和输出;n是未知的阶数;f(⋯ )是一个未知的非线性函数。

为了实现动态线性化,需要对系统做出以下基本假设:

  • 假设1:系统是输入可控、输出可观的。即对于有界的期望输出信号,存在一个有界的控制输入信号驱使其输出等于期望值。
  • 假设2:f(⋯ )关于系统当前输入u(k)的偏导数是连续的。
  • 假设3:系统(1)满足广义Lipschitz条件。即对于任意k,当Δu(k)=u(k)−u(k−1)≠0时,有:∣Δy(k+1)∣≤b∣Δu(k)∣∣Δy(k+1)∣≤b∣Δu(k)∣。其中,Δy(k+1)=y(k+1)−y(k),b是一个正常数。这意味着系统输出变化量与输入变化量之间的变化率是有界的。

对于满足上述三个假设的非线性系统,当∣Δu(k)∣≠0时,一定存在一个被称为伪偏导数的时变参数

\phi _c(k)

,使得系统可表示为如下紧格式动态线性化数据模型:

控制律设计

由上式动态线性化后的表达式,控制器设计的目标就是确定控制输入u(k),使得系统输出y(k+1)能够跟踪上给定的期望轨迹y∗(k+1)。

为了避免控制量剧烈变化对系统稳定性造成影响,并有效跟踪期望输出,定义如下准则函数

将动态线性化后的式子带入,并对u(k)求偏导数令其等于零求出极值可以得到控制率更新公式Δu(k):

最终化简可得:

其中,ρ∈(0,1]是步长因子,加入它是为了使算法更具一般性和灵活性,从最优化角度调整搜索步长。

上式中的时变伪偏导数

\phi _c(k)

需要利用系统的输入输出(I/O)数据进行在线估计,同样使用最小二乘思想设计准则函数为:

对其偏导并求取极值可以得到伪偏导数的估计值

\hat {\phi}_c(k)

如下:

这样,一个完整的基于紧格式动态线性化的无模型自适应控制控制器就设计完成了。

收敛性分析

从上面式子可以看出在控制率更新和伪偏导数更新中存在算法参数如:步长因子

\rho

,权重因子

\lambda

等,接下来系统分析一下其对收敛性的影响。

在控制率更新中步长因子

\rho

和权重因子

\lambda

共同影响了控制率的“行动”。当步长因子

\rho

较大时,控制器对当前的跟踪误差反应强烈,会施加一个较大的修正量。好处是系统收敛速度很快,能够迅速减小误差。但坏处也很明显,过大的步长容易导致超调,甚至引起系统输出在目标值附近来回震荡,难以稳定;当

\rho

较小时,控制器动作变得非常谨慎,每一步的调整都很细微。这使得系统响应变慢,收敛时间变长,但过程通常会比较平滑,超调量小。这部分可以类比成PID环节中的比例控制。

权重因子

\lambda

的作用是惩罚控制输入u(k)的剧烈变化。从控制率公式的分母项可以看出,它的本质是一个阻尼器,用来限制控制器的变化。当

\lambda

较大时,对控制量变化的惩罚加重。这意味着算法会极力避免控制动作的大幅波动。结果就是系统输出变化平缓,稳定性增强,能够有效抑制可能的振荡。但缺点是,由于控制动作受限,系统的响应速度会变慢,跟踪误差的收敛也会变得迟缓;当

\lambda

较小时,对控制量变化的约束变弱。控制器可以更“自由”地根据跟踪误差来调整输出,从而获得更快的响应。然而,这也可能导致控制量变化过于剧烈,系统容易产生超调和振荡。这部分可以类比成PID环节的微分控制(不完全正确)。

除了上述参数,在伪偏导数更新中同样存在步长因子

\eta

,权重因子

\mu

,这两个参数决定了控制器的“认知”(即如何估计系统的动态特性 

\phi _c(k)

)。

\eta

较大时,伪偏导数PPD估计值变化快,能够迅速捕捉系统动态特性的变化。但是系统对工况变化响应快,但估计值可能波动大,导致控制输入抖动,甚至发散;当

\eta

较小时,PPD估计值变化缓慢,平滑历史信息,但系统鲁棒性强,对噪声不敏感,但跟踪时变系统(如参数突变的系统)的能力下降,收敛慢。

参数

\mu

的作用同样是限制PPD的变化率。当

\mu

较大时,系统稳定性高,但可能无法准确辨识系统的真实增益,导致控制性能(如跟踪速度)下降;当

\mu

较小时,具有最优的估计性能,但对噪声敏感。如果 μμ 过小且输入长时间不变(Δu接近0),估计值可能会因数值问题而漂移。

综上,上述表达式中参数对收敛性能的影响就全部解释完毕。接下来通过与PID的对比实验,更加细节的展示算法流程。

仿真示例

仿真环境搭建

工具选择:MATLAB

被控对象示例:非线性系统

选取非线性系统为:

y(k+1) = 0.5y(k) + \frac{u(k)^3}{(1 + y(k)^2) }+ 0.1sin(u(k))

设置MFAC的相关参数以及初值设置,为了实现控制算法的对比,采用增量式PID控制对比实验。参考信号选取正弦信号。具体程序如下:

MFAC相关程序:

clear; close all; clc; N = 500; % 仿真步数 T = 0.01; % 采样时间(用于时间轴) t = (0:N-1)*T; % 时间向量 %% 参考轨迹 A = 1.0; % 幅值 f = 0.5; % 频率 y_d = A * sin(2*pi*f*t); % 期望输出 %% 初始化变量 u = zeros(1, N); y = zeros(1, N); phat = zeros(1, N); % 伪偏导数估计 % 初始状态 y(1) = 0; % 初始输出 u(1) = 0; % 初始控制量 phat(1) = 1; % 伪偏导数初值 %% MFAC 参数设置 rho = 1.0; % 控制率步长因子 lambda = 0.00000; % 控制率权重因子 eta = 0.8; % 伪偏导数估计步长因子 mu = 0.2; % 伪偏导数估计权重因子 epsilon = 1e-5; %% 主仿真循环 for k = 1:N-1 %% 控制率计算 if k == 1 u(k) = 0; else % 紧格式MFAC控制率: u(k) = u(k-1) + (rho * phat(k) / (lambda + phat(k)^2)) * (y_d(k+1) - y(k)); end % 系统模型方程 y(k+1) = 0.5 * y(k) + u(k)^3 / (1 + y(k)^2) + 0.1 * sin(u(k)); %% 伪偏导数估计 if k >= 1 % 计算输入和输出增量 if k == 1 delu = u(1) - 0; dely = y(2) - y(1); else delu = u(k) - u(k-1); dely = y(k+1) - y(k); end if abs(delu) <= epsilon % 若输入增量过小,则不更新,保持原值 phat_new = phat(k); else phat_new = phat(k) + (eta * delu / (mu + delu^2)) * (dely - phat(k) * delu); end if abs(phat_new) <= epsilon || sign(phat_new) ~= sign(phat(1)) phat(k+1) = phat(1); else phat(k+1) = phat_new; end max_phat = 10; if abs(phat(k+1)) > max_phat phat(k+1) = sign(phat(k+1)) * max_phat; end end end figure; subplot(2,1,1); plot(t, y_d, 'r--', 'LineWidth', 1.5); hold on; plot(t, y, 'b-', 'LineWidth', 1); xlabel('时间 (s)'); ylabel('输出 y'); legend('期望轨迹', '实际输出'); title('MFAC 正弦轨迹跟踪效果'); grid on; subplot(2,1,2); stairs(t(1:end-1), u(1:end-1), 'g-', 'LineWidth', 1); xlabel('时间 (s)'); ylabel('控制输入 u'); title('控制器输出'); grid on; 

PID相关程序:

 clear; close all; clc; N = 500; % 仿真步数 T = 0.01; % 采样时间(用于时间轴) t = (0:N-1)*T; % 时间向量 %% 参考轨迹:正弦信号 A = 1.0; f = 0.5; y_d = A * sin(2*pi*f*t); %% 初始化变量 u = zeros(1, N); y = zeros(1, N); e = zeros(1, N); % 初始状态 y(1) = 0; % 初始输出 u(1) = 0; % 初始控制量 e(1) = y_d(1) - y(1); % 初始误差 %% PID 参数设置 Kp = 0.8; % 比例系数 Ki = 0.5; % 积分系数 Kd = 0.001; % 微分系数 u_min = -10; u_max = 10; %% 主仿真循环 for k = 1:N-1 %% 计算当前时刻误差 e(k) = y_d(k) - y(k); %% 增量式PID控制器 if k == 1 delta_u = Kp * (e(k) - 0) + Ki * e(k) + Kd * (e(k) - 2*0 + 0); elseif k == 2 delta_u = Kp * (e(k) - e(k-1)) + Ki * e(k) + Kd * (e(k) - 2*e(k-1) + 0); else delta_u = Kp * (e(k) - e(k-1)) + Ki * e(k) + Kd * (e(k) - 2*e(k-1) + e(k-2)); end % 更新控制量 u(k+1) = u(k) + delta_u; if u(k+1) > u_max u(k+1) = u_max; elseif u(k+1) < u_min u(k+1) = u_min; end y(k+1) = 0.5 * y(k) + u(k+1)^3 / (1 + y(k)^2) + 0.1 * sin(u(k+1)); end e(N) = y_d(N) - y(N); figure; subplot(2,1,1); plot(t, y_d, 'r--', 'LineWidth', 1.5); hold on; plot(t, y, 'b-', 'LineWidth', 1); xlabel('时间 (s)'); ylabel('输出 y'); legend('期望轨迹', '实际输出 (PID)'); title('PID 正弦轨迹跟踪效果'); grid on; subplot(2,1,2); stairs(t, u, 'g-', 'LineWidth', 1); xlabel('时间 (s)'); ylabel('控制输入 u'); title('PID 控制器输出'); grid on; 

结果分析

MFAC方法下,选取适当的参数可以较好实现控制跟踪的稳定性,虽然与PID相比要设置四个参数值,但参数的选择远比PID简单。

PID方法下,除非根据已设立的非线性系统模型进行参数整定,否则很难实现与MFAC方法相同的稳定性能。

后续内容

根据本篇博客访问情况及本人研究现状将完成:

  • MFAC理论严格的数学稳定性证明
  • 完善偏格式动态线性化的描述
  • 复现MFAC领域高质量论文
  • 将算法移植到电机等实物层面
参考文献
  • [1] 侯忠生. 无模型自适应控制的现状与展望[J]. 控制理论与应用, 2006, 23(4): 586-592. [2] 侯忠生. 再论无模型自适应控制[J]. 系统科学与数学, 2014, 34(10): 1182-1191. [3] 侯忠生. 无模型学习自适应控制的若干问题研究及其应用[D]. 北京: 北京交通大学, 2009. [4] 金尚泰, 侯忠生. 一类非仿射非线性离散系统的改进无模型自适应控制[J]. 控制与决策, 2014, 29(12): 2227-2231. [5] 陈泓韬, 秦一丹, 杨成顺, 等. 基于改进无模型自适应控制策略研究[C]//第32届中国过程控制会议(CPCC2021)论文集. 2021. 
  • [6] Hou Z, Xiong S. On model-free adaptive control and its stability analysis[J]. IEEE Transactions on Automatic Control, 2019, 64(11): 4555-4569. [7] Naidu D S, Rangaiah G P. Toward data-driven optimal control: A systematic review of the landscape[J]. IEEE Access, 2022, 10: 32190-32212. [8] Baciu A, Lazar C. Model-free adaptive pitch control for a nonlinear aerospace laboratory equipment[C]//2024 28th International Conference on System Theory, Control and Computing (ICSTCC). IEEE, 2024: 212-216. [9] Zhou Q, Ren Q, Ma H, et al. Model-free adaptive control for nonlinear systems under dynamic sparse attacks and measurement disturbances[J]. IEEE Transactions on Circuits and Systems I: Regular Papers, 2024, 71(10): 4731-4741.

Read more

Manus vs OpenClaw:云端托管与开源本地化的架构原理全面对比

【2026 AI Agent 深度解析】Manus vs OpenClaw:云端托管与开源本地化的架构原理全面对比 作者按:进入 2026 年,AI Agent 赛道已从概念验证走向规模落地。Meta 以约 20 亿美元收购 Manus,OpenAI 招揽 OpenClaw 创始人 Peter Steinberger——两大巨头在 45 天内同时押注自主智能体赛道,标志着行业的关键分叉点。本文从底层架构、规划引擎、安全模型、生态扩展等维度,对这两款代表性 Agent 框架进行深度原理拆解。 一、背景:从聊天机器人到自主执行者 2025 年初 Manus 以"通用 AI Agent"姿态亮相,

By Ne0inhk
开源力量:GitCode+昇腾NPU 部署Mistral-7B-Instruct-v0.2模型的技术探索与经验总结

开源力量:GitCode+昇腾NPU 部署Mistral-7B-Instruct-v0.2模型的技术探索与经验总结

开源力量:GitCode+昇腾NPU 部署Mistral-7B-Instruct-v0.2模型的技术探索与经验总结 目录 开源力量:GitCode+昇腾NPU 部署Mistral-7B-Instruct-v0.2模型的技术探索与经验总结 摘要 一、技术背景 1.1 昇腾NPU 1.2 GitCode平台 1.3 vLLM Ascend 二、环境准备 2.1 创建GitCode Notebook 2.2 配置Hugging Face镜像 三、部署方案一:原生部署(transformers + torch_npu) 3.1 安装依赖 3.2 下载模型 3.3 推理代码 3.

By Ne0inhk

《保姆级教程:GitHub 个人访问令牌(PAT)怎么弄?解决 workflow 权限不足问题》

使用 Git 向 GitHub 提交代码时,新手常遇一个棘手问题:2021 年 8 月起,GitHub 为提升安全性,彻底停用账号密码认证,改用个人访问令牌(PAT)替代密码。 但很多入门教程仍沿用旧方法,导致新手实操时频频碰壁。新手往往不清楚什么是 PAT、在哪创建,更不懂需配置哪些权限 —— 尤其涉及 CI/CD(如 GitHub Actions 工作流)时,若 PAT 缺少workflow权限,会被提示 “拒绝创建或更新工作流”,明明代码和命令没错,却卡在最后一步,极易阻断学习进度。 我希望记录下这些操作过程,帮助同路人少走弯路。下面看具体的操作步骤: 新建一个代码仓库后看到的视图: 点击右上角的头像,然后跟着下面的操作走 进入页面后往下找到Developer settings。 选择Tokens(classic) note自定义。repo和workflow必选。

By Ne0inhk
OpenClaw+Kimi K2.5开源AI助手零门槛部署教程:本地私有化+远程控制+办公自动化全实操

OpenClaw+Kimi K2.5开源AI助手零门槛部署教程:本地私有化+远程控制+办公自动化全实操

一、前置准备(3分钟搞定,新手零门槛) 核心依赖清单(缺一不可) 1. 环境要求:Windows10+/macOS12+/Linux(Ubuntu22.04最佳),4G以上内存,无需独立GPU 2. 必备工具:Docker+Docker Compose(一键安装脚本已适配国内源)、Git(版本2.40+) 3. 密钥准备:Kimi Code API Key(火山方舟/CodingPlan获取,需实名认证,保存好密钥仅显示一次) 4. 辅助工具:浏览器(Chrome/Edge最新版)、IM工具(飞书/企业微信,用于远程控制) 快速获取Kimi K2.5 API Key(两步到位) 1.

By Ne0inhk