Gekko (программа для оптимизации) - Gekko (optimization software)

GEKKO
Gekko logo.png
Разработчики)Логан Бил и Джон Хеденгрен
Стабильный выпуск
0.2.7 / 28 июля 2020 г.; 3 месяца назад (2020-07-28)
Репозиторий Отредактируйте это в Викиданных
Операционная системаКроссплатформенность
ТипТехнические вычисления
ЛицензияМассачусетский технологический институт
Интернет сайтгекко.readthedocs.io/ en/самый последний/

В GEKKO Пакет Python[1] решает крупномасштабные смешанно-целочисленные и дифференциально-алгебраические уравнения с помощью решателей нелинейного программирования (IPOPT, APOPT, BPOPT, СНОПТ, МИНОС ). Режимы работы включают машинное обучение, согласование данных, оптимизацию в реальном времени, динамическое моделирование и нелинейное моделирование. прогнозирующий контроль модели. Кроме того, пакет решает Линейное программирование (LP), Квадратичное программирование (QP), Квадратичная программа с ограничениями (QCQP), Нелинейное программирование (НЛП), Смешанное целочисленное программирование (MIP) и Смешанное целочисленное линейное программирование (MILP). GEKKO доступен на Python и устанавливается с помощью pip из PyPI Python Software Foundation.

пип установить гекко

GEKKO работает на всех платформах и с Python 2.7 и 3+. По умолчанию проблема отправляется на общедоступный сервер, где вычисляется решение и возвращается в Python. Существуют варианты процессоров Windows, MacOS, Linux и ARM (Raspberry Pi), которые можно решить без подключения к Интернету. GEKKO является продолжением Пакет оптимизации APMonitor но интегрировал моделирование и визуализацию решения непосредственно в Python. Математическая модель выражается в терминах переменных и уравнений, таких как эталонная задача № 71 Хока и Шиттковского.[2] используется для проверки производительности нелинейное программирование решатели. Эта конкретная задача оптимизации имеет целевую функцию и с учетом ограничения неравенства и ограничение равенства . Четыре переменные должны находиться между нижней границей 1 и верхней границей 5. Начальные предполагаемые значения: . Эта проблема оптимизации решается с помощью GEKKO, как показано ниже.

из гекко импорт GEKKOм = GEKKO()  # Инициализировать gekko# Инициализировать переменныеx1 = м.Вар(ценить=1, фунт=1, уб=5)x2 = м.Вар(ценить=5, фунт=1, уб=5)x3 = м.Вар(ценить=5, фунт=1, уб=5)x4 = м.Вар(ценить=1, фунт=1, уб=5)# Уравнениям.Уравнение(x1 * x2 * x3 * x4 >= 25)м.Уравнение(x1 ** 2 + x2 ** 2 + x3 ** 2 + x4 ** 2 == 40)м.Obj(x1 * x4 * (x1 + x2 + x3) + x3)  # Цельм.решать(дисп=Ложь)  # РешатьРаспечатать("x1:" + ул(x1.ценить))Распечатать("x2:" + ул(x2.ценить))Распечатать("x3:" + ул(x3.ценить))Распечатать("x4:" + ул(x4.ценить))Распечатать("Цель: " + ул(м.опции.objfcnval))

Приложения GEKKO

Приложения включают когенерация (электроэнергия и тепло),[3] автоматизация бурения,[4] жесткий контроль забивания,[5] производство солнечной тепловой энергии,[6] твердооксидные топливные элементы,[7][8] обеспечение потока,[9] Повышение нефтеотдачи,[10] Эфирное масло добыча[11] и Беспилотные летательные аппараты (БПЛА).[12] Есть много других ссылок на APMonitor и GEKKO как образец типов приложений, которые можно решить. GEKKO разработан на основе исследовательского гранта № 1547110 Национального научного фонда (NSF). [13][14][15][16] и подробно рассматривается в сборнике специальных выпусков по комбинированному планированию и управлению.[17] Другие примечательные упоминания GEKKO - это список в Дереве решений для программного обеспечения оптимизации,[18] добавлена ​​поддержка APOPT и решатели BPOPT,[19] отчеты проектов онлайн-курса динамической оптимизации от международных участников.[20] GEKKO - это тема на онлайн-форумах, где пользователи решают задачи оптимизации и оптимального управления.[21][22] GEKKO используется для расширенного контроля в лаборатории контроля температуры (TCLab)[23] для обучения управлению процессами в 20 университетах.[24][25][26][27]

Машинное обучение

Искусственная нейронная сеть

Одно приложение машинное обучение заключается в выполнении регрессии от обучающих данных для построения корреляции. В этом примере глубокое обучение генерирует модель из обучающих данных, созданных с помощью функции . An искусственная нейронная сеть с тремя слоями используется для этого примера. Первый слой является линейным, второй слой имеет функцию активации гиперболического тангенса, а третий слой является линейным. Программа производит веса параметров, которые минимизируют сумму квадратов ошибок между измеренными точками данных и прогнозами нейронной сети в этих точках. GEKKO использует оптимизаторы на основе градиента для определения оптимальных значений веса вместо стандартных методов, таких как обратное распространение. Градиенты определяются автоматически, как и в других популярных пакетах. Задача решается как задача оптимизации с ограничениями и сходится, когда решающая программа удовлетворяет Условия Каруша – Куна – Таккера.. Использование оптимизатора на основе градиента допускает дополнительные ограничения, которые могут быть наложены при знании предметной области данных или системы.

