Здесь я резюмирую полученные мной хорошие отзывы о том, как настроить 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