Привет всем и проф. Джона Хеденгрену, я использую библиотеку Python Gekko, чтобы использовать MPC с системой отопления мультизонового здания. Цель состоит в том, чтобы минимизировать комбинацию максимального пика мощности и потребляемой энергии (цель 1), либо минимизировать только энергию, оставаясь ниже определенного общего энергопотребления (цель 2). Здание и его механические системы смоделированы с помощью программного обеспечения под названием TRNSYS, и я могу вызвать Python в TRNSYS с помощью CFFI -соединения. Сценарий Python взаимодействует со зданием, работая MPC каждые 24 часа с горизонтом прогнозирования 48 часов. Gekko будет называться каждый моделируемый день в течение периода моделирования 2 месяца.
Задача:
До конца останавливается имитация, и нет конвергенции (оно достигает 500 пользовательских итераций), когда возникает задача оптимизации с протеканием IPopt (с решанием линии). Я знаю это, потому что у меня есть отдельная записная книжка Python, которая воссоздает те же проблемы оптимизации в разных днях моделирования. Я получаю одинаковые результаты с одинаковыми точными входами, поэтому это действительно касается той же проблемы ... но в ноутбуке Python в этот конкретный день, который не сходится в моделирование, сходится примерно через 35 секунд (с 141 итерациями). This day comes after about 20 successful optimization problems solved, most of them solved in 8-15 seconds and some with 25 or 28 seconds of IPOPT solving time (objective 2 is more demanding because of the more constraints).
Here comes the more interesting part.. if I put Remote = True and use the mumps solver as well (with the linear ma57 it just stops and not converge very soon in the simulation) Симуляция успешно проходит все 2 месяца симуляции. Решения практически идентичны тем, которые я получаю в отдельной ноутбуке Python с разницей в объективном значении только в 4 -м десятилетом. Также требуется меньше итераций, чтобы прийти к решению (но очень долгое время решения IPOPT, я полагаю, из -за задержки с подключением к Интернету и серверу). Эти небольшие различия указывает на небольшую разницу в решателе, которая действительно находится в версии iPopt 3.12.10: < /p>
Код: Выделить всё
This is Ipopt version 3.12.10, running with linear solver mumps.
< /code>
В то время как локальный решатель говорит: < /p>
This is Ipopt version 3.10.2, running with linear solver mumps.
< /code>
Я впервые проверил, были ли у Гекко обновления, и действительно была версия 1.3.0. Но даже после обновления из 1.2.1 та же проблема сохраняется, и версия iPopt не обновляется. Похоже, что он застрял вокруг того же значения целевой функции 3 порядка, где это должно быть. [b] Теперь, если в этой отдельной ноутбуке я просто переключаю [/b] remote = false
Вопрос: (отредактировано)
Мне было интересно .. Можно ли обновить IPOPT Gekko в моей локальной машине (или Solver Mumps)? Потому что более новая версия 3.12.10 кажется действительно лучше, и у нее нет проблем с неконвергенцией. Local Reolve намного быстрее, поэтому это поможет мне выполнять моделирование быстрее, кроме как не только полагаться на онлайн -сервер для проведения моего исследования.
>
Подробнее здесь: https://stackoverflow.com/questions/796 ... timization