Gekko (программное обеспечение для оптимизации)
![]() | |
Разработчик(и) | Логан Бил и Джон Хеденгрен |
---|---|
Стабильная версия | 1.0.7
/ 5 марта 2024 г |
Репозиторий | |
Операционная система | Кроссплатформенность |
Тип | Технические вычисления |
Лицензия | С |
Веб-сайт | гекко |
Пакет GEKKO Python [1] решает крупномасштабные смешанно-целочисленные и дифференциальные алгебраические уравнения с помощью решателей нелинейного программирования ( IPOPT , APOPT , BPOPT, SNOPT , MINOS ). Режимы работы включают машинное обучение, сверку данных, оптимизацию в реальном времени, динамическое моделирование и прогнозирующее управление нелинейной моделью . Кроме того, пакет решает линейное программирование (LP), квадратичное программирование (QP), квадратичную программу с квадратичными ограничениями (QCQP), нелинейное программирование (NLP), смешанное целочисленное программирование (MIP) и смешанное целочисленное линейное программирование (MILP). GEKKO доступен на Python и устанавливается с помощью pip из PyPI Python Software Foundation.
pip install gekko
GEKKO работает на всех платформах и с Python 2.7 и 3+. По умолчанию проблема отправляется на общедоступный сервер, где решение вычисляется и возвращается в Python. Существуют варианты процессоров Windows, MacOS, Linux и ARM (Raspberry Pi), которые можно решить без подключения к Интернету. GEKKO — это расширение пакета оптимизации APMonitor , но оно интегрировало моделирование и визуализацию решений непосредственно в Python. Математическая модель выражается в терминах переменных и уравнений, таких как контрольная задача Хока и Шитковского № 71. [2] используется для проверки производительности решателей нелинейного программирования . Эта конкретная задача оптимизации имеет целевую функцию и при условии ограничения неравенства и ограничение равенства . Четыре переменные должны находиться между нижней границей 1 и верхней границей 5. Начальные предполагаемые значения: . Эта проблема оптимизации решается с помощью GEKKO, как показано ниже.
from gekko import GEKKO
m = GEKKO() # Initialize gekko
# Initialize variables
x1 = m.Var(value=1, lb=1, ub=5)
x2 = m.Var(value=5, lb=1, ub=5)
x3 = m.Var(value=5, lb=1, ub=5)
x4 = m.Var(value=1, lb=1, ub=5)
# Equations
m.Equation(x1 * x2 * x3 * x4 >= 25)
m.Equation(x1 ** 2 + x2 ** 2 + x3 ** 2 + x4 ** 2 == 40)
m.Minimize(x1 * x4 * (x1 + x2 + x3) + x3)
m.solve(disp=False) # Solve
print("x1: " + str(x1.value))
print("x2: " + str(x2.value))
print("x3: " + str(x3.value))
print("x4: " + str(x4.value))
print("Objective: " + str(m.options.objfcnval))
Приложения ГЕККО [ править ]
Приложения включают когенерацию (электроэнергию и тепло) , [3] автоматизация бурения , [4] строгий контроль пробок, [5] производство солнечной тепловой энергии, [6] твердооксидные топливные элементы , [7] [8] обеспечение потока, [9] Повышение нефтеотдачи , [10] эфирного масла , Экстракция [11] и беспилотные летательные аппараты (БПЛА) . [12] Есть много других ссылок на APMonitor и GEKKO как на примеры типов приложений, которые можно решить. GEKKO разработан на основе исследовательского гранта Национального научного фонда (NSF) № 1547110. [13] [14] [15] [16] и подробно описан в сборнике специальных выпусков, посвященном комбинированному планированию и контролю. [17] Другими примечательными упоминаниями о GEKKO являются включение в «Дерево решений для программного обеспечения для оптимизации»: [18] добавлена поддержка решателей APOPT и BPOPT, [19] отчеты проектов онлайн-курса «Динамическая оптимизация» от международных участников. [20] GEKKO — это тема на интернет-форумах, где пользователи решают задачи оптимизации и оптимального управления. [21] [22] GEKKO используется для расширенного контроля в лаборатории контроля температуры (TCLab). [23] для обучения управлению процессами в 20 университетах. [24] [25] [26] [27]
Машинное обучение [ править ]

