主要内容

本页采用了机器翻译。点击此处可查看英文原文。

基于机器学习的双罐系统辨识

本示例演示了如何对非线性双储罐系统的黑盒动态模型进行辨识。

xxTwoTankBB.png

对于该系统,输入 u(t) 是指施加在水泵上的电压 [V],该电压会驱动水流流入上水箱。水从上水箱底部的孔中流过,填满下水箱。双罐系统的输出值 y(t) 表示下罐的液位 [m]。

该示例使用了包含两个储罐系统 3000 个输入-输出采样值的测量数据,这些数据是在 0.2 秒的采样时间下生成的。加载数据集并创建一个 iddata 对象。

load twotankdata
z1f = iddata(y,u,0.2,'Name','Two-tank system');

该数据集也在以下示例中使用。

本示例介绍如何利用非线性 ARX 模型结合回归树集成模型进行黑盒建模。因此,不假设读者已了解实际的物理定律。

回归树集成模型是一种非参数模型,其结构是由多棵回归树按权重组合而成的。每棵回归树都由决策节点和叶节点组成。决策节点代表待测试属性(特征)的某个值。叶节点代表与该决策相关的值 [1]。通过将数据集划分为越来越小的组件,递归地估计回归模型。通过组合多个回归树,可以提高回归树集成模型的预测性能。

预处理数据

在对模型进行估计之前,应先将数据划分为估计集和验证集,以此对数据进行预处理。然后,对数据进行滤波,以去除高频噪声。

将数据集分成两个大小相等的子集。您使用数据集 z1 对模型进行估计,并使用数据集 z2 对模型进行验证。

z1 = z1f(1:1500);
z2 = z1f(1501:3000);
plot(z1,z2)
legend('Estimation','Validation');

MATLAB figure

从图中可以看出,输出数据中存在高频噪声。应用低通滤波器来消除这种噪声。

z1f = idfilt(z1,3,0.066902);
z2f = idfilt(z2,3,0.066902);

通过从每个数据集的开头截去初始数据点,消除滤波器初始条件对数据的影响。

z1f = z1f(20:end);
z2f = z2f(20:end);

绘制原始估计数据和相应的滤波数据。

plot(z1(20:end),z1f)
legend('Estimation (unfiltered)','Estimation (filtered)', ...
    'Location','best')

MATLAB figure

绘制原始验证数据及其对应的过滤后数据。

plot(z2(20:end),z2f)
legend('Validation (unfiltered)','Validation (filtered)', ...
    'Location','best')  

MATLAB figure

模型估计与验证

使用默认设置创建一个决策树集成映射对象。您可以估计将此非线性作为输出函数的非线性 ARX 模型。使用此映射对象需要 Statistics and Machine Learning Toolbox™ 软件。

ens = idTreeEnsemble;

对同时包含输入和输出自变量的非线性 ARX 模型进行估计。

mdl1 = nlarx(z1f,[30 30 0],ens);

仅使用输入自变量对非线性 ARX 模型进行估计。

mdl2 = nlarx(z1f,[0 150 0],ens);

将估计模型的输出结果与实测估计数据进行比较。

compare(z1f,mdl1,mdl2)

MATLAB figure

将估计模型的输出结果与实测验证数据进行比较。

compare(z2f,mdl1,mdl2)

MATLAB figure

另请参阅

|

主题