Совместное моделирование дифференциальных и линейных уравнений в gekko?

Всем привет и разработчики Gekko,

Я хочу смоделировать следующие уравнения для своих систем хранения тепловой энергии:

Дифференциальные алгебраические уравнения

которые бывают как линейными, так и дифференциальными. Некоторые переменные также зависят от времени и являются внешними параметрами. Из примеров Gekko похоже, что я могу добавить только уравнение, такое как mdl.Equation(T_a.dt() == mt*c_p_w*(T_b-T_a)) / d_w*c_p_w, в этом формате, однако для уравнения, не связанного с дифференциалом, я хочу добавить как обычные уравнения, такие как mdl.Equation(m[t] == mc - m[t]).

p.s Как я могу добавить оба стиля, и какой режим и решатель позволяют это сделать. ?

Спасибо,

С наилучшими пожеланиями,

Рахул


person R. Rahul    schedule 17.11.2020    source источник


Ответы (1)


Я думаю, вы хотите реализовать MPC для системы?

Режимы решателя для каждого приложения отображаются в Gekko Doc, для MPC должно быть 6, если вы стремитесь к совместному размещению. По моему опыту работы с Gekko, все должно сработать, если вы просто добавите линейные уравнения, если они сохранят выполнимость проблемы. Обычно линейные алгебраические уравнения не портят вашу задачу DAE. Во-вторых, нелинейный решатель также будет работать для линейной задачи (линейные решатели bc реализованы в нелинейном решателе), поэтому IPOPT, например, должен работать нормально в любом случае.

Вы можете посмотреть на веб-сайте APMonitor больше примеров, я уверен, что есть некоторые, связанные с линейными уравнениями. Если вы не уверены, как определять переменные, в Интернете есть подробная документация. https://gekko.readthedocs.io/en/latest/index.html

Надеюсь, это поможет, я также просто пользователь gekko, который настроил несколько скриптов.

person cracker720    schedule 22.11.2020