比较测量数据和模拟数据以校准和验证Modelica模型的方法

时间:2017-05-25 14:12:31

标签: modelica dymola

这是一个相当普遍的问题。我正在尝试针对实验测量的数据验证Modelica模型。过去,我只是简单地添加了一个CombiTable,并将数据复制到组件中。但是,我将使用至少15列我希望匹配和比较的数据。

我的问题是,您建议使用哪些方法,提示和技巧来比较测量和模拟数据,以便更轻松地校准和验证您的Modelica模型?

2 个答案:

答案 0 :(得分:2)

我一直很好奇其他人如何做到这一点......

对我来说,我创建了一个模型,我在所有的示例中都进行了回归测试并吐出了关于通过/失败的报告。 "正确"数据可以从combiTable输入(与您一样多的维度)或直接作为输入变量输入。

回归测试是一个带有容差的数组的函数。

当然,您可以使用mat文件结果(如BuildingsPy)或两者兼而有之,将Modelica之外的内容转换为Python等。

以下是迄今为止对我有用的代表:

model TestCheck

parameter Integer n "Length of variable vector";
parameter Real tolerance = 100;

input Real[n] x_1 "Values of interest" annotation(Dialog(group="Input Variables:"));
input Real[n] x_2 "Reference values" annotation(Dialog(group="Input Variables:"));

Real passedTest "if 0 (false) then expected and actual values do not match within the expected error";

Real Error_rms "Root Mean Square error sqrt(sum(Error_abs.^2)/n)";
Real[n] Error_abs "Absolute error (x_1 - x_2)";
SIadd.nonDim[n] Error_rel "Relative error (x_1 - x_2)/x_2";

Boolean allPassed(start=true);

equation 

  (Error_rms,Error_abs,Error_rel,passedTest) = ErrorTestFunction(x_1,x_2, tolerance);

 when passedTest < 1 then
   allPassed = false;
 end when;
end TestCheck;

答案 1 :(得分:1)

对于模型校准和验证,我们将模型导出到FMU并在其他工具中完成,我们成功地使用了例如MATLAB或Mathematica。

在大学过去的研究项目中,我们开发了基于集合边界估计复杂模型的模型参数的工具。借鉴MATLAB优化工具箱的遗传算法尝试数十到数千次模拟,以获得尽可能接近的结果。后端.NET,前端HTML 5,Javascript +通过REST API进行Jquery通信,独立的计算节点通过REST api暴露FMU。有限演示app.physiovalues.org