问题标签 [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.
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 环境之间的任何冲突?
multiprocessing - 如何并行初始化 PYFMI 模型?
我正在使用 pyfmi 与 EnergyPlus 进行模拟。我认识到初始化各个 EnergyPlus 模型需要相当长的时间。因此,我希望找到一种方法来并行初始化模型。我尝试了python库多处理但没有成功。如果重要的话,我在 Ubuntu 16.10 上并使用 Python 3.6。这是我想要串行完成的工作:
结果是一个以 ids 为键、模型为值的字典:{id1:FMUModelCS1,id2:FMUModelCS1}
目的是稍后通过它们的键调用模型并进行模拟。
这是我对多处理的尝试:
我可以在我的系统监视器中看到模型的进程,但是由于模型不可选择,因此脚本会引发错误:
但我无法想象没有办法并行初始化模型。也欢迎使用除线程/多处理之外的其他框架/库。
我看到了这个答案,但似乎它侧重于初始化后的模拟。
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
python - 有没有办法使用 python 库 FMPy 或 pyFMI 列出 FMU(或 FMU 中的子模型)的参数?
我有一个模型的 FMU,用例是更改 FMU 的参数值以查看对结果的影响。如果我无法访问 Modelica 模型,有没有办法使用 FMPy 或 pyFMI 列出 FMU 的顶级参数?
我一直在遵循的过程之一是使用 FMPy.gui 打开 FMU 并浏览参数列表,然后在脚本中使用它们,但我想知道是否有更简单的方法可以列出然后在 Jupyter 笔记本中并根据需要更改参数?
python - 与 FMU 交互时如何处理单位转换?
我有一个 python 脚本,它使用read_model_description
FMPy 库中的函数过滤和列出来自 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)?
python - 使用 pyfmi 的方法 load_fmu 加载 fmu 时出错
我尝试使用 PyFMI 的load_fmu方法加载 FMU。它抛出以下错误:
FMU 版本为 2.0,包含在 .xml 描述中。我使用的是 Windows 10 64 位,FMU 包含一个 win64 二进制文件。
python - 单个 FMU 的多核仿真
是否可以采用单个 FMU 并通过 python 中的模型交换对多个并行进行仿真以加快仿真速度?
模型使用 OpenModelica 创建,通过 PyFMI 导入并使用 scipy.integrate.solve_ivp 求解。
python - 无法在 pyFMI 中运行 FMU?
我正在尝试使用 pyFMI 模拟从 OpenModelica 导出的 FMU:
但是我不断收到以下错误。我使用 Anaconda 2,据我所知,我拥有所有必需的软件包(根据项目页面的要求:https ://pypi.org/project/PyFMI/ )
在试图弄清楚可能出了什么问题时,我遇到了 FMI 库,但我不知道我应该如何处理它或如何编译它,而且我还没有找到一个全面的指南。
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 中的错误,或者这里发生了什么?