из гекко импорт мозгимпорт тупой в качестве нпб = мозг.Мозг()б.input_layer(1)б.слой(линейный=3)б.слой(танх=3)б.слой(линейный=3)б.output_layer(1)Икс = нп.внутреннее пространство(-нп.число Пи, 3 * нп.число Пи, 20)у = 1 - нп.потому что(Икс)б.учиться(Икс, у)

Модель нейронной сети тестируется для всего диапазона обучающих данных, а также для экстраполяции, чтобы продемонстрировать плохие прогнозы за пределами обучающих данных. Прогнозы вне набора обучающих данных улучшаются с помощью гибридного машинного обучения, в котором используются фундаментальные принципы (если они доступны) для создания структуры, действующей в более широком диапазоне условий. В приведенном выше примере функция активации гиперболического тангенса (скрытый слой 2) может быть заменена функцией синуса или косинуса для улучшения экстраполяции. Последняя часть скрипта отображает модель нейронной сети, исходную функцию и точки выборки данных, используемые для подгонки.

xp = нп.внутреннее пространство(-2 * нп.число Пи, 4 * нп.число Пи, 100)yp = б.считать(xp)импорт matplotlib.pyplot в качестве pltplt.фигура()plt.участок(Икс, у, "бо")plt.участок(xp, yp[0], "р-")plt.Показать()

Оптимальный контроль

Тест задачи оптимального управления (Luus) с интегральной целью, неравенством и дифференциальным ограничением.

Оптимальный контроль это использование математическая оптимизация получить политику, ограниченную дифференциалом , равенство , или неравенство уравнения и минимизирует функцию цели / вознаграждения . Основное оптимальное управление решается с помощью GEKKO путем интеграции цели и преобразования дифференциального уравнения в алгебраическую форму с ортогональным расположением конечных элементов.

из гекко импорт GEKKOимпорт тупой в качестве нпимпорт matplotlib.pyplot в качестве pltм = GEKKO()  # инициализировать gekkoнт = 101м.время = нп.внутреннее пространство(0, 2, нт)# Переменныеx1 = м.Вар(ценить=1)x2 = м.Вар(ценить=0)ты = м.Вар(ценить=0, фунт=-1, уб=1)п = нп.нули(нт)  # отметить конечный момент временип[-1] = 1.0окончательный = м.Param(ценить=п)# Уравнениям.Уравнение(x1.dt() == ты)м.Уравнение(x2.dt() == 0.5 * x1 ** 2)м.Obj(x2 * окончательный)  # Целевая функциям.опции.IMODE = 6  # оптимальный режим управлениям.решать()  # решатьplt.фигура(1)  # результат графикаplt.участок(м.время, x1.ценить, "к-", метка=р"$ x_1 $")plt.участок(м.время, x2.ценить, "б-", метка=р"$ x_2 $")plt.участок(м.время, ты.ценить, "р--", метка=р"$ u $")plt.легенда(место="Лучший")plt.xlabel("Время")plt.ярлык("Ценить")plt.Показать()

Смотрите также

