技术文章和通讯

利用统计学分析系统模型中的不确定性

由Stuart Kozola,MathWorks和Dan Doherty,MathWorks创作


工程师和科学家依靠模型来描述系统行为。系统模型通常是在模型输入、定义参数(常数)和操作环境精确已知的假设下创建和分析的。然而,现实世界中的每个系统都是在不确定性下运行的,不考虑这种不确定性可能导致对系统行为的不准确预测。

用一个金宝app直流电机作为例子的模型,本文介绍的工具和技术,马铃薯统计和机器学习工具箱可以让你轻松快速地分析不确定性在你的系统模型,并了解它是如何影响模型的性能。

直流电机模型

直流电机模型(图1)有两个输入——电源电压(Vs)和惯性负载(Jd)——和六个可调模型参数。这些参数是根据电机制造商规范定义的,在我们的模型中假定为常数。

图1.Maxon直流金宝app电机的Simulink模型(左)和显示模型定义参数的对话框(右)。单击图像查看放大视图。

的感兴趣的输出特性是上升时间和稳态角速度(图2)。该模型的输出接近生产的规格为这个单一的操作条件,但我们怎么知道,我们的模型是正确的外这种单一校准点?

图2.从卸载的直流电动机模型操作(J = 0)与32伏特输入模拟输出。模拟的结果(实际)的曲线与制造商的规格(SPEC)。

我们必须确保我们的模型在电机运行的输入条件范围内是准确的。为此,我们需要从实际电机中获得一组典型运行条件下的实验数据,然后将结果与在相同输入条件下模拟我们模型的结果进行比较。

获取实验数据

我们使用实验设计(DOE)得出覆盖整个输入条件范围的最小测试点集。在选择合适的实验设计之前,我们确定了我们希望调查的因素、范围和水平,如下所示:

因素 范围 水平
电源电压(VS) 12 - 36 V 12、24、36伏
惯性载荷(JD) 0-0.005千克/米2. 0.001、0.003、0.005千克米2.

统计和机器学习工具箱提供了几个实验设计选项。我们为此应用程序选择以面为中心的中心复合设计。命令CCD设计产生输入组合测试,其中每行代表一个单独的测试的矩阵。

因子组={'电压',“惯性负载”}; noFactors=长度(factorNames);设计=ccdesign(无因素,'类型',“脸”);

图3显示了设计空间内的测试点s=24 V,Jd=3 kg m2)重复8次,以给我们提供一种估算实验误差的方法,总共产生16个测试点。

图3。以图形格式显示的双因素中心复合测试计划。

此设计的实验假定单个测试操作者和单个DC马达进行测试。要考虑跨运营商和电机的电势差,我们重复了由三个不同的运营商测试了三种不同的电机实验,结果是共有9次测试。

我们将测试数据导入MATLAB,并使用统计和机器学习工具箱中的数据集数组进行存储grpstats函数,我们计算每个测试点的平均值和标准偏差(图4)。

testResults=dataset('XLSFile','testResults.xls');byPt=grpstats(测试结果{'DOE_Point'} ... {@mean @std},“数据变量”,{“上升时间”,“SSVelocity”});
图4。测试结果摘要。

16个测试点的平均上升时间和稳态速度值明显不同,这表明这些值取决于电压和惯性负载输入。非零标准偏差表明操作员和电机之间存在差异。为了测试这些差异是否显著,我们对变量进行了分析对操作员、电机和输入进行nce(ANOVA)测试。

group={ds.DOE_Vemf,ds.DOE_J,char(ds.Motor),char(ds.Operator)};varNames={'电压',“惯性”,'马达',“操作员”};anovan(ds.RiseTime,基,1,3,varNames)anovan(ds.SSVelocity,基,1,3,varNames)

图5显示了方差分析的结果。各表最右侧的列显示了p值(Prob>F),一种用于确定源列下所列变量是否显著的度量。p值等于或低于0.05表示源显著性的置信度为95%。我们的方差分析结果表明,电压和惯性对上升时间和稳态速度有显著影响,而操作员和电机之间的差异则不显著重要的

图5上升时间(左)和稳态速度(右)的方差分析结果。点击图片查看放大图。

请记住,设计实验的目的是得出测试点,使我们能够检查直流电机模型在所有输入条件下的准确性。现在我们已经获得了实验数据,并证明它是可靠的(换句话说,操作员和电机之间的差异并不显著),我们将对模型进行模拟,并将模拟数据与测试数据进行比较。

