Как запустить EnergyPlus-FMU с помощью PyFMI

У меня проблемы с моделированием EnergyPlus-FMU от PyFMI. Я создал FMU EnergyPlus, используя эталонную модель здания. Я использую PyFMI2.5. Как запустить функцию do_step()?

from pyfmi import load_fmu

model = load_fmu("MyEnergyplus.fmu")
start_time = 0
final_time = 60.0 * 60 * 24 * 3 #seconds
step_size = 60 # seconds

opts = model.simulate_options()
idf_steps_per_hour = 60
ncp = (final_time - start_time)/(3600./idf_steps_per_hour)
opts['ncp'] = ncp

t = 0

status = model.do_step(current_t = t, step_size= step_size, new_step=True)

Ошибка, которую я получил:

    File "test_fmi2.py", line 15, in <module> status = model.do_step(current_t = t, step_size= step_size, new_step=True) 

AttributeError: 'pyfmi.fmi.FMUModelME2' object has no attribute 'do_step'

Я дважды проверил API PyFMI и не обнаружил никаких проблем. Как включить симуляцию? Спасибо.


person mindcoder    schedule 14.08.2019    source источник


Ответы (2)


Из вывода мы видим, что FMU, который вы загрузили, представляет собой FMU Model Exchange, у которого нет функции выполнения шага (она есть только у FMU Co-Simulation). Дополнительные сведения о различных типах FMU см. в спецификации FMI.

Чтобы смоделировать FMU обмена моделями, используйте метод «симулировать». Метод «симуляция» также доступен для FMU совместного моделирования и является предпочтительным способом выполнения моделирования.

person Christian Winther    schedule 16.08.2019
comment
Спасибо за быстрый ответ!!! Что я пытаюсь сделать, так это обменивать параметр между двумя моделями на каждом временном шаге. Потому что у моих моделей с двух сторон есть свой решатель. Я пытаюсь использовать pyfmu в качестве брокера. '''В основном model_A --›выполнить свой собственный расчет ---›отправить параметр X в pyfmi ---› полученный моделью_B --›использовать этот параметр X для выполнения вычислений в B для генерации Y ---› отправить Y через pyfmi обратно в model_A. Процесс повторяется в течение каждого временного шага до конца симуляции. Посоветуйте, как реализовать эту идею. Спасибо. - person mindcoder; 19.08.2019
comment
Как вы производите EnergyPlus FMU? По simulationresearch.lbl.gov/fmu/EnergyPlus/export? Тогда это должен быть FMI 1.0 CS FMU. Не могли бы вы поделиться FMU или содержащимся в нем файлом modeldescription.xml (или хотя бы его началом)? - person Christian Bertsch; 30.08.2019

Не зная, как вы настраиваете fmu, я могу хотя бы сказать, что вы забыли model.initialize(start_time,final_time).

person Scrox    schedule 03.02.2020