我正在尝试使用Python运行Dymola,每次我更改参数的值时,通过许多“if elseif”使用不同的方程来激活和取消激活相应的方程式。
我正在使用此代码:
def simulateModel(model,startTime,stopTime,resultFile,initialNames,initialValues,finalNames):
output = dymola.simulateExtendedModel(model,
startTime=startTime,
stopTime=stopTime,
numberOfIntervals=500,
outputInterval=0.0,
method="Dassl",
tolerance=0.0001,
fixedstepsize=0.0,
resultFile=resultFile,
initialNames=initialNames,
initialValues=initialValues,
finalNames=finalNames,
autoLoad=False)
status = output[0]
if not status:
print("Simulation failed.")
log = dymola.getLastError()
print(log)
return
result = output[1]
return result
问题在于,当我为参数定义我的新值时,脚本会在模型中更改它们,但它会继续使用上次直接在Dymola上运行程序的同一组方程式,这不是案子, 该程序没有考虑到参数改变了要使用的方程组。
有什么建议吗? 此致
答案 0 :(得分:1)
以下是我的表现方式:
dymola = DymolaInterface()
## This sends the string right to Dymola, in this case to open a Model.
dymola.ExecuteCommand('DymolaCommands.SimulatorAPI.openModel("Path\To\your\file.mo", changeDirectory=false);')
## Now Translate the Model for every time you want to assign certain variables
ModelTranslate = "Dymola.Path.To.Your.Model(Dymola.Path.to.Variable=1000)"
dymola.translateModel(ModelTranslate)
output = dymola.simulateExtendedModel("", 0.0, 2678400, 0, 0.0, "Dassl", 0.0001, 0.0, Result, [], [], ["Path.To.Output" ], True)
但是,我只使用Python 3的界面,我依稀记得它在用户手册中说了一些关于只与Python 3兼容的东西。但你应该在其他编程环境下的用户手册2中找到它。