问题标签 [pyfmi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
450 浏览

python-3.x - 如何将 Python 3 与依赖于 Python 2 的标准 JModelica 结合起来?

我想在我的 Windows 计算机上安装带有 PyFMI 的 Python 3,我已经有带有 Python 2 的 JModelica 2.10。因此,我的想法是根据需要在 Python 2 中将 Modelica 模型编译为 FMU,然后在 Python 3 中开发脚本来运行 FMU 和可视化结果。我怎样才能最好地避免两个 Python 环境之间的任何冲突?

0 投票
1 回答
270 浏览

multiprocessing - 如何并行初始化 PYFMI 模型?

我正在使用 pyfmi 与 EnergyPlus 进行模拟。我认识到初始化各个 EnergyPlus 模型需要相当长的时间。因此,我希望找到一种方法来并行初始化模型。我尝试了python库多处理但没有成功。如果重要的话,我在 Ubuntu 16.10 上并使用 Python 3.6。这是我想要串行完成的工作:

结果是一个以 ids 为键、模型为值的字典:{id1:FMUModelCS1,id2:FMUModelCS1}

目的是稍后通过它们的键调用模型并进行模拟。

这是我对多处理的尝试:

我可以在我的系统监视器中看到模型的进程,但是由于模型不可选择,因此脚本会引发错误:

但我无法想象没有办法并行初始化模型。也欢迎使用除线程/多处理之外的其他框架/库。

我看到了这个答案,但似乎它侧重于初始化后的模拟。

0 投票
1 回答
51 浏览

jmodelica - PyFMI 参数估计和处理不同于默认的固定模型参数

我已经开始在 PyFMI 中使用带有过程 model.estimate() 的参数估计并且效果很好。

从文档 (Andersson et al 2016) 以及实际使用中,我了解到模型参数是从编译的 FMU 模型中获取的,如果没有估计的话。如果可以选择为字典提供一组与模型默认值不同的固定参数值,那将是非常实用的。有什么办法可以提供吗?

当前的工作流程是,对于由库中的零件构建的较大模型,您需要复制这些模型并将参数设置为代码中的正确值,然后编译它。这是一个有点乏味的过程。也许我误解了什么?

Andersson 等人(2016 年):“PyFMI:用于……的 Python 包” https://portal.research.lu.se/portal/files/7201641/pyfmi_tech.pdf

0 投票
3 回答
792 浏览

python - 有没有办法使用 python 库 FMPy 或 pyFMI 列出 FMU(或 FMU 中的子模型)的参数?

我有一个模型的 FMU,用例是更改 FMU 的参数值以查看对结果的影响。如果我无法访问 Modelica 模型,有没有办法使用 FMPy 或 pyFMI 列出 FMU 的顶级参数?

我一直在遵循的过程之一是使用 FMPy.gui 打开 FMU 并浏览参数列表,然后在脚本中使用它们,但我想知道是否有更简单的方法可以列出然后在 Jupyter 笔记本中并根据需要更改参数?

0 投票
0 回答
92 浏览

python - 使用 FMPy 库而不是 PyFMI 库进行 FMU 参数估计的 Modest-py python 库

我正在使用适度的 py python 库进行FMU功能模型单元参数估计。

默认情况下,moderate-py 使用PyFMI来处理 FMU 文件。

我需要在moderate-py 中使用FMPy库来做同样的事情,换句话说,交换库。

这是 GitHub 上的相应问题

可能它可以通过智能应用适配器模式来解决,但我不知道如何。

以前有人做过吗?

0 投票
1 回答
151 浏览

python - 与 FMU 交互时如何处理单位转换?

我有一个 python 脚本,它使用read_model_descriptionFMPy 库中的函数过滤和列出来自 fmu 的参数、它们的单位和默认值,并在 Excel 表中写入(相关讨论)。然后使用该simulate_fmu函数,脚本模拟 fmu 并将结果与​​单位写回 excel 表中。

在过滤参数和输出变量时,我使用这一行来获取它们的单位。
unit = variable.declaredType.unit if hasattr(variable.declaredType,'unit') else '-'

与 fmu 交互时,参数和变量值采用默认 SI 单位。我想这是根据 FMI 标准。但是,在modelDescription.xml下面<UnitDefinitions>我看到有关于默认 SI 单位到 displayUnit 转换的信息。例如:

如果转换因子在 modelDescription.xml 中已经可用,有没有办法能够在 displayUnits 中获取参数值和输出变量?

或者是否有一个更简单的解决方案,使用像 pint 这样的 python 库,它可以作为 fmu 的包装器,在与它交互时转换所需单位系统中的单位(即 SI 到 IP)?

0 投票
0 回答
313 浏览

python - 使用 pyfmi 的方法 load_fmu 加载 fmu 时出错

我尝试使用 PyFMI 的load_fmu方法加载 FMU。它抛出以下错误:

FMU 版本为 2.0,包含在 .xml 描述中。我使用的是 Windows 10 64 位,FMU 包含一个 win64 二进制文件。

0 投票
0 回答
153 浏览

python - 单个 FMU 的多核仿真

是否可以采用单个 FMU 并通过 python 中的模型交换对多个并行进行仿真以加快仿真速度?

模型使用 OpenModelica 创建,通过 PyFMI 导入并使用 scipy.integrate.solve_ivp 求解。

0 投票
0 回答
366 浏览

python - 无法在 pyFMI 中运行 FMU?

我正在尝试使用 pyFMI 模拟从 OpenModelica 导出的 FMU:

但是我不断收到以下错误。我使用 Anaconda 2,据我所知,我拥有所有必需的软件包(根据项目页面的要求:https ://pypi.org/project/PyFMI/ )

在试图弄清楚可能出了什么问题时,我遇到了 FMI 库,但我不知道我应该如何处理它或如何编译它,而且我还没有找到一个全面的指南。

0 投票
0 回答
93 浏览

python - PyFMI:有时无法设置参数(取决于型号)

我在 OpenModelica 中创建了一个最小示例(直流电压、负载)。之后,我创建了一个 FMU 并通过 Python 使用它。

问题摘要:仅使用电阻器作为负载,我无法通过 python 更改参数。在模型中添加一个电感器后,我可以更改一些参数,并且仿真会对这些更改做出反应。

在这个简单的模型中,没有什么可能导致电气工程部分出现问题,问题一定出在其他地方。

模型设置

有问题的模型:

在此处输入图像描述


部分工作模式:

在此处输入图像描述

二手软件

  • 视窗 10
  • OpenModelica 1.16.0
  • PyFMI 2.5
  • 蜘蛛 3.3.6

FMU 创建

使用具有以下设置的 .mos 文件创建了 FMU:

用于测试的 Python 代码

错误

在第二个模型(使用电感器)中,直流电压的变化 (model.set('v_DC', 5700)) 会导致电阻器 1 处的电流成比例变化。这可以正常工作。

电阻值的变化 (model.set('resistor.R', 10000)) 不会以任何方式影响电阻器中的电流。打印的值显示了实际设置的值(参见第二张图),但是对于电流的计算,使用的是在 OpenModelica 中选择的默认值。

在第一个模型(没有电感器)中,直流电压的变化和电阻器的变化都不会影响电阻器中的电流,尽管应该。

在其他模型中,改变电阻值可以达到要求的结果,我们很难设置源电压。

设置参数的方式是否有错误,OpenModelica 中的错误,PyFMI 中的错误,或者这里发生了什么?