这是一个相当普遍的问题。我正在尝试针对实验测量的数据验证Modelica模型。过去,我只是简单地添加了一个CombiTable,并将数据复制到组件中。但是,我将使用至少15列我希望匹配和比较的数据。
我的问题是,您建议使用哪些方法,提示和技巧来比较测量和模拟数据,以便更轻松地校准和验证您的Modelica模型?
答案 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