问题标签 [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 回答
828 浏览

openmodelica - FMU FMI 模拟,初始化后不评估某些方程

我相信我的问题与之前的问题有关,但我无法用他们的建议解决我的问题。

这是一个最小的非工作示例。我有一个简单的电路,里面有一个换向开关(在 openModelica 中开发)。我想根据输入参数的值修改switch.control的值。为此,我有以下内容:

注意:我尝试了参数,输入等之间的许多组合......

我想做一个迭代模拟(例如模拟 60 秒的系统,但 60 次连续模拟 1 秒)。这是为了能够根据另一个 FMU 模拟更改输入值( openclose )。

因此,我可以修改来自 pyFMI 的输入值。(当我阅读它时,已将更改考虑在内)。但是,我的方程式中也没有考虑“新值”。

这是我的 pyfmi 脚本:

基本上我在 50 个单位时间内进行模拟,然后更改openclose变量的值,然后再次模拟,再次切换并重新模拟。结果我得到:

实际上,只有在第一次调用之前创建的集合才会model.simulate(...)在系统中传播其值。

我试图理解这里annotation(Evaluate = false)提出的建议,但没有奏效。我不确定它是否相关,因为我实际上可以改变我的价值。问题是基于此参数的方程似乎只在初始化期间评估:-/

任何想法/帮助都会非常受欢迎......

0 投票
1 回答
781 浏览

python - pyFMI 参数更改不会更改模拟输出

我正在使用 pyFMI 更改初始的 2 个参数值(在可能值的范围内)并模拟模型响应我可以看到我的响应仅受 1 个变量更改的影响,而不受另一个变量更改的影响,但如果我仅用第二个变量(在初始模拟中没有变化)我可以清楚地看到对模型响应的影响。

但是,如果我只使用参数模拟我的模型响应(在上述情况下不影响模拟响应),我可以看到明显的模型响应差异。欢迎任何提示如何解决这个问题。

0 投票
2 回答
1071 浏览

python - 使用 pyfmi 库在 python 中加载 fmu 时出错

我已经安装了 PyFMI 库并尝试在 python 中加载由 GT-Suite 创建的 fmu。

我正在关注 jmodelica 的本教程:

https://jmodelica.org/pyfmi/tutorial.html

这组发出警告

当我尝试加载 fmu 模型时

我收到一个错误

有人可以帮我弄这个吗。该怎么办?

'pyfmi.check_packages()' 的输出

0 投票
2 回答
450 浏览

fmi - 如何使用 PyFMI 运行 EnergyPlus-FMU

我在用 PyFMI 模拟 EnergyPlus-FMU 时遇到了麻烦。我使用参考建筑模型创建了一个 EnergyPlus FMU。我正在使用 PyFMI2.5。如何运行 do_step() 函数?

我得到的错误:

我仔细检查了 PyFMI 的 API,没有发现任何问题。如何启用模拟?谢谢。

0 投票
0 回答
243 浏览

python - 无法将结果从 JModelica 检索回 Python

按照这个问题,我正在尝试使用 JModelica 编译和模拟 Modelica 模型。型号为:

Python代码是:

当我尝试调用结果时,该time = res['time']命令似乎工作正常,但对于所有 lother 变量,例如vel = res['v'],它返回此错误:

如果您能帮助我了解问题所在以及如何解决,我将不胜感激。

PS1。我也在Modelica Language Discord 频道上发布了这个问题。

PS2。我认为问题的出现是因为我正在解决一个包。如果改为模拟一个简单的模型,它可以检索变量。

PS3。我想我解决了这个问题。该行model_name = 'friction1D'需要更改为model_name = 'friction1D.fricexample_1'. 基本上应该是<packageName>.<modelName>

0 投票
1 回答
290 浏览

modelica - OpenModelica 和 JModelica 提供了截然不同的结果

这个问题之后,我试图比较 JModelica 和 OpenModelica 之间的模拟结果。Modelica 文件与上述帖子相同,JModelica 包装器是更正版本:

导致:

但是如果我将 OpenModelica 中的模拟选项设置为:

这导致:


如果您能帮助我了解为什么结果如此不同以及如何使用这两种不同的编译器实现类似的模拟,我将不胜感激。

PS在 OpenModelica 论坛上发布了一个后续问题。

0 投票
1 回答
138 浏览

simulation - 如何将我的 OMNeT++ 模型导出为 FMU(功能模型单元)?

我正在尝试共同模拟MATLAB 和 OMNeT++。对于协同仿真接口,我使用 Ptolemy-VirGIL 将两个模型连接为 FMU。MATLAB 导出非常简单,但我找不到将我的 OMNeT++ 模型导出为 FMU 的方法。请帮忙。

0 投票
2 回答
1133 浏览

tensorflow - FMU 中的强化学习代理

我想在我在 OpenModelica 中构建的模型上训练强化学习代理。通过使用pyFMI,导入FMU,模拟一下,得到一些结果是没有问题的。

我的问题是,我不可能在每一步之后“暂停”模拟,获取状态,用它喂给我的 RL 代理并返回他提议的动作作为输入。

ModelicaGym 似乎是通过启动模拟、停止、获取结果、定义下一个动作并以最后的结束时间作为开始时间再次开始模拟来解决这个问题的一种方法。

阅读隆德大学的一篇论文 ( https://portal.research.lu.se/portal/files/7201641/pyfmi_tech.pdf ) 让我想到了另一个想法:

使用 Learner 创建一个 FMU,并通过 PyFMI.Master 连接两个 FMU。

这些方面的东西:

使用内部带有 PID 控制器的其他 FMU 控制电路是可行的,但是是否可以使用强化学习代理创建 FMU,包括所有其他所需的库、包(Keras、Tensorflow?)

根据我的观点,这样的实现可以有很好的性能,特别是对于复杂度更高的模型和学习器,这可能是一种有趣的方法。

还是我只是在追逐一些梦想,因为在 FMU 中实现强化学习算法是不可能的,或者造成了其他麻烦?

实际上,我对没有发现其他人试图实现这一点感到有点惊讶。

最好的祝福

亨里克

0 投票
2 回答
1828 浏览

python - Ubuntu 18.04 中 Python 3 环境中的 PyFMI

我的目标是能够在 Ubuntu 18.04 中运行 OpenModelica 生成的 FMU,然后在 Python 3 环境中使用 PyFMI 运行这些 FMU。

我按照这里的 PyFMI 安装大纲https://jmodelica.org/pyfmi/installation.html

到目前为止,我已经使用 Conda 成功安装了 Python3、Numpy、Scipy、lxml 和其他一些包,并使其与我的一些 Python 示例一起工作。但我会很感激一些详细的建议如何

  1. 安装 FMI 库 - 我不知道如何设置标志 fmil-home
  2. 安装 Assimulo

在那之后,我想我们已经准备好从安装大纲“python setup.py install —fmil-home=/path/to/fmil”

感谢一些基本的建议!

0 投票
1 回答
224 浏览

python - 模型交换和联合仿真之间的 PyFMI 不同结果?

在 PyFMI 中将手推车问题模拟为 FMU 时,我得到不同的结果,给出相同的输入,具体取决于我是使用“模型交换”还是“协同模拟”。ME结果是正确的,CS结果似乎完全不正确。

模型交换结果

模型交换结果

相比(即完全相同,但使用 CS 而不是 ME)

使用默认 ncp 的联合仿真结果

使用默认 ncp 的联合仿真结果

我怀疑它是由于求解器设置,但这些不能在 CS 案例中设置?当我将“ncp”设置为非常高的数字时,错误会减少。非常感谢您的回复!

具有高 ncp 的联合仿真结果

与高 ncp 的联合仿真

干杯