Рекомендации

  1. ^ Бил, Л. (2018). «Пакет оптимизации GEKKO». Процессы. 6 (8): 106. Дои:10.3390 / pr6080106.
  2. ^ W. Hock и K. Schittkowski, Примеры тестов для нелинейных программных кодов, Конспект лекций по экономике и математическим системам, Vol. 187, Спрингер 1981.
  3. ^ Мохика, Дж. (2017). «Оптимальная комбинированная долгосрочная конструкция объекта и краткосрочная операционная стратегия для инвестиций в мощность ТЭЦ». Энергия. 118: 97–115. Дои:10.1016 / j.energy.2016.12.009.
  4. ^ Итон, А. (2017). «Идентификация модели в режиме реального времени с использованием моделей различного качества при бурении с управляемым давлением». Компьютеры и химическая инженерия. 97: 76–84. Дои:10.1016 / j.compchemeng.2016.11.008.
  5. ^ Итон, А. (2015). «После установки оптоволоконных датчиков давления на подводных эксплуатационных райзерах для борьбы с серьезными пробками» (PDF). OMAE 2015 Proceedings, Сент-Джонс, Канада.
  6. ^ Пауэлл, К. (2014). «Динамическая оптимизация гибридной солнечной тепловой и ископаемой топливной системы». Солнечная энергия. 108: 210–218. Bibcode:2014СоЭн..108..210П. Дои:10.1016 / j.solener.2014.07.004.
  7. ^ Спайви, Б. (2010). «Динамическое моделирование ограничений надежности в твердооксидных топливных элементах и ​​последствия для расширенного управления» (PDF). Протоколы ежегодного собрания Айше, Солт-Лейк-Сити, Юта.
  8. ^ Спайви, Б. (2012). «Динамическое моделирование, моделирование и прогнозирующее управление MIMO трубчатого твердооксидного топливного элемента». Журнал управления процессами. 22 (8): 1502–1520. Дои:10.1016 / j.jprocont.2012.01.015.
  9. ^ Хеденгрен, Дж. (2018). «Новая система обеспечения потока с высокоскоростным подводным оптоволоконным мониторингом давления и температуры». 37-я Международная конференция ASME по инженерным разработкам в океане, шельфе и арктике, OMAE2018 / 78079, Мадрид, Испания: V005T04A034. Дои:10.1115 / OMAE2018-78079. ISBN  978-0-7918-5124-1.
  10. ^ Уды, Дж. (2017). «Моделирование упрощенного порядка для оптимизации и прогнозирования закачки в пласт» (PDF). FOCAPO / CPC 2017, Тусон, Аризона.
  11. ^ Вальдеррама, Ф. (2018). «Оптимальный подход к управлению паровой дистилляцией эфирных масел ароматических растений». Компьютеры и химическая инженерия. 117: 25–31. Дои:10.1016 / j.compchemeng.2018.05.009.
  12. ^ Солнце, Л. (2013). «Построение оптимальной траектории с использованием прогнозирующего управления моделью для буксируемых по воздуху кабельных систем» (PDF). Журнал наведения, управления и динамики. 37 (2): 525–539. Bibcode:2014JGCD ... 37..525S. Дои:10.2514/1.60820.
  13. ^ Бил, Л. (2018). «Интегрированное планирование и управление в дискретном времени с динамическими параметрами и ограничениями». Компьютеры и химическая инженерия. 115: 361–376. Дои:10.1016 / j.compchemeng.2018.04.010.
  14. ^ Бил, Л. (2017). «Комбинированная модель прогнозирующего управления и планирования с доминирующей компенсацией постоянной времени». Компьютеры и химическая инженерия. 104: 271–282. Дои:10.1016 / j.compchemeng.2017.04.024.
  15. ^ Бил, Л. (2017). «Экономическая выгода от прогрессивной интеграции планирования и контроля непрерывных химических процессов». Процессы. 5 (4): 84. Дои:10.3390 / pr5040084.
  16. ^ Петерсен, Д. (2017). «Комбинированное нециклическое планирование и расширенное управление непрерывными химическими процессами». Процессы. 5 (4): 83. Дои:10.3390 / pr5040083.
  17. ^ Хеденгрен, Дж. (2018). «Спецвыпуск: совмещенное планирование и контроль». Процессы. 6 (3): 24. Дои:10.3390 / pr6030024.
  18. ^ Миттлман, Ханс (1 мая 2018 г.). «Дерево решений для программного обеспечения для оптимизации». Платон. Университет штата Аризона. Получено 1 мая 2018. Объектно-ориентированная библиотека Python для смешанно-целочисленных и дифференциально-алгебраических уравнений
  19. ^ «Решающие решения». Advanced Process Solutions, LLC. Получено 1 мая 2018. GEKKO Python с решателями APOPT или BPOPT
  20. ^ Эвертон, Коллинг. «Проекты динамической оптимизации». Petrobras. Petrobras, Statoil, Facebook. Получено 1 мая 2018. Пример презентации: Эвертон Коллинг из Petrobras делится своим опытом с GEKKO в области моделирования и нелинейного управления дистилляцией.
  21. ^ "APMonitor Google Group: GEKKO". Google. Получено 1 мая 2018.
  22. ^ «Вычислительная техника: существует ли высококачественный решатель нелинейного программирования для Python?». SciComp. Получено 1 мая 2018.
  23. ^ Кантор, Джефф (2 мая 2018 г.). «Документация TCLab» (PDF). ReadTheDocs. Университет Нотр-Дам. Получено 2 мая 2018. pip install tclab
  24. ^ Кантор, Джефф (2 мая 2018 г.). «Контроль химических процессов». GitHub. Университет Нотр-Дам. Получено 2 мая 2018. Использование лаборатории контроля температуры (TCLab)
  25. ^ Хеденгрен, Джон (2 мая 2018 г.). «Лаборатория передового контроля температуры». Курс динамической оптимизации. Университет Бригама Янга. Получено 2 мая 2018. Практические приложения расширенного контроля температуры
  26. ^ Сандрок, Карл (2 мая 2018 г.). «Блокноты Jupyter для динамики и управления». GitHub. Университет Претории, Южная Африка. Получено 2 мая 2018. CPN321 (динамика процессов) и CPB421 (управление процессами) на факультете химической инженерии Университета Претории
  27. ^ «Новости CACHE (зима 2018 г.): Включение динамического моделирования в учебные планы химической инженерии» (PDF). CACHE: Компьютерные средства для химической инженерии. Техасский университет в Остине. 2 мая 2018. Получено 2 мая 2018. Краткий курс летней школы ASEE 2017, организованный в SCSU Хеденгреном (BYU), Гровером (Технологический институт Джорджии) и Бэджвеллом (ExxonMobil)

внешняя ссылка