0

我有一个关于使用 GitHub 上提供的 parameter_variation.py 脚本的问题。

我在这里使用 FMPy 函数(https://github.com/CATIA-Systems/FMPy)并且只有在我运行某个 FMU 时才会发生特定错误,这与我一直使用的其他 FMU 略有不同提供的 parameter_variation.py 示例脚本的修改版本。

错误:

...    
File "c:\parameter_variation.py", line 136, in simulate_fmu
    fmu.terminate()    
File "C:\AppData\Local\Continuum\anaconda3\lib\site-packages\fmpy\fmi2.py", line 231, in terminate
   return self.fmi2Terminate(self.component)    
File "C:\AppData\Local\Continuum\anaconda3\lib\site-packages\fmpy\fmi2.py", line 169, in w res = f(*args, **kwargs)    
OSError: exception: access violation reading 0xFFFFFFFE1CD34660    
End

我在 20 个块中为此 FMU 运行 100 次模拟,尽管如果我在 ~6 个块中运行少于 ~30 个模拟,parameter_variation.py 脚本中的相同 FMU 似乎会提供结果。

您是否有任何猜测为什么会发生访问冲突错误以及如何伪造解决方案?让我知道这是否足够的信息。

提前致谢。

4

1 回答 1

1

在标题中,您提到了许多 FMU 不支持的多线程(同一进程中同一 FMU 的多个实例),并且可能导致意外的副作用(例如,通过访问共享资源)。如果是这种情况,您应该能够通过sync = Trueparameter_variation.py (第 27 行)中设置变量来使用同步调度程序运行您的变体。

于 2018-04-26T17:55:23.037 回答