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