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。
我正在考虑使用 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。