Одним из применений машинного обучения является выполнение регрессии на основе обучающих данных для построения корреляции. В этом примере глубокое обучение генерирует модель на основе обучающих данных, которые создаются с помощью функции . слоями . В этом примере используется искусственная нейронная сеть с тремя Первый слой является линейным, второй слой имеет функцию активации гиперболического тангенса, а третий слой является линейным. Программа создает веса параметров, которые минимизируют сумму квадратов ошибок между измеренными точками данных и прогнозами нейронной сети в этих точках. GEKKO использует оптимизаторы на основе градиента для определения оптимальных значений веса вместо стандартных методов, таких как обратное распространение ошибки . Градиенты определяются автоматическим дифференцированием, как и в других популярных пакетах. Задача решается как задача ограниченной оптимизации и сходится, когда решатель удовлетворяет условиям Каруша – Куна – Такера . Использование оптимизатора на основе градиента допускает дополнительные ограничения, которые могут быть наложены на знание предметной области данных или системы.
from gekko import brain
import numpy as np
b = brain.Brain()
b.input_layer(1)
b.layer(linear=3)
b.layer(tanh=3)
b.layer(linear=3)
b.output_layer(1)
x = np.linspace(-np.pi, 3 * np.pi, 20)
y = 1 - np.cos(x)
b.learn(x, y)
Модель нейронной сети тестируется на диапазоне обучающих данных, а также на предмет экстраполяции, чтобы продемонстрировать плохие прогнозы за пределами обучающих данных. Прогнозы за пределами набора обучающих данных улучшаются с помощью гибридного машинного обучения, которое использует фундаментальные принципы (если они доступны) для создания структуры, действительной в более широком диапазоне условий. В приведенном выше примере функция активации гиперболического тангенса (скрытый слой 2) может быть заменена функцией синуса или косинуса для улучшения экстраполяции. Последняя часть скрипта отображает модель нейронной сети, исходную функцию и выборочные точки данных, используемые для подгонки.
import matplotlib.pyplot as plt
xp = np.linspace(-2 * np.pi, 4 * np.pi, 100)
yp = b.think(xp)
plt.figure()
plt.plot(x, y, "bo")
plt.plot(xp, yp[0], "r-")
plt.show()
Оптимальный контроль [ править ]