比较试验数据和仿真数据

图6显示了平均模拟误差电压和惯性载荷的函数。这些图显示的剩余数据作为响应面,这是我们装配使用regstats来自统计和机器学习工具箱的函数。

图6。上升时间(左)和稳态角速度(右)的平均模拟误差。单击图像以查看放大视图。

如图6所示,我们的模型的误差不跨越输入条件不变,而且它确实不平均为零。%的误差比较小,但是,范围从-0.5%至-1.8%,持续上升时间和-0.68%至-0.82%为稳态角速度,并且是用于我们的应用是可接受的。我们可以通过使用模型参数拟合数据进一步降低我们的模型中的错误金宝appSimulink参数估计.

根据我们的分析,到目前为止,我们的模型似乎是相当准确的,但它是如何代表更大的电机样品?我们的方差分析表明,电机对电机变化并不显著,但我们只能看着三个样本电机。在现实中,数千将被制造,并且因为制造公差和其他因素,每个会稍有不同。我们需要进行更彻底的评估,以确定我们的模型是否足够强大到这种设计的所有电机精确建模。

评估的不确定性的模型参数的影响

为了解释电机特性的不确定性,我们将模型参数定义为值的分布,而不是单一的固定值。然后,我们执行蒙特卡罗模拟,使用随机参数值组合重复运行模型。

在进行蒙特卡罗模拟之前,我们必须定义不确定的电机参数。我们使用统计和机器学习工具箱中的随机数生成器为每个参数创建1000个随机样本。电枢参数(电阻Ra和电感La)的公差约为10%,转矩常数(Kt)的公差约为3%。我们假设这些参数服从正态分布。

mcSamples=1000;mcRa=normrnd(1.71,0.17/3,[MC1]);%电枢电阻mcLa=normrnd(0.3,.03/3,[MC1]);%电枢电感mcKt=normrnd(44.5,1.33/3,[MC1]);%轴惯性mcKemf=30000/pi./mcKt;%反电动势mcJ=normrnd(65.2,0.70/3,[mc样本1]);%轴惯性MCB = normrnd(7.1213e-7,7e-8/3,[mcSamples 1]);%粘性阻尼

输入电压和惯性负载定义为其适当范围之间的均匀分布,以确保覆盖整个设计空间。

%设置电机的输入条件:mcV=unifrnd(12,36,[mcSamples 1]);mcJd=unifrnd(0.001,0.005,[mcSamples 1]);

图7显示了总结蒙特卡罗模拟结果的矩阵图。

图7.选择从蒙特卡罗模拟的结果,造成了使用MATLAB plotmatrix。点击图片查看大图。

对角线显示了模型参数和输出的直方图,对角线上方和下方的曲线图有助于快速发现模型参数和输出之间的趋势。除了稳态速度上的输入电压和上升时间上的惯性负载外,大多数曲线图都不表示强趋势。这两种趋势ds近似线性,并显示出一些分散性,这是我们在仿真中建模的不确定电机参数的结果。

我们要确定我们的模拟散射是否与我们在我们的实验中观察到的变化是一致的。要做到这一点,我们覆盖的实验数据以前收集到的模拟结果(图8)。

图8。实验数据(红色)与蒙特卡罗模拟结果(蓝色)的比较。

实验中观察到的散射似乎与我们的模拟数据中观察到的散射一致。这表明我们的模型可用于准确预测电机之间的性能变化。

总结

评估模型准确性,占不确定的模型参数是建模过程中的一个重要组成部分。它提供了洞察系统的运行情况,并有助于确保您的模型是准确的。

本文介绍了如何MATLAB统计和机器学习工具箱可以用来分析在Simulink中创建一个DC电机模型的不确定性。金宝app我们首先通过在输入条件下,我们预计电动机会遇到的范围进行比较测试和仿真数据量化我们的模型的准确性。结果表明我们的模型预测的上升时间和小于2%的误差,这是我们需要足够准确的稳态速度。

然后我们进行了蒙特卡罗模拟,看看我们的模型是否能准确地捕捉电动机之间的细微差别造成的性能变化。我们的结论是,我们的模型预测,可靠的电机中的表现差异。

2007年出版

查看相关功能的文章