Я хочу обучить агента обучения с подкреплением на модели, которую я создаю в OpenModelica. Используя pyFMI, легко импортировать FMU, смоделировать его и получить некоторые результаты.
Моя проблема в том, что у меня нет возможности «приостанавливать» симуляцию после каждого шага, получать состояния, кормить им своего RL-агента и возвращать его предлагаемое действие в качестве входных данных.
ModelicaGym кажется способом решить эту проблему путем запуска моделирования, остановки, получения результатов, определения следующего действия и повторного запуска моделирования с последним временем окончания в качестве времени начала.
Чтение статьи из Лундского университета (https://portal.research.lu.se/portal/files/7201641/pyfmi_tech.pdf) заставил меня задуматься о другой идее:
Создание FMU с Learner и подключение двух FMU через PyFMI.Master.
Что-то в этом роде:
from pyfmi import load_fmu
from pyfmi.master import Master
controller = load_fmu("controller.fmu")
Circuit = load_fmu("circuit.fmu")
connections = [( Circuit ,"currentSensor1.i",controller ,"feedback1.u2"),
(controller ,"PID.y",Circuit ,"signalVoltage1.v")]
models = [Circuit , controller]
master_simulator = Master(models , connections)
res = master_simulator.simulate(final_time =1)
Управление схемой с помощью другого FMU с помощью ПИД-регулятора внутри работает, но возможно ли создать FMU с агентом обучения с подкреплением, включая все другие необходимые библиотеки, пакеты (Keras, Tensorflow?)
С моей точки зрения, такая реализация могла бы иметь довольно хорошую производительность, особенно для моделей и учащихся с более высокой сложностью, это может быть интересный подход.
Или я просто преследую какие-то мечты, потому что реализация алгоритма обучения с подкреплением в FMU невозможна или вызывает другие проблемы?
На самом деле, я был немного удивлен, что не нашел других людей, пытающихся реализовать это.
С наилучшими пожеланиями
Хенрик