Оптимальное управление — это использование математической оптимизации для получения политики, ограниченной дифференциальными , равенство , или неравенство уравнения и минимизирует функцию цели/награды . Базовое оптимальное управление решается с помощью GEKKO путем интегрирования цели и преобразования дифференциального уравнения в алгебраическую форму с ортогональной коллокацией на конечных элементах.
from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO() # initialize gekko
nt = 101
m.time = np.linspace(0, 2, nt)
# Variables
x1 = m.Var(value=1)
x2 = m.Var(value=0)
u = m.Var(value=0, lb=-1, ub=1)
p = np.zeros(nt) # mark final time point
p[-1] = 1.0
final = m.Param(value=p)
# Equations
m.Equation(x1.dt() == u)
m.Equation(x2.dt() == 0.5 * x1 ** 2)
m.Minimize(x2 * final)
m.options.IMODE = 6 # optimal control mode
m.solve() # solve
plt.figure(1) # plot results
plt.plot(m.time, x1.value, "k-", label=r"$x_1$")
plt.plot(m.time, x2.value, "b-", label=r"$x_2$")
plt.plot(m.time, u.value, "r--", label=r"$u$")
plt.legend(loc="best")
plt.xlabel("Time")
plt.ylabel("Value")
plt.show()
См. также [ править ]
Ссылки [ править ]
- ^ Бил, Л. (2018). «Пакет оптимизации GEKKO» . Процессы . 6 (8): 106. дои : 10.3390/пр6080106 .
- ^ В. Хок и К. Шитковски, Примеры тестирования для кодов нелинейного программирования, Конспекты лекций по экономике и математическим системам, Vol. 187, Спрингер, 1981.
- ^ Мохика, Дж. (2017). «Оптимальное сочетание долгосрочного проектирования объектов и краткосрочной эксплуатационной стратегии для инвестиций в мощности ТЭЦ» . Энергия . 118 : 97–115. дои : 10.1016/j.energy.2016.12.009 .
- ^ Итон, А. (2017). «Идентификация модели в реальном времени с использованием многоточечных моделей при бурении с регулируемым давлением». Компьютеры и химическая инженерия . 97 : 76–84. doi : 10.1016/j.compchemeng.2016.11.008 .
- ^ Итон, А. (2015). «После установки оптоволоконных датчиков давления на подводных добывающих стояках для контроля сильных пробок» (PDF) . Слушания OMAE 2015, Сент-Джонс, Канада .
- ^ Пауэлл, К. (2014). «Динамическая оптимизация гибридной солнечной тепловой системы и системы ископаемого топлива». Солнечная энергия . 108 : 210–218. Бибкод : 2014SoEn..108..210P . дои : 10.1016/j.solener.2014.07.004 .
- ^ Спайви, Б. (2010). «Динамическое моделирование ограничений надежности твердооксидных топливных элементов и последствия для расширенного управления» (PDF) . Материалы ежегодного собрания AIChE, Солт-Лейк-Сити, Юта .
- ^ Спайви, Б. (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. doi : 10.1016/j.compchemeng.2018.05.009 .
- ^ Сан, Л. (2013). «Создание оптимальной траектории с использованием прогнозирующего управления моделью для буксируемых по воздуху кабельных систем» (PDF) . Журнал руководства, контроля и динамики . 37 (2): 525–539. Бибкод : 2014JGCD...37..525S . дои : 10.2514/1.60820 .
- ^ Бил, Л. (2018). «Интегрированное планирование и управление в дискретном времени с динамическими параметрами и ограничениями» . Компьютеры и химическая инженерия . 115 : 361–376. doi : 10.1016/j.compchemeng.2018.04.010 .
- ^ Бил, Л. (2017). «Комбинированная модель прогнозирующего управления и планирования с доминирующей компенсацией постоянной времени» . Компьютеры и химическая инженерия . 104 : 271–282. doi : 10.1016/j.compchemeng.2017.04.024 .
- ^ Бил, Л. (2017). «Экономическая выгода от постепенной интеграции планирования и контроля непрерывных химических процессов» (PDF) . Процессы . 5 (4): 84. дои : 10.3390/пр5040084 .
- ^ Петерсен, Д. (2017). «Комбинированное нециклическое планирование и расширенное управление непрерывными химическими процессами» (PDF) . Процессы . 5 (4): 83. дои : 10.3390/пр5040083 . S2CID 3354604 .
- ^ Хеденгрен, Дж. (2018). «Спецвыпуск: совмещенное планирование и контроль» . Процессы . 6 (3): 24. дои : 10.3390/пр6030024 .
- ^ Миттлман, Ганс (1 мая 2018 г.). «Дерево решений для оптимизации программного обеспечения» . Платон . Университет штата Аризона . Проверено 1 мая 2018 г.
Объектно-ориентированная библиотека Python для смешанно-целочисленных и дифференциально-алгебраических уравнений
- ^ «Решающие решения» . ООО «Продвинутые процессные решения» . Проверено 1 мая 2018 г.
GEKKO Python с решателями APOPT или BPOPT
- ^ Эвертон, Коллинг. «Проекты динамической оптимизации» . Петробрас . Петробрас, Статойл, Facebook . Проверено 1 мая 2018 г.
Пример презентации: Эвертон Коллинг из Petrobras делится своим опытом использования GEKKO для моделирования и нелинейного управления дистилляцией.
- ^ «Группа Google APMonitor: GEKKO» . Google . Проверено 1 мая 2018 г.
- ^ «Вычислительная наука: существует ли высококачественный решатель нелинейного программирования для Python?» . Научный Комп . Проверено 1 мая 2018 г.
- ^ Кантор, Джефф (2 мая 2018 г.). «Документация TCLab» (PDF) . Прочтите Документы . Университет Нотр-Дам . Проверено 2 мая 2018 г.
pip установить tclab
- ^ Кантор, Джефф (2 мая 2018 г.). «Химический технологический контроль» . Гитхаб . Университет Нотр-Дам . Проверено 2 мая 2018 г.
Использование лаборатории контроля температуры (TCLab)
- ^ Хеденгрен, Джон (2 мая 2018 г.). «Лаборатория современного контроля температуры» . Курс динамической оптимизации . Университет Бригама Янга . Проверено 2 мая 2018 г.
Практическое применение расширенного контроля температуры
- ^ Сандрок, Карл (2 мая 2018 г.). «Ноутбуки Jupyter для динамики и управления» . Гитхаб . Университет Претории, Южная Африка . Проверено 2 мая 2018 г.
CPN321 (Динамика процесса) и CPB421 (Управление процессом) на факультете химической инженерии Университета Претории.
- ^ «Новости CACHE (зима 2018 г.): включение динамического моделирования в учебные программы по химической инженерии» (PDF) . КЭШ: Компьютерные средства для химического машиностроения . Техасский университет в Остине. 2 мая 2018 г. Архивировано из оригинала (PDF) 3 мая 2018 г. . Проверено 2 мая 2018 г.
Краткий курс Летней школы ASEE 2017, организованной в SCSU Хеденгреном (BYU), Гровером (Технологический институт Джорджии) и Бэджвеллом (ExxonMobil)
Внешние ссылки [ править ]
- Обзор GEKKO с машинным обучением и оптимизацией
- Документация ГЕККО
- Исходный код ГЕККО
- GEKKO на PyPI для установки Python pip
- GEKKO — это продукт с открытым исходным кодом, предоставленный исследовательским грантом Национального научного фонда (NSF) 1547110.
- Ссылки на APMonitor и GEKKO в литературе.
- 18 примеров GEKKO : машинное обучение, оптимальное управление, регрессия данных
- Статистика загрузок Гекко