如何使用OMPython调用Python中的OpenModelica模型?

2024-10-01 15:36:37 发布

您现在位置:Python中文网/ 问答频道 /正文

欧米迪用OpenModei制作的模型。为了得到一个具体的例子,我设计了以下内容:

OpenModelica Model from OMEdit called myGain

现在我想用Python运行这个模型。我可以用OMPython来做这个。导入OMPython并加载文件后,我使用以下命令运行模拟:

结果=OMPython.execute公司(“模拟(myGain,numberofinterval=2,outputFormat=\“mat\”)

现在将运行模拟,并将结果写入文件。在

现在,我想运行相同的模型,但对常量块使用不同的参数。在

我怎么做?在

由于参数已编译到模型中,因此不应更改它。所以我需要一个这样的模型:

myGain with a variable as parameter

是否可以从Python调用模型并将变量“a”设置为特定值?在

使用命令OMPython.execute公司但不能像“numberofteam”那样指定更多的“format”(“numberofetim”)。在


Tags: 文件模型命令execute参数公司例子常量
3条回答

可以向simulate命令发送更多标志。例如simflags来覆盖参数。有关详细信息,请参见https://openmodelica.org/index.php/forum/topic?id=1011。在

您还可以使用buildModel(...)命令后跟system("./ModelName -overrideFile ...")来避免重新翻译和重新编译,或者使用一些较小的脚本并行参数扫描。如果使用Linux或OSX,调用OMPython创建可执行文件,然后自己调用它应该很容易。在Windows上,您需要设置一些环境变量才能使其按预期工作。在

我相信您正在寻找setParameterValue命令。你可以在这里阅读:https://openmodelica.org/download/OMC_API-HowTo.pdf

基本上,只要a是模型中的一个参数,就可以在运行模拟的行之前向python脚本添加类似于OMPython.execute("setParameterValue(myGain, a, 20)")的行。在

  • 在windows中创建一个新文件夹

  • 在此文件夹中,放入/创建2个新文件file1.pyfile2.bat

  • file1.py的内容是:


import os
import sys
sys.path.insert(0, "C:\OpenModelica1.11.0-32bit\share\omc\scripts\PythonInterface")
from OMPython import OMCSession
sys.path.insert(0, "C:\OpenModelica1.11.0-32bit\lib\python")
os.environ['USER'] = 'stefanache'
omc = OMCSession()
omc.sendExpression("loadModel(Modelica)")
omc.sendExpression("loadFile(getInstallationDirectoryPath() + \"/share/doc/omc/testmodels/BouncingBall.mo\")")
omc.sendExpression("instantiateModel(BouncingBall)")
omc.sendExpression("simulate(BouncingBall)")
omc.sendExpression("plot(h)")`
  • file2.bat的内容是:

^{pr2}$

  • 然后点击file2.bat。。。请耐心点!在

此时将显示打印结果窗口。在

相关问题 更多 >

    热门问题