问题标签 [jmodelica]

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 回答
416 浏览

modelica - 在仿真期间暂停 JModelica 并传递增量输入

嗨 Modelica 社区,

我想在 JModelica 中并行运行两个模型,但我不确定如何在模型之间传递变量。一个模型是 python 模型,另一个是 EnergyPlusToFMU 模型。

JModelica 文档中的示例在模型仿真之前定义了完整的仿真周期输入。我不明白如何配置一个暂停输入的模型,这是 FMU 和协同仿真的一个关键特性。

有人可以为我提供一个示例或一段代码来说明如何在 JModelica 中实现这一点吗?

我是否将模拟命令置于循环中?如果是这样,我如何在不丢失先前时间步长的数据的情况下处理预热期和初始化?

感谢您的时间,

贾斯汀

0 投票
1 回答
176 浏览

modelica - 锅炉的最佳控制:使用流体库 w。使用 JModelica 的 DynamicPipe 组件

我有兴趣将JModelica与我在Dymola中构建的模型一起使用。

具体来说,我有一个使用DynamicPipe组件的锅炉模型,然后我只是将热量传递到管道以加热其中的水,并使用泵组件来控制整个锅炉的压差。该模型可以很好地编译到使用JModelica的FMU,我能够毫无问题地模拟它。

但是,我现在不想找到最佳控制序列来使锅炉进入某个操作点,而这里事情就停止了。

我已经编写了一个有优化问题的 .mop 文件,但是当我调用transfer_optimization_problem时,出现以下错误:

显然,它对DynamicPipe模型中指定模型结构的枚举类型不太满意。

为了检查问题确实是我的模型,我对其进行了线性化并在优化问题中使用了线性化版本;这运行得很好。

关于如何处理这个的任何想法?:-)

问候,

乔金

更新: 我在 JModelica 论坛上问了同样的问题,得到了以下答复。但是,我还没有找到规避错误的解决方案:http ://www.jmodelica.org/27776#comment-6467

0 投票
1 回答
178 浏览

annotations - 从 Modelica 模型中删除注释

我正在开发一个 Modelica 库,需要生成一个包含源代码列表的文档。我希望能够在没有注释的情况下包含 Modelica 模型的来源。

我可以手动编辑它们,但我正在寻找一种更自动化的策略。我猜最方便和直接的方法是使用一些工具来保存.mo没有注释的文件并将它们包含在我的文档中(我\lstinputlisting在 LaTeX 中使用)。

是否有可能做到这一点?我可以访问 Dymola、OpenModelica 和 JModelica。Dymola显然能够生成这样的列表,因为它能够将其包含在自动生成的文档中(文件 > 导出 > HTML...)。我一直在研究使用 Dymola 和OpenModelica编写脚本,但也没有找到方法。

JModelica似乎是一个不错的选择,但我没有使用 Python 的经验。如果这是可能的并且有人给我一些指示,我愿意自己研究一下。我发现提到了一个prettyprint可能完成这项工作的函数,但我不确定从哪里开始。我什至在最新的文档中都找不到对该函数的引用。

对我来说,找到一种使用 Dymola/OpenModelica 的方法(无论是通过 UI 还是使用脚本)也会更方便。我错过了什么吗?

0 投票
2 回答
773 浏览

python - 在 Spyder/Python 中使用 JModelica

我正在使用 JModelica 来模拟 Modelica 模型。JModelica.org Python 接口使用户能够使用 Python 脚本与 Modelica 模型进行交互;但是 JModelica.org 不仅是一个 Python 包/库 - Python 包是 JModelica 的一部分,而不是独立的。如果您使用 JModelica 打开 IPython.bat - 它call C:\JModelica.org-2.0\setenv.batsetenv.bat定义和设置不同的环境变量,包括set PYTHONPATH=%JMODELICA_HOME%\Python;%PYTHONPATH%所有必需的站点包所在的位置。

我喜欢使用 Anaconda/Spyder 进行开发,尤其是调试,所以在 Spyder 中使用 JModelica 会很棒。我天真的想法是在 Anaconda 中创建一个新环境,并使用 JModelica 的 Intepreter、IPthon、PYTHONPATH(在/JModelica.org/IPython.bat调用时创建)等。

我知道如何在 Anaconda 中创建一个新环境以及如何在该环境中启动 Python。但它不起作用。

我还尝试更改 Spyder 中的设置

在此处输入图像描述

另一个想法是使用 IPyhon 的启动文件。

在此处输入图像描述

0 投票
0 回答
237 浏览

python-2.7 - PyFMI:在调用 FMU 2.0 的 load_fmu() 期间,Python 停止使用异常代码 0xc0000005

我使用 PyFMI 作为 FMU 主机来测试我的工具,该工具充当 FMU 2.0 从机。

当我调用 load_fmu('fmuFile.fmu', log_level=5) 函数来加载 fmu 时,python.exe 正在崩溃。

当我检查事件查看器时,它显示异常代码 0xc0000005。

如何修复此错误或如何获取有关此错误的更多信息?

注意:当我的工具充当 FMU 1.0 从站时,pyFMI 工作正常。我对 FMU 1.0 和 FMU 2.0 使用相同的 python

以下是事件查看器的摘录:

错误应用程序名称:python.exe,版本:0.0.0.0,时间戳:0x56634a05 错误模块名称:未知,版本:0.0.0.0,时间戳:0x00000000 异常代码:0xc0000005 错误偏移量:0x00000000 错误进程 id:0x3328 错误应用程序启动时间:0x01d3375493d4b63f 错误应用程序路径:C:\JModelica.org-SDK-1.12\Python27\python.exe 错误模块路径:未知报告 ID:e9932029-a347-11e7-bb26-40b0341357d4

0 投票
2 回答
2198 浏览

python - 使用 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 函数的简单 modelica 模型(不依赖于时间)。该功能常用于测试敏感性分析方法(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、使用 pip(不是 JModelica)安装的 PyFMI、Jupyther notebook 上的 Python 编码(在 Mozilla Firefox 上)

我们只有 python 和 PyFMI 的基本知识,并且真的在为这个错误而苦苦挣扎!

附件

您可以在下面找到

  • 用于从 Dymola 导出协同仿真 FMU 的 Modelica 模型(使用 CVode)

  • Python 代码作为 py 文件

  • python代码的输出散点图。

我还在JModelica论坛发了一个帖子,可以直接下载文件(FMU、Jupyter notebook等): http ://www.jmodelica.org/27925

模型

Python代码

python脚本的输出图 在此处输入图像描述

更新

我做了一些更多的测试,这就是我发现的:

根据 FMU 是从 Dymola 还是从 JModelica 导出的,行为会有所不同:

使用从 Dymola 导出的 FMU:

  • 从for循环中取出这load_fmu条线似乎有效
  • 即使load_fmu不在 for 循环中,有时也会崩溃
  • model.reset()在命令之前添加新行model.set(...)似乎可以正常工作
  • 有或没有模拟时的结果是不同的 model.reset() -> 为什么?
  • model.instantiate()而不是model.reset()-> 不起作用。任务管理器中的内存使用量上升到大约 350 MB,然后

    FMUException:无法实例化模型。请参阅日志以获取更多信息。

log_level=4 的日志文件:

使用从 JModelica 导出的 FMU:

我的问题:

执行循环的正确原因是什么,该循环以不同的参数多次模拟 FMU 模型?

model.reset()using或model.instatiate()none 和有什么区别?

附件

model.reset()这是一个图表,显示了带有和不带有它 的 for 循环之间的区别。在此处输入图像描述

从 JModelica 导出的 FMU(不需要任何许可证)可以在这里下载:http ://www.jmodelica.org/27925#comment-6668

0 投票
1 回答
2166 浏览

modelica - 如何在 Modelica 中实现嵌套 if 语句?

我正在尝试实现 HVAC 系统的故障包容模型。故障在用户定义的时间开始,在这种情况下faultTime = 1000。但是,if 语句的第一部分根本没有实现。以下是与问题相关的代码片段

当我模拟时,它运行没有错误,但它直接进入下的方程faultMode == 1,而不模拟前 1000 秒的无故障状态。

0 投票
1 回答
512 浏览

python - pyfmi 的 ImportError

我打算在我们的大学 Linux HPC 集群上使用 pyfmi。构建 FMILibrary 并安装 pyfmi 不会引发任何错误。但是,当我尝试在 python 中导入 pyfmi 时收到以下错误消息:

文件“/home/user/.local/lib/python2.7/site-packages/pyfmi/init .py”,第 24 行,从.fmi导入 FMUModel、load_fmu、FMUModelME1、FMUModelME2 导入错误:/home/user/。 local/lib/python2.7/site-packages/pyfmi/fmi.so:未定义符号:__intel_sse2_strcpy

有谁知道可能是什么原因?

提前致谢!

0 投票
1 回答
204 浏览

modelica - 仅将相关变量保存在 JModelica 输出文件中

我注意到 JModelica 的输出文件保存了所有内容,这意味着复杂的模型会创建巨大的文件,尤其是对于长时间的模拟。

是否可以只将相关变量保存在输出文件中?我已经阅读了用户手册,但我看不到可以在哪里指定这样的参数。

例如,我的模型创建变量[a,b,c,d,e,f,g,time]但我只想保存[a,b,time]

0 投票
2 回答
976 浏览

jupyter-notebook - Setting up Jupyter Notebook for JModelica

I would like to use Jupyter Notebook for editing JModelica python scripts; however after installing, the Jupyter notebook cannot locate key libraries, such as pymodelica.

Here is the process I followed to install Jupyter Notebook for JModelica Version 2.1:

  1. In the IPython terminal: !pip install jupyter

  2. In windows CMD I navigate using cd C:\JModelica.org-2.1\Python27\Scripts

  3. I then open using jupyter notebook

  4. Within the notebook I create a Python 2 file and attempt to import the pymodelica library, which is followed by:

ImportError Traceback (most recent call last) in () ----> 1 import pymodelica

ImportError: No module named pymodelica

Presumably the Jupyter Notebook is running from the Python Kernal installed with JModelica, in which case why is Jupyter Notebook unable to locate the pymodelica library? Are there any settings that need to be changed in order for Jupyter to load these libraries?