技术文章和通讯

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

斯图尔特·科佐拉(Stuart Kozola), MathWorks,丹·多尔蒂(Dan Doherty), MathWorks


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

使用金宝app以直流电机模型为例,介绍了本文中的工具和技术MATLAB统计和机器学习工具箱这使您能够快速、轻松地分析系统模型中的不确定性,并了解其如何影响模型性能。

直流电机模型

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

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

感兴趣的输出特性是上升时间和稳态角速度(图2)。该模型的输出接近该单一操作条件下的制造商规格,但我们如何知道我们的模型在该单一校准点之外是准确的?

图2。直流电机模型在32伏输入下空载运行(J=0)的模拟输出。将模拟结果(实际)与制造商规范(spec)进行比较。

我们必须确保我们的模型是准确的范围的输入条件下,电机将运行。为了做到这一点,我们需要在一组具有代表性的运行条件下从实际的电机获取实验数据,然后将结果与在相同输入条件下模拟我们的模型的结果进行比较。

获取实验数据

我们使用实验设计(DOE)来推导包含全部输入条件的最小测试点集。在选择合适的实验设计之前,我们确定了我们希望调查的因素、范围和水平,如下:

因素 范围 水平
电源电压(Vs) 12-36伏 12、24、36 v
惯性负载(Jd) 0 - 0.005公斤米2 0.001, 0.003, 0.005 kg m2

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

factorNames = {“电压”惯性载荷的};noFactors =长度(factorNames);设计= ccdesign (noFactors,“类型”“面对”);

图3显示了设计空间中的测试点。中心点(V年代= 24 V, Jd = 3 kg m2),重复8次,给出一种估计实验误差的方法,共得到16个测试点。

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

本设计实验假设测试的是单个测试操作员和单个直流电机。为了说明操作员和电机之间的潜在差异,我们对三个不同操作员测试的三个不同电机重复了该实验,结果总共进行了9次测试。

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

检测结果=数据集(“XLSFile”“testResults.xls”);byPt = grpstats(检测结果,{“DOE_Point”},... {@mean@std},“DataVars”, {的上升时间“SSVelocity”});
图4。测试结果总结。

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

组= {ds.DOE_Vemf ds.DOE_J, char (ds.Motor), char (ds.Operator)};varNames = {“电压”“惯性”“马达”“运营商”}; anovan(ds.RiseTime,group,1,3,varNames)anovan(ds.SSVelocity,group,1,3,varNames)

图5显示了方差分析结果。每个表中最右边的列显示了p-value (Prob>F),这是用于确定Source列下列出的变量是否重要的度量。p值在0.05或以下时,95%可信地表明来源是显著的。我们的方差分析结果显示,电压和惯性对上升时间和稳态速度有显著影响,而不同的操作人员和电机的差异不显著。

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

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

比较测试和模拟数据

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

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

如图6所示,我们的模型在输入条件下的误差不是恒定的,它的平均值也不是零。然而,百分比误差相对较小,上升时间误差范围为-0.5%至-1.8%,稳态角速度误差范围为-0.68%至-0.82%,适用于我们的应用。我们可以通过使用金宝app模型参数估计

根据我们目前的分析,我们的模型似乎相当准确,但它在多大程度上代表了更大的电机样本?我们的方差分析测试表明,电机之间的差异并不显著,但我们只观察了三个样本电机。事实上,将制造数千台,由于制造公差和其他因素,每台都会略有不同。我们需要进行更彻底的评估,以确定我们的模型是否足够稳健,能够准确地对这种设计的所有电机建模。

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

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

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

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

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

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

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

图7.使用MATLAB中的plotmatrix创建的Monte Carlo模拟的选定结果。单击图像查看放大视图。

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

我们想确定我们的模拟散射是否与我们在实验中观察到的变化一致。为此,我们将先前收集的实验数据叠加到模拟结果上(图8)。

图8。对比实验数据(红色)和Monte-Carlo模拟结果(蓝色)。

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

总结

评估模型精度和考虑不确定模型参数是建模过程的重要组成部分。它提供了对系统操作的深入了解,并有助于确保模型的准确性。

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

然后,我们进行了蒙特卡罗模拟,以查看我们的模型是否能够准确地捕获因电机之间的微小差异而导致的性能变化。我们得出结论,我们的模型可靠地预测了电机之间的性能变化。

2007年出版的

查看相关功能的文章