首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PyFMI进行仿真后重设FMU

用PyFMI进行仿真后重设FMU
EN

Stack Overflow用户
提问于 2022-08-19 13:19:19
回答 2查看 111关注 0票数 1

我试着用PyFMI和函数do_step()多次模拟我的Dymola,每次运行后,它应该从一开始就开始。

第一次模拟按预期运行,但随后初始化失败/暂停并停止:

代码语言:javascript
复制
"FMIL: module = b'Model', log level = 4: b'[][FMU status:OK] Non-linear solver will attempt to handle this problem.\n'
FMIL: module = b'Model', log level = 4: b'[][FMU status:OK] Residual was NaN or Inf.\n'"

“伪码”:

代码语言:javascript
复制
model = load_fmu(r'path', kind="CS", log_level=4)
model.initialize()    
model.setup_experiment(start_time=start_time)


for run in range(2):
  for step in steps:
     status = model.do_step([:], new_step=True)
  model.setup_experiment(start_time=start_time)       
  model.initialize()  # <- Fails

FMU与Dymola 2022一起创建。

有人有类似的问题吗?我对其他FMU和这个python库没有问题。

编辑:

我尝试过使用FMpy,在这里它运行没有问题,但速度慢得多。

EN

回答 2

Stack Overflow用户

发布于 2022-08-22 07:17:06

您需要重置FMU,然后才能再次初始化它。使用:

代码语言:javascript
复制
model.reset()

重置FMU。即:

代码语言:javascript
复制
for run in range(2):
  for step in steps:
     status = model.do_step([:], new_step=True)
  model.reset()
  model.setup_experiment(start_time=start_time)       
  model.initialize()  # <- Fails
票数 1
EN

Stack Overflow用户

发布于 2022-08-20 07:25:48

在重新初始化之前,您应该用fmi2Reset重新设置FMU,参见FMI2.0规范https://github.com/modelica/fmi-standard/releases/download/v2.0.3/FMI-Specification-2.0.3.pdf的2.1.6

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73417430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档