技术文章及通讯

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

Stuart Kozola, MathWorks和Dan Doherty, MathWorks


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

使用一个万博1manbetx本文以直流电机模型为例,介绍了其中的工具和技术MATLAB而且统计和机器学习工具箱这可以让您快速轻松地分析系统模型中的不确定性,并了解它如何影响模型性能。

直流电机型号

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

uncertainty_fig1_w.jpg
图1。万博1manbetxMaxon直流电机的Simulink模型(左)和显示模型定义参数的对话框(右)。点击图片查看放大视图。

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

uncertainty_fig2_w.jpg
图2。模拟输出从直流电动机模型运行空载(J = 0)与32伏输入。将模拟结果(实际)与制造商规格(规范)进行比较。

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

获取实验数据

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

因素 范围 水平
电源电压(Vs) 12 - 36v 12,24,36v
惯性载荷(Jd) 0 - 0.005 kg m2 0.001, 0.003, 0.005 kg m2

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

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

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

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

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

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

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

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

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

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

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

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

比较测试和模拟数据

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

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

如图6所示,我们的模型的误差在输入条件下不是恒定的,它的平均值也不是零。然而,百分比误差相对较小,上升时间为-0.5%至-1.8%,稳态角速度为-0.68%至-0.82%,对于我们的应用是可以接受的。通过将模型参数与数据进行拟合,可以进一步减小模型的误差万博1manbetxSimulink参数估计

根据我们到目前为止的分析,我们的模型似乎是相当准确的,但它能代表一个更大的电机样本吗?我们的方差分析测试表明电机到电机的变化并不显著,但我们只研究了三个样本电机。在现实中,将制造数千个,并且由于制造公差和其他因素,每个都会略有不同。我们需要进行更彻底的评估,以确定我们的模型是否足够健壮,能够准确地模拟这种设计的所有电机。

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

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

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

mcSamples = 1000;mcRa = normrnd(1.71,0.17/3,[mcSamples 1]);%电枢电阻mcLa = normmrnd(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,[mcSamples 1]);粘性阻尼%

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

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

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

uncertainty_fig7_w.jpg
图7。从蒙特卡罗模拟中选择结果,在MATLAB中使用plot矩阵创建。点击图片查看放大视图。

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

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

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

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

总结

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

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

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

2007年出版的

查看相关功能的文章