相关疑难解决方法(0)

使用 PyFMI 进行灵敏度分析 - for-loop 中的 FMU

主要目标

区域供热网络的敏感性分析。

方法

  1. 使用 AixLib 和 BuildingSystem 库的系统 Modelica 模型(在 Dymola 中)

  2. 将模型导出为 FMU 协同仿真

  3. 使用SALib(灵敏度分析python库)定义样本(参数扫描)

  4. 使用 PyFMI 在 Python 中的 for 循环中为所有单个样本运行模型(并并行化 for 循环,可能使用 JobLib 在多个处理器上执行模拟)

  5. SALib 执行基于方差的敏感性分析 ( http://salib.readthedocs.io/en/latest/basics.html#an-example )

第一步

Ishigami 函数的简单模型模型(与时间无关)。该函数常用于测试敏感性分析方法(https://www.sfu.ca/~ssurjano/ishigami.html)。

python 代码(包括使用 PyFMI 加载 FMU 和参数扫描)工作正常。

问题

经过一定量的模拟后,我们得到一个错误。错误输出看起来并不总是相同的。有时我们得到

FMUException:加载二进制文件时出错。无法加载 DLL:Eine DLL-Initialisierungsroutine ist fehlgeschlagen。

翻译:DLL 初始化例程失败。

有时我们会得到:

FMUException:加载二进制文件时出错。无法加载 DLL:Für diesen Befehl ist nicht genügend Speicher verfügbar。

翻译:此命令没有足够的可用内存

该错误发生在大约 650 次模拟运行后。这与模拟是在一个接一个地重新运行的较小循环块中执行还是一个单独的 for 循环运行所有模拟无关。通过重新启动 python 控制台/进程,可以再次运行新的模拟。

工作环境:

Windows 10、Python 2.7、使用 …

python modelica fmi jmodelica

5
推荐指数
2
解决办法
1965
查看次数

标签 统计

fmi ×1

jmodelica ×1

modelica ×1

python ×1