【问题标题】:PyFMI in Python 3 environment in Ubuntu 18.04Ubuntu 18.04 中 Python 3 环境中的 PyFMI
【发布时间】:2020-04-22 05:38:39
【问题描述】:

我的目标是能够在 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”

欣赏一些基本建议!

【问题讨论】:

  • 到底是什么问题?
  • 首先是非常基本的如何将标志 fmil-home 设置为我选择的文件夹?其次是 Assimulo 既不能从 Conda 也不能从 Pip 安装,我可以看到...

标签: python openmodelica fmi jmodelica pyfmi


【解决方案1】:

在这里,我总结了关于如何使用 OpenModelica 在 Xubuntu 18.04 上设置 PyFMI 的良好意见。 来自 Modelon 的 Christian Winther 和 LiU 的 Adrian Pop 的意见并为此感到高兴。

安装遵循https://jmodelica.org/pyfmi/installation.html 并进行了一些说明。

OpenModelica 安装在 Linux 上的 VM 上,您可以在此处获得 https://openmodelica.org/download/virtual-machine 我理解的都是64位软件。

使用conda安装比pip方便,如下图:

在此处下载适用于 Python 3 的 Miniconda https://docs.conda.io/en/latest/miniconda.html

安装 Miniconda3 并获得 Python 3.7 和一些软件包。很高兴通过

更新 conda
$conda update conda

PyFMI 的安装现在只需通过以下命令即可完成:

$conda config --add channels conda-forge
$conda install pyfmi

在此安装过程中,还安装了 NumPy、Scipy、Lxml、Matplotlib 等关键软件包。 根据上面提到的 PyFMI 主页,安装 wxpython 可能很有趣,但不是必需的。如果安装了它也应该使用 conda 来完成。

我们可以通过 Python 脚本以不同的方式与 FMU 进行交互。

a) 将 OpenModelica(或其他 Ubuntu 环境)生成的 FMU 与一些运行 FMU 并绘制结果的 Python 脚本 simu_FMU 一起放在文件夹 FMU_test 中。 转到文件夹 FMU_test。以下命令运行 FMU 并绘制结果

$python3 simu_FMU.py

b) 可以通过以下方式安装带有流行的 Jupyter 笔记本的交互式框架

$conda install ipython
$conda install jupyter

然后从文件夹 FMU_test 中执行以下命令来启动笔记本

$jupyter notebook

然后打开网络浏览器,您可以从一个单元格运行 python 脚本,还可以直接与 FMU 交互并更改参数等。可以在每个单元格中执行几个 python 命令。单元格的结果显示在输出单元格中。 Jupyter notebook 专注于一种研究仿真模型的顺序方法。图表中的所有模拟都必须在一个单元格中执行。

c) 拥有一个带有 IPython 的交互式框架也会很有趣。通过这种方式,可以完成一种更加迭代的方法来处理模拟。类似于模拟,更改一些参数,再次模拟并在与以前相同的图表中绘制。

使用交互式 Python 窗口,使用以下命令启动

$ipython --pylab

需要设置如何通过命令“locale”读取文本文件

$import numpy as np
$import matplotlib.pyplot as pli
$from pyfmi import load_fmu

$import locale
$locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’)

$model = load_fmu(”FMU_example.fmu”)

模型在 FMU 中的表示方式具有一定的灵活性,OpenModelica 生成的模型包含并非所有供应商在其 FMU 中都有的 json 类型的文本文件,例如 JModelica.org 中没有。读取这个 json 文件需要 locale 进行的设置才能在 IPython 窗口中正确读取它。因此在 Jupyter notebook 环境中不需要,但至少在那里没有负面影响。

在 PyFMI 的标准 (Windows) JModelica 安装中,使用 c) 进行交互。在 Ubuntu 18.04 中使用 JModelica 2.4 编译的 FMU 时,到目前为止测试的 Python 脚本在 Xubuntu 18.04 中的工作方式完全相同。测试包括 PyFMI model.simulate() 和 model.estimate()。

OpenModelica 1.14.1 和更高的开发版本编译的 FMU 可用于使用过程 mode.simulate() 进行仿真。然而,与 model.get() 和 model.set() 的交互表现出不同的行为。这可能是由于对 FMU 标准的不同解释,甚至是实施中的错误。从事 OpenModelica 开发工作的人都知道并调查了它。

【讨论】:

  • 在 python 中将语言环境设置为 en_US:import locale locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 这应该可以解决问题!
  • 它有效,谢谢阿德里安!我已经更新了上面的答案。
  • 我现在已经在 Linux 中使用 JModelica 2.4 的 FMU 进行了安装测试,结果很好,并更新了答案。
  • 今天 PyFMI v 2.8.5 可以很好地与 Python 3.8.3 配合使用,并确保你有 numpy 1.19.1 然后它可以工作。
【解决方案2】:

我必须编译所有内容才能使其正常工作,因此 conda 可能是一个更简单的解决方案。这对我有用:

# change myUser to your user in the code below!
# install the dependencies (maybe you need more, I might have installed some already)
pip3 install numpy
pip3 install Cython
# get FMIL and build it
git clone https://github.com/modelon-community/fmi-library
cd fmi-library
mkdir build-fmil
cd build-fmil
cmake -DFMILIB_INSTALL_PREFIX=/home/myUser/fmil ..
make install test
# now you should have the FMIL library in:
# /home/myUser/fmil
# export that to terminal before installing PyFMI
export FMIL_HOME=/home/myUser/fmil

# get and install sundials
wget https://computing.llnl.gov/projects/sundials/download/sundials-3.0.0.tar.gz
tar -xf sundials-3.0.0.tar.gz
cd sundials-3.0.0
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/home/myUser/sundials ..
make install

# get and install lapack and blas
https://github.com/Reference-LAPACK/lapack/archive/v3.9.0.tar.gz
tar -xf v3.9.0.tar.gz
cd lapack-3.9.0/
mkdir build
cmake -DCMAKE_INSTALL_PREFIX=/home/myUser/lapack ..
make install

# get Assimulo
git clone https://github.com/modelon-community/Assimulo
cd Assimulo/
sudo python3 setup.py install --sundials-home=/home/myUser/sundials --blas-home=/home/myUser/lapack/lib --lapack-home=/home/myUser/lapack

# get PyFMI
git clone https://github.com/modelon-community/PyFMI/
cd PyFMI
sudo python3 setup.py install --fmil-home=/home/myUser/fmil

# now you should have everything installed for your myUser
# you need to do:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/myUser/sundials/lib/
# before running PyFMI as all these libraries are installed for the local user
# note that you can install all these at the system level if you want, just do:
# -DCMAKE_INSTALL_PREFIX=/usr/local and -DFMILIB_INSTALL_PREFIX=/usr/local

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2016-10-24
    相关资源
    最近更新 更多