[英]Modelica and Matlab Coupling with Modelica Error
我正在尝试将 Matlab 与 Modelica 结合起来。
整个过程是:我有 5000 组数据,每组数据包含 20 个与我的 Modelica 模型相对应的参数。
然而,由于参数的值是随机生成的,在模拟过程中可能会出现错误(例如,温度超出边界、收敛错误等)。
如果发生错误,我想过“try-catch”来执行模拟。 但是,我意识到如果 Modelica 存在错误,Matlab 会停止。 我想知道是否有办法在 Matlab 中继续“for 循环”以便进入下一个输入数据集。
谢谢
您可以做几件事。
要添加到上述内容,在安装文件夹中,例如,./Program Files/Dymola 2020x/Mfiles,如果您打开该文件夹中的“Contents.m”文件,您将获得有关如何使用“执行模拟”的所有信息dymosin”来自 MATLAB。 内容文件还指向其他函数以向 Dymola 发送命令、读取和操纵轨迹等。
在执行此操作之前,您需要使用实输入和实输出连接器定义输入和输出。 然后,要将模型导出为 FMU,您可以转到 Simulation 菜单,选择 Translation Tab 下拉菜单,然后选择 FMU 选项,或者按 Ctrl+F9。
根据经验,我建议您使用 Co-Simulation 选项,除非您确实需要使用 Matlab 或 Simulink 求解器选项。
要运行您的模拟,您有多种选择,我使用以下内容:
2.1. 使用命令将模型导入 MATLAB,或者使用Modelon的FMI 工具箱中的 FMU ME 或 FMU CS 模块。 这是一个非常可靠的工具,我从 2012 年开始在RaPId 中使用它,它变得非常强大。 此外,它还带有大量用于模型分析和仿真自动化的额外功能,非常方便。
2.2. 使用FMIKit将模型导入 FMU。 我最近一直在使用 FMIKit,我发现它非常强大。 我只测试了将 FMU 导入 Simulink,不知道您是否可以避免这种情况。 然后您可以使用 MATLAB 命令调用包含 FMU 的 Simulink 模型。
2.3. 使用 Simulink/Extras 库下的内置FMU 模块导入模型,然后使用 MATLAB 命令调用上述 Simulink 模型。 这个功能直到 2017 年才出现,所以有点不可预测。
如果您喜欢 FMU 选项,并且您没有任何“强”依赖项,我强烈建议您避免使用 MATLAB 而转向 Python。 我希望我在 15 年前就这样做了...... Dymola 在 ./Program Files/Dymola 2020x/Modelica/Library/python_interface 下有一个 Dymola-Python 接口, OpenModelica 也有一个很好的 Python 接口。 以下是我们其中一篇论文中的一些笔记本,可帮助您入门( 链接)。
基于 Dymola mfiles,它提供了一种运行和处理模拟的低级方式,我实现了一个开源软件,具有更多高级功能,可以更轻松地修改模拟参数和处理结果。
该软件中特别有趣的是运行双线程定时模拟的功能。 当修改参数值时,模拟可能会很慢,例如因为刚度。 可以在特定的给定持续时间内运行定时模拟,之后模拟会被故障信号终止。 在我使用旧版本 Dymola(~2008-2014)的情况下,我能够运行多个模拟,其中很少有人“被杀死”。 我不确定它将如何与最新的 Dymola 版本一起运行。
该软件虽然在学术环境而不是商业环境中以临时和快速的方式单独实施,但迄今为止对我的目的非常有用。 此外,它目前没有维护。 尽管如此,我希望它可能在存在一些黑客能力的情况下有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.