Dymola 和 OpenModelica 生成的可执行文件之间的差异

Differences between executable files generated by Dymola and OpenModelica

我正在考虑使用 Dymola (dymosim.exe) 或 OpenModelica (model_name.exe[=19) 生成的可执行文件=]) 在同一模型上进行参数模拟。 我想知道,这两个.exe文件和相关的输入文件有什么区别吗? (对于 Dymola 是 dsin.txt,对于 OpenModelica 是 model_name_init.xml

关于文件大小,我可以看到 Dymola 文件较小。但我也想知道脚本输入文件的执行速度和灵活性。 最后,由于 Dymola 是一款商业软件,dymosim.exe 文件是否可以公开共享?

我会为 OpenModelica 写这个,Dymola 的人可以自己添加。

我建议使用 FMU 而不是可执行文件和一些(协同)模拟框架,如 OMSimulator(通过 Python 脚本)或其他一些框架(PyFMI 等)。请在此处查看示例: https://www.openmodelica.org/doc/OMSimulator/master/html/OMSimulatorPython.html#example-pi

请注意,如果您有表格等资源,如果您使用 Modelica URI,这些资源将被放入 FMU 中:modelica://LibraryName/Resource/blah。但是,对于生成的可执行文件,您需要将它们与 exe 一起发送,并且它们需要位于另一台机器上的特定目录中。此外,您需要为 FMU 的可执行文件提供依赖的 DLL(大多数情况下 - 如果您在模型中调用外部 dll,则不正确)不需要,因为它们是静态编译的。

模拟速度取决于模型,有时一个或另一个更快。

对于 OpenModelica 支持的库,您可以查看库覆盖率: https://libraries.openmodelica.org/branches/overview-combined.html

如果您仍想使用可执行文件,这里是它们的命令行参数列表:https://www.openmodelica.org/doc/OpenModelicaUsersGuide/latest/simulationflags.html

如何通过可执行文件进行参数扫描: https://openmodelica.org/doc/OpenModelicaUsersGuide/latest/scripting_api.html#simulation-parameter-sweep

对于迪莫拉:

如果您有适当的二进制导出许可证,您可以生成可以分发的 dymosim.exe

参数扫描可以在 Dymola 中 运行(脚本自动生成),或来自 Python 等

但是,运行以这种方式扫描参数不仅会使用 dsin.txt,还会使用一些额外的文件。有两个原因:

  • 减少了 starting/stopping dymosim.exe 的开销,尤其是对于小型模型。
  • 自动并行化。

dymosim 的那部分目前在手册中没有很好的记录,但你可以 运行:

  • dymosim -M 默认扫描基于两个 csv 文件 (multIn.csv, multOutHeader.csv) 生成第三个 (multOut.csv)
  • dymosim -M -1 mIn.csv -2 mOutH.csv -3 mOut.csv 如果你想要不同的文件名
  • dymosim -M -n 45 生成法线轨迹文件,dsres45.mat, dsres46.mat, ...
  • dymosim -h寻求帮助
  • dymosim -s正常模拟
  • 如果你真的很大胆,你可以通过管道 to/from dymosim.exe 进行参数扫描

另一种可能性是使用 FMU。