在 OMShell 中更改嵌套模型的参数值

问题描述 投票:0回答:1

我正在尝试熟悉 OMShell,因为我需要使用我自己编写的包中的模型进行多次模拟,扩展建筑物库的模型...多次运行,我想改变使用的天气文件和参数中的一些值-记录定义我的模型。我想编写一个脚本(.mos)来自动执行此过程,并遇到了命令“setParameterValue()”。尝试使用它来操作我模拟的模型中的模型参数似乎不起作用,因为我收到一条错误消息,指出它找不到该类。但当我想操纵模型中的参数并想模拟自身时,它就可以工作。

我加载了我的包>>loadFile(/home/.../mypackage.mo")并模拟了模型>>simulate(mypackage.mymodel)。之后我尝试更改模拟模型中模型的一个参数> >setParameterValue(mypackage.mymodel.anothermodelinsidemymodel,parameter_to_change,value)。

只要参数在我模拟的模型中,它就可以工作。但是深入一个模型级别我无法更改任何参数。

此命令是否有限制仅适用于我模拟的模型而不适用于其中的模型?我想知道如何访问“更深层次”的参数......希望你能明白我想要表达的意思。非常感谢您提前的帮助!

罗马

openmodelica
1个回答
0
投票

我尝试了您回复中链接中的第二种解决方案

loadFile("/home/roman/Modelica/BUI_MyLib/BUI_MyLib.mo") // 加载我的库 模拟(BUI_MyLib.Scenarios.Examples.BenchmarkTR,startTime = 0,stopTime = 1)//“BenchmarkTR”是包含类“weaDat”的类,我想在其中更改定义天气模型中海拔高度的参数

plot(weaDat.alt) // "alt" 默认设置为 201 setComponentModifierValue(BUI_MyLib.Scenarios.Examples.BenchmarkTR.weaDat, alt, 1) 模拟(BUI_MyLib.Scenarios.Examples.BenchmarkTR,startTime = 0,stopTime = 1) plot(weaDat.alt) //“alt”的值仍然是 201

执行 setComponentenModifierValue() 命令时没有得到任何响应...没有“错误:”也没有“确定”

getComponentModifierValue(BUI_MyLib.Scenarios.Examples.BenchmarkTR.weaDat, alt) 似乎可以工作并返回“”,因为没有设置修饰符

您也提到过“loadString”方法是像我想要的那样更改参数的唯一方法吗?我很难理解整个事情应该是什么样子才能适合我的应用程序。

非常感谢! 罗马

© www.soinside.com 2019 - 2024. All rights reserved.