我有一个用OMEdit制作的OpenModelica模型 . 为了得到一个具体的例子,我设计了以下内容:
现在我想在Python中运行该模型 . 我可以通过使用OMPython来做到这一点 . 导入OMPython并加载文件后,我使用以下命令运行模拟:
result = OMPython.execute("simulate(myGain, numberOfIntervals=2, outputFormat=" mat \ _ _ _ ")")
现在运行模拟并将结果写入文件 .
现在我想运行相同的模型,但是常量块的参数不同 .
我怎样才能做到这一点?
由于参数被编译到模型中,因此无法对其进行更改 . 所以我需要的是这样的模型:
是否可以从Python调用模型并将变量“a”设置为特定值?
使用命令OMPython.execute("simulate(...)"),我可以指定一些环境变量,如"numberOfIntervals"或"outputFormat",但不能更多 .
3 回答
我相信你正在寻找
setParameterValue
命令 . 你可以在这里阅读:https://openmodelica.org/download/OMC_API-HowTo.pdf基本上,您可以在运行模拟的行之前向您的python脚本添加类似于
OMPython.execute("setParameterValue(myGain, a, 20)")
的行,只要a
是模型中的参数即可 .您可以向simulate命令发送更多标志 . 例如,用于覆盖参数的simflags . 有关详细信息,请参阅https://openmodelica.org/index.php/forum/topic?id=1011 .
您还可以使用
buildModel(...)
命令后跟system("./ModelName -overrideFile ...")
来避免重新转换和重新编译,或者使用一些次要脚本并行参数扫描 . 如果您使用Linux或OSX,则应该很容易调用OMPython来创建可执行文件,然后自己调用它 . 在Windows上,您需要设置一些环境变量才能使其按预期工作 .在Windows中创建一个新文件夹
在此文件夹中放置/创建2个新文件
file1.py
和file2.bat
file1.py内容为:
将显示绘制的结果窗口 .