PyFMI в среде Python 3 в Ubuntu 18.04

Моя цель - иметь возможность запускать FMU, созданные OpenModelica, в Ubuntu 18.04, а затем запускать их с PyFMI в среде Python 3.

Я следую схеме установки PyFMI здесь https://jmodelica.org/pyfmi/installation.html.

До сих пор мне с помощью Conda удалось установить Python3, Numpy, Scipy, lxml и некоторые другие пакеты и заставить его работать с некоторыми из моих примеров Python. Но я был бы признателен за подробный совет, как

  1. Установите FMI Library - и я не понимаю, как установить флаг fmil-home
  2. Установить Ассимуло

После этого, я думаю, мы готовы сделать из схемы установки «python setup.py install —fmil-home = / path / to / fmil»

Оцените несколько основных советов!


person janpeter    schedule 03.01.2020    source источник
comment
в чем именно проблема?:   -  person mkrieger1    schedule 03.01.2020
comment
Во-первых, очень элементарно, как мне установить флаг fmil-home для папки по моему выбору? Во-вторых, Assimulo нельзя установить ни из Conda, ни из Pip, что я вижу ...   -  person janpeter    schedule 04.01.2020


Ответы (2)


Здесь я резюмирую полученные мной хорошие отзывы о том, как настроить PyFMI на Xubuntu 18.04 с OpenModelica. Вклад поступил от Кристиана Винтера из Modelon и Адриана Попа из LiU, и мы рады этому.

Установка выполняется по https://jmodelica.org/pyfmi/installation.html с некоторыми пояснениями.

OpenModelica устанавливается в Linux на виртуальную машину, которую вы можете найти здесь https://openmodelica.org/download/virtual-machine Это все 64-битное программное обеспечение, насколько я понимаю.

Для установки удобнее использовать conda, чем pip, как показано ниже:

Загрузите Miniconda для Python 3 здесь 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.

Мы можем взаимодействовать с FMU через скрипт Python по-разному.

a) Поместите FMU, созданный из OpenModelica (или из какой-либо другой среды Ubuntu), в папку FMU_test вместе с некоторым скриптом Python simu_FMU, который запускает FMU и отображает результаты. Заходим в папку FMU_test. Следующая команда запускает FMU и отображает результаты.

$python3 simu_FMU.py

б) Интерактивный фреймворк с популярным ноутбуком Jupyter можно установить с помощью

$conda install ipython
$conda install jupyter

Затем для запуска ноутбука выполните следующую команду из папки FMU_test

$jupyter notebook

Откроется веб-браузер. Затем вы можете запускать сценарии Python из ячейки, а также напрямую взаимодействовать с FMU и изменять параметры и т. Д. В каждой ячейке можно выполнить несколько команд Python. Результаты ячейки представлены в выходной ячейке. Блокнот Jupyter сфокусирован на своего рода последовательном подходе к исследованию имитационной модели. Все симуляции на диаграмме должны выполняться в одной ячейке.

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, содержат текстовый файл json-типа, который не у всех поставщиков есть в своих FMU, и, например, не на JModelica.org. И для чтения этого json-файла требуется настройка, сделанная локалью, чтобы правильно читать его в окне IPython. Таким образом, НЕ требуется в среде ноутбука Jupyter, но, по крайней мере, не имеет там отрицательного эффекта.

В стандартной (Windows) установке PyFMI JModelica используется взаимодействие с использованием c). Протестированные до сих пор сценарии Python работают точно так же в Xubuntu 18.04 при использовании FMU, скомпилированных JModelica 2.4 в Ubuntu 18.04. Тесты включают как PyFMI model.simulate (), так и model.estimate ().

FMU, скомпилированные OpenModelica 1.14.1, а также более поздние версии разработки, можно использовать для моделирования с помощью процедуры mode.simulate (). Однако взаимодействие с model.get () и model.set () демонстрирует разное поведение. Это может быть связано с разной интерпретацией стандарта FMU или даже с ошибками в реализации. Люди, работающие над разработкой OpenModelica, знают и исследуют это.

person janpeter    schedule 14.01.2020
comment
Установите locale на en_US в python: импортируйте locale locale.setlocale (locale.LC_ALL, 'en_US.UTF-8'), это должно решить проблему! - person Adrian Pop; 14.01.2020
comment
Это работает, и спасибо, Адриан! Я обновил свой ответ выше. - person janpeter; 22.01.2020
comment
Я проверил установку с FMU из JModelica 2.4 в Linux с хорошими результатами и обновил ответ. - person janpeter; 27.01.2020
comment
Сегодня PyFMI v 2.8.5 хорошо работает с Python 3.8.3, и убедитесь, что у вас есть numpy 1.19.1, тогда он работает. - person janpeter; 09.04.2021

Мне пришлось все скомпилировать, чтобы все заработало, поэтому 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
person Adrian Pop    schedule 08.01.2020