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

Dymola和OpenModelica生成的可执行文件之间的差异,modelica,dymola,openmodelica,Modelica,Dymola,Openmodelica,我正在考虑使用Dymola(dymosim.exe)或OpenModelica(model_name.exe)生成的可执行文件在同一模型上进行参数模拟。 我想知道,这两个.exe文件和相关的输入文件有什么不同吗?(对于Dymola是dsin.txt,对于OpenModelica是model_name_init.xml) 关于文件大小,我可以看到Dymola文件更小。但我也很好奇脚本的执行速度和输入文件的灵活性。 最后,由于Dymola是一种商业软件,那么dymosim.exe文件是否可以公开共享

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

关于文件大小,我可以看到Dymola文件更小。但我也很好奇脚本的执行速度和输入文件的灵活性。
最后,由于Dymola是一种商业软件,那么dymosim.exe文件是否可以公开共享?

我将为OpenModelica编写此文件,Dymola人可以添加自己的文件

我建议使用FMU代替可执行文件和一些(协同)模拟框架,如OMSimulator(通过Python脚本)或其他框架(PyFMI等)。请参见此处的示例:

请注意,如果您有表等资源,如果您使用Modelica URI,这些资源将放在FMU中:
modelica://LibraryName/Resource/blah
。但是,对于生成的可执行文件,您需要将它们与exe一起提供,并且它们需要位于另一台计算机上的特定目录中。此外,您还需要为FMU的可执行文件提供依赖DLL,这是不需要的,因为它们是静态编译的

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

有关OpenModelica支持哪些库,您可以查看库覆盖率:

如果仍要使用可执行文件,则以下是它们的命令行参数列表:

如何通过可执行文件进行参数扫描: 对于Dymola:

如果您拥有相应的二进制输出许可证,则可以生成可分发的
dymosim.exe

参数扫描可以在Dymola内部运行(脚本自动生成),也可以从Python等运行

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

  • 减少启动/停止dymosim.exe的开销,尤其是对于小型模型
  • 自动并行化
dymosim的这一部分目前未在手册中详细记录,但您可以运行:

  • dymosim-M
    默认情况下基于两个csv文件(
    multi.csv
    multOutHeader.csv
    )进行扫描,生成第三个(
    multOut.csv
  • dymosim-M-1 mIn.csv-2 mOutH.csv-3 mOut.csv
    如果需要不同的文件名
  • dymosim-M-n45
    生成正常轨迹文件,dsres45.mat,dsres46.mat
  • dymosim-h
    获取帮助
  • dymosim-s
    正常模拟
  • 如果你真的很大胆,你可以通过管道到/从
    dymosim.exe
    进行参数扫描

另一种可能性是FMUS代替。

你考虑使用FMI()吗?这将为您提供一个干净的接口定义和一个很好的基础,例如FMPy()。我想到了它,但我想到.exe文件主要是因为两个原因:1)我不太熟悉FMI,2)实际的参数化过程应该在后台运行,因为我已经有了某种GUI。我仍然可以使用FMI方法,但问题是:好处是什么?如果我理解正确,FMI方法的一个优点可能与以下事实有关:在不同的操作系统(Windows、macOS和Linux)中更容易实现该过程。您是否看到dymosim.exe和FMU这两种方法在计算时间上有何差异?从您的回答中,我可以看出dymosim.exe方法在这方面可能有一些优势,因为它允许减少启动/停止和自动并行化的开销。如果我使用FMU方法,这些选项也可能吗?但我可能忽略了一个更一般的问题:我可以直接使用Python(例如使用FMPy)模拟Dymola导出的FMU吗?或者我需要额外的软件吗?生成的FMI(可能需要许可证)应该在FMPy中工作,并且您应该能够通过在程序中只加载一次FMU来减少FMU的开销。(对于并行执行,每个线程加载一个FMU并并行运行可能是最容易的。)当你说“可能需要许可证”时,你的意思是如果我生成一个FMU,并将这个FMU交给我的一个同事,他/她需要安装一个许可的Dymola?不,你有一个Dymola许可证就足够了,但我不记得你是否需要一些特殊的选择。只是为了确保我理解。基本上,如果我使用OpenModelica导出FMU,然后将其分发给其他人,这些人是否能够使用PyFMI或任何其他基于FMI的模拟工具来模拟FMU?是的,或者任何其他基于FMI的模拟工具。关于.exe方法:我只是仔细查看了model_name_init.xml文件,我可以看到第10行(至少在我的文件中)上写着“OPENMODELICAHOME”它似乎指向了与OpenModelica安装相关的路径。此外,还有多条“文件名”线指向存储用于模拟的modelica模型(.mo文件)的路径。这是否意味着其他用户也需要.mo文件?如果是,FMU方法也是这样吗?这些都是调试用的,因此您不需要安装或库。对于exe,您需要:Model.exe Model_init.xml Model_info.json和所需的DLL。对于1.17.0,您只需要libstdc++-6.dll,对于1.18.0,我们动态链接exe时,您需要更多。当您说“对于生成的可执行文件,您需要将其与exe一起发送,并且它们需要位于另一台计算机上的特定目录中”时,您的意思是我无法为它们创建相对路径?我真的遇到了