我正在尝试将Matlab与Modelica结合起来。
整个过程是:我有5000组数据,每个数据包含20个参数,它们对应于我的Modelica模型。
然而,由于参数的值是随机产生的,在模拟过程中可能会出现误差(如温度过界、收敛误差等)。
如果发生错误,我想“尝试-捕捉”来执行模拟。但是,我意识到,如果来自Modelica的错误存在,Matlab就会停止。我想知道是否有一种方法继续在Matlab中的"for循环“,以便进入下一个输入数据集。
谢谢
发布于 2020-03-22 02:01:16
有几件事你可以做。
为了添加上面的内容,在安装文件夹中,例如./Program /Dymola2020x/Mfiles中,如果您打开该文件夹中的"Contents.m“文件,您将从MATLAB获得有关如何使用"dymosin”执行模拟的所有信息。内容文件还指向向Dymola发送命令、读取和操作轨迹等其他函数。
在此之前,您需要使用实际输入和实际输出连接器来定义输入和输出。然后,要将模型导出为FMU,可以转到模拟菜单,选择Translation下拉列表,然后选择FMU选项,或者执行Ctrl+F9。
根据经验,我建议您使用协同模拟选项,除非您真的需要使用Matlab或Simulink求解器选项。
要运行您的模拟,您有多个选项,我使用以下方法:
2.1。使用命令将模型导入MATLAB,或从来自Modelon的FMI工具箱导入FMU或FMU块。这是一个非常可靠的工具,我从2012年开始在RaPId中使用它,并且它变得非常健壮。此外,它还附带了大量用于模型分析和仿真自动化的额外功能,这些功能非常有用。
2.2。使用FMIKit将模型导入FMU。我最近一直在使用FMIKit,我发现它非常健壮。我只测试了导入FMU到Simulink,不知道你是否可以避免。然后,您可以使用MATLAB命令调用Simulink模型保持FMU。
2.3。在Simulink/Extras库下使用内置的FMU块导入模型,然后使用MATLAB命令调用上述Simulink模型。这个特性直到2017年才出现,所以它有点不可预测。
如果您喜欢FMU选项,并且没有任何“强”依赖项,那么我强烈建议您避免使用MATLAB,转而使用Python。我希望我15年前就这样做了.Dymola在./Program /Dymola2020x/Modelica/Library/python和OpenModelica也有一个很好的Python接口下有一个Dymola接口。这是一些笔记本,从我们的一份文件,让你开始(链接)。
发布于 2020-07-06 10:35:38
基于Dymola文件提供了一种低层次的运行和处理模拟的方法,我实现了一个具有更高层次功能的开放源代码软件,它可以更容易地修改模拟参数和处理结果。
在这个软件中特别有趣的是运行两线程定时模拟的特性。当修改参数值时,由于刚度的原因,模拟可能会非常缓慢。可以在特定的给定持续时间内运行定时仿真,在此期间,该仿真随后通过故障信号被终止。在我的例子中,使用较早版本的Dymola (2008-2014年),我能够运行多个模拟,其中很少有人“被杀”。我不知道它将如何运行与中性的Dymola版本。
尽管该软件是在学术环境而不是商业环境中以一种特殊和快速的方式单独实现的,但到目前为止,对我的目的来说还是很有用的。此外,目前还没有进行维护。尽管如此,我希望它可能会有用,可能在存在一些黑客能力。
https://stackoverflow.com/questions/54756548
复制相似问题