无模型自适应控制算法介绍以及与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时,一定存在一个被称为伪偏导数的时变参数
,使得系统可表示为如下紧格式动态线性化数据模型:

控制律设计
由上式动态线性化后的表达式,控制器设计的目标就是确定控制输入u(k),使得系统输出y(k+1)能够跟踪上给定的期望轨迹y∗(k+1)。
为了避免控制量剧烈变化对系统稳定性造成影响,并有效跟踪期望输出,定义如下准则函数

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

最终化简可得:

其中,ρ∈(0,1]是步长因子,加入它是为了使算法更具一般性和灵活性,从最优化角度调整搜索步长。
上式中的时变伪偏导数
需要利用系统的输入输出(I/O)数据进行在线估计,同样使用最小二乘思想设计准则函数为:

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

这样,一个完整的基于紧格式动态线性化的无模型自适应控制控制器就设计完成了。
收敛性分析
从上面式子可以看出在控制率更新和伪偏导数更新中存在算法参数如:步长因子
,权重因子
等,接下来系统分析一下其对收敛性的影响。
在控制率更新中步长因子
和权重因子
共同影响了控制率的“行动”。当步长因子
较大时,控制器对当前的跟踪误差反应强烈,会施加一个较大的修正量。好处是系统收敛速度很快,能够迅速减小误差。但坏处也很明显,过大的步长容易导致超调,甚至引起系统输出在目标值附近来回震荡,难以稳定;当
较小时,控制器动作变得非常谨慎,每一步的调整都很细微。这使得系统响应变慢,收敛时间变长,但过程通常会比较平滑,超调量小。这部分可以类比成PID环节中的比例控制。
权重因子
的作用是惩罚控制输入u(k)的剧烈变化。从控制率公式的分母项可以看出,它的本质是一个阻尼器,用来限制控制器的变化。当
较大时,对控制量变化的惩罚加重。这意味着算法会极力避免控制动作的大幅波动。结果就是系统输出变化平缓,稳定性增强,能够有效抑制可能的振荡。但缺点是,由于控制动作受限,系统的响应速度会变慢,跟踪误差的收敛也会变得迟缓;当
较小时,对控制量变化的约束变弱。控制器可以更“自由”地根据跟踪误差来调整输出,从而获得更快的响应。然而,这也可能导致控制量变化过于剧烈,系统容易产生超调和振荡。这部分可以类比成PID环节的微分控制(不完全正确)。
除了上述参数,在伪偏导数更新中同样存在步长因子
,权重因子
,这两个参数决定了控制器的“认知”(即如何估计系统的动态特性
)。
当
较大时,伪偏导数PPD估计值变化快,能够迅速捕捉系统动态特性的变化。但是系统对工况变化响应快,但估计值可能波动大,导致控制输入抖动,甚至发散;当
较小时,PPD估计值变化缓慢,平滑历史信息,但系统鲁棒性强,对噪声不敏感,但跟踪时变系统(如参数突变的系统)的能力下降,收敛慢。
参数
的作用同样是限制PPD的变化率。当
较大时,系统稳定性高,但可能无法准确辨识系统的真实增益,导致控制性能(如跟踪速度)下降;当
较小时,具有最优的估计性能,但对噪声敏感。如果 μμ 过小且输入长时间不变(Δu接近0),估计值可能会因数值问题而漂移。
综上,上述表达式中参数对收敛性能的影响就全部解释完毕。接下来通过与PID的对比实验,更加细节的展示算法流程。
仿真示例
仿真环境搭建
工具选择:MATLAB
被控对象示例:非线性系统
选取非线性系统为:
设置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.