El paquete GEKKO para Python [ 1 ] resuelve ecuaciones algebraicas diferenciales y de enteros mixtos a gran escala con solucionadores de programación no lineal ( IPOPT , APOPT , BPOPT, SNOPT , MINOS ). Sus modos de operación incluyen aprendizaje automático, conciliación de datos, optimización en tiempo real, simulación dinámica y control predictivo de modelos no lineales . Además, el paquete resuelve programación lineal (LP), programación cuadrática (QP), programación cuadrática con restricciones cuadráticas (QCQP), programación no lineal (NLP), programación de enteros mixtos (MIP) y programación lineal de enteros mixtos (MILP). GEKKO está disponible en Python y se instala con pip desde PyPI de la Python Software Foundation.
pip install gekkoGEKKO funciona en todas las plataformas y con Python 2.7 y 3+. Por defecto, el problema se envía a un servidor público donde se calcula la solución y se devuelve a Python. Hay opciones para Windows, macOS, Linux y procesadores ARM (Raspberry Pi) para resolverlo sin conexión a Internet. GEKKO es una extensión de la suite de optimización APMonitor , pero ha integrado el modelado y la visualización de la solución directamente en Python. Un modelo matemático se expresa en términos de variables y ecuaciones, como el problema de referencia Hock & Schittkowski n.° 71 [ 2 ] , utilizado para probar el rendimiento de los solucionadores de programación no lineal . Este problema de optimización en particular tiene una función objetivo.y sujeto a la restricción de desigualdady restricción de igualdadLas cuatro variables deben estar entre un límite inferior de 1 y un límite superior de 5. Los valores iniciales estimados son:Este problema de optimización se resuelve con GEKKO como se muestra a continuación.
de gekko import GEKKOm = GEKKO () # Inicializar gekko # Inicializar variables x1 = m . Var ( valor = 1 , lb = 1 , ub = 5 ) x2 = m . Var ( valor = 5 , lb = 1 , ub = 5 ) x3 = m . Var ( valor = 5 , lb = 1 , ub = 5 ) x4 = m . Var ( valor = 1 , lb = 1 , ub = 5 ) # Ecuaciones m . Ecuación ( x1 * x2 * x3 * x4 >= 25 ) m . Ecuación ( x1 ** 2 + x2 ** 2 + x3 ** 2 + x4 ** 2 == 40 ) m . Minimizar ( x1 * x4 * ( x1 + x2 + x3 ) + x3 ) m . resolver ( disp = False ) # Resolver imprimir ( "x1: " + str ( x1 . value )) imprimir ( "x2: " + str ( x2 . value )) imprimir ( "x3: " + str ( x3 . value )) imprimir ( "x4: " + str ( x4 . value )) imprimir ( "Objetivo: " + str ( m . options . objfcnval ))Aplicaciones de GEKKO
Las aplicaciones incluyen cogeneración (electricidad y calor) , [ 3 ] automatización de perforación , [ 4 ] control severo de slugging, [ 5 ] producción de energía solar térmica, [ 6 ] pilas de combustible de óxido sólido , [ 7 ] [ 8 ] garantía de flujo, [ 9 ] recuperación mejorada de petróleo , [ 10 ] extracción de aceites esenciales , [ 11 ] y vehículos aéreos no tripulados (UAV) . [ 12 ] Hay muchas otras referencias a APMonitor y GEKKO como muestra de los tipos de aplicaciones que se pueden resolver. GEKKO se desarrolló a partir de la subvención de investigación de la National Science Foundation (NSF) #1547110 [ 13 ] [ 14 ] [ 15 ] [ 16 ] y se detalla en una colección de números especiales sobre programación y control combinados. [ 17 ] Otras menciones notables de GEKKO son su inclusión en el árbol de decisiones para software de optimización, [ 18 ] el soporte añadido para los solucionadores APOPT y BPOPT, [ 19 ] los informes de proyectos del curso en línea de Optimización Dinámica de participantes internacionales. [ 20 ] GEKKO es un tema en foros en línea donde los usuarios resuelven problemas de optimización y control óptimo. [ 21 ] [ 22 ] GEKKO se utiliza para control avanzado en el Laboratorio de Control de Temperatura (TCLab) [ 23 ] para la educación en control de procesos en 20 universidades. [ 24 ] [ 25 ] [ 26 ] [ 27 ]
Aprendizaje automático

Una aplicación del aprendizaje automático es realizar una regresión a partir de datos de entrenamiento para construir una correlación. En este ejemplo, el aprendizaje profundo genera un modelo a partir de datos de entrenamiento que se generan con la funciónPara este ejemplo se utiliza una red neuronal artificial de tres capas. La primera capa es lineal, la segunda tiene una función de activación de tangente hiperbólica y la tercera es lineal. El programa genera pesos de parámetros que minimizan la suma de los errores cuadráticos entre los puntos de datos medidos y las predicciones de la red neuronal en esos puntos. GEKKO utiliza optimizadores basados en gradientes para determinar los valores óptimos de los pesos, en lugar de métodos estándar como la retropropagación . Los gradientes se determinan mediante diferenciación automática, similar a otros paquetes populares. El problema se resuelve como un problema de optimización con restricciones y converge cuando el solucionador satisface las condiciones de Karush-Kuhn-Tucker . El uso de un optimizador basado en gradientes permite imponer restricciones adicionales con conocimiento del dominio de los datos o del sistema.
from gekko import brain import numpy as npb = cerebro.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 )El modelo de red neuronal se prueba con el conjunto de datos de entrenamiento y también se utiliza para la extrapolación, demostrando predicciones deficientes fuera de dicho conjunto. Estas predicciones mejoran con un aprendizaje automático híbrido que emplea principios fundamentales (si están disponibles) para imponer una estructura válida en un rango más amplio de condiciones. En el ejemplo anterior, la función de activación de tangente hiperbólica (capa oculta 2) podría reemplazarse por una función seno o coseno para mejorar la extrapolación. La parte final del script muestra el modelo de red neuronal, la función original y los puntos de datos muestreados utilizados para el ajuste.
import matplotlib.pyplot as pltxp = 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 ( )Control óptimo

El control óptimo es el uso de la optimización matemática para obtener una política que está restringida por restricciones diferenciales.igualdado desigualdadecuaciones y minimiza una función objetivo/de recompensaEl control óptimo básico se resuelve con GEKKO integrando la función objetivo y transcribiendo la ecuación diferencial a forma algebraica con colocación ortogonal en elementos finitos.
from gekko import GEKKO import numpy as np import matplotlib.pyplot as pltm = GEKKO () # inicializar 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 ) # marcar el punto de tiempo final p [ - 1 ] = 1.0 final = m . Param ( value = p ) # Ecuaciones m . Equation ( x1 . dt () == u ) m . Equation ( x2 . dt () == 0.5 * x1 ** 2 ) m . Minimize ( x2 * final ) m . options . IMODE = 6 # modo de control óptimo m . solve () # resolver plt . figura ( 1 ) # graficar resultados 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--"plt.legend ( loc = " best " ) plt.xlabel ( " Time " ) plt.ylabel ( " Value " ) plt.show ( )Véase también
Referencias
- ↑ Beal, L. (2018). "GEKKO Optimization Suite" . Processes . 6 (8): 106. doi : 10.3390/pr6080106 .
- ↑ W. Hock y K. Schittkowski, Test Examples for Nonlinear Programming Codes, Lecture Notes in Economics and Mathematical Systems, Vol. 187, Springer 1981.
- ↑ Mojica, J. (2017). "Diseño óptimo combinado de instalaciones a largo plazo y estrategia operativa a corto plazo para inversiones en capacidad de cogeneración" . Energy . 118 : 97–115 . doi : 10.1016/j.energy.2016.12.009 .
- ↑ Eaton, A. (2017). "Identificación de modelos en tiempo real mediante modelos de multifidelidad en perforación con presión controlada". Computers & Chemical Engineering . 97 : 76–84 . doi : 10.1016/j.compchemeng.2016.11.008 .
- ↑ Eaton, A. (2015). "Sensores de presión de fibra óptica postinstalados en tuberías ascendentes de producción submarinas para el control severo de la formación de burbujas" (PDF) . Actas de OMAE 2015, St. John's, Canadá .
- ↑ Powell, K. (2014). "Optimización dinámica de un sistema híbrido solar térmico y de combustibles fósiles". Solar Energy . 108 : 210–218 . Bibcode : 2014SoEn..108..210P . doi : 10.1016/j.solener.2014.07.004 .
- ↑ Spivey, B. (2010). "Modelado dinámico de restricciones de confiabilidad en celdas de combustible de óxido sólido e implicaciones para el control avanzado" (PDF) . Actas de la reunión anual de AIChE, Salt Lake City, Utah .
- ↑ Spivey, B. (2012). "Modelado dinámico, simulación y control predictivo MIMO de una celda de combustible de óxido sólido tubular". Journal of Process Control . 22 (8): 1502– 1520. doi : 10.1016/j.jprocont.2012.01.015 .
- ↑ Hedengren, J. (2018). Nuevo sistema de garantía de flujo con monitorización submarina de alta velocidad de presión y temperatura mediante fibra óptica . 37.ª Conferencia Internacional de Ingeniería Oceánica, Offshore y Ártica de la ASME, OMAE2018/78079, Madrid, España. pp. V005T04A034. doi : 10.1115/OMAE2018-78079 . ISBN 978-0-7918-5124-1.
- ↑ Udy, J. (2017). "Modelado de orden reducido para la optimización y predicción de la inyección en yacimientos" (PDF) . FOCAPO / CPC 2017, Tucson, AZ .
- ↑ Valderrama, F. (2018). "Un enfoque de control óptimo para la destilación por vapor de aceites esenciales de plantas aromáticas". Computers & Chemical Engineering . 117 : 25–31 . doi : 10.1016/j.compchemeng.2018.05.009 .
- ↑ Sun, L. (2013). "Generación de trayectoria óptima mediante control predictivo de modelo para sistemas de cable remolcados aéreamente" (PDF) . Journal of Guidance, Control, and Dynamics . 37 (2): 525– 539. Bibcode : 2014JGCD...37..525S . doi : 10.2514/1.60820 .
- ↑ Beal, L. (2018). "Programación y control integrados en tiempo discreto con parámetros y restricciones dinámicas" . Computers & Chemical Engineering . 115 : 361–376 . doi : 10.1016/j.compchemeng.2018.04.010 .
- ↑ Beal, L. (2017). "Control predictivo de modelo combinado y programación con compensación de constante de tiempo dominante" . Computers & Chemical Engineering . 104 : 271–282 . doi : 10.1016/j.compchemeng.2017.04.024 .
- ↑ Beal, L. (2017). "Beneficio económico de la integración progresiva de la programación y el control para procesos químicos continuos" (PDF) . Processes . 5 (4): 84. doi : 10.3390/pr5040084 .
- ↑ Petersen, D. (2017). "Programación no cíclica combinada y control avanzado para procesos químicos continuos" (PDF) . Processes . 5 (4): 83. doi : 10.3390/pr5040083 . S2CID 3354604 .
- ↑ Hedengren, J. (2018). "Número especial: programación y control combinados" . Processes . 6 (3): 24. doi : 10.3390/pr6030024 .
- ↑ Mittleman, Hans (1 de mayo de 2018). "Árbol de decisión para software de optimización" . Plato . Universidad Estatal de Arizona . Recuperado el 1 de mayo de 2018.
Biblioteca Python orientada a objetos para ecuaciones diferenciales-algebraicas y de enteros mixtos
. - ↑ "Soluciones de resolución" . Advanced Process Solutions, LLC . Consultado el 1 de mayo de 2018.
GEKKO Python con solucionadores APOPT o BPOPT.
- ↑ Everton, Colling. "Proyectos de optimización dinámica" . Petrobras . Petrobras, Statoil, Facebook . Consultado el 1 de mayo de 2018.
Ejemplo de presentación: Everton Colling de Petrobras comparte su experiencia con GEKKO en el modelado y control no lineal de la destilación.
- ↑ "Grupo de Google APMonitor: GEKKO" . Google . Consultado el 1 de mayo de 2018 .
- ↑ "Ciencia Computacional: ¿Existe un solucionador de programación no lineal de alta calidad para Python?" . SciComp . Consultado el 1 de mayo de 2018 .
- ↑ Kantor, Jeff (2 de mayo de 2018). "Documentación de TCLab" (PDF) . ReadTheDocs . Universidad de Notre Dame . Consultado el 2 de mayo de 2018.
pip install tclab
- ↑ Kantor, Jeff (2 de mayo de 2018). "Control de procesos químicos" . GitHub . Universidad de Notre Dame . Recuperado el 2 de mayo de 2018.
Uso del Laboratorio de Control de Temperatura (TCLab)
. - ↑ Hedengren, John (2 de mayo de 2018). "Laboratorio de control avanzado de temperatura" . Curso de optimización dinámica . Universidad Brigham Young . Recuperado el 2 de mayo de 2018.
Aplicaciones prácticas del control avanzado de temperatura
. - ↑ Sandrock, Carl (2 de mayo de 2018). "Cuadernos Jupyter para Dinámica y Control" . GitHub . Universidad de Pretoria, Sudáfrica . Consultado el 2 de mayo de 2018.
CPN321 (Dinámica de Procesos) y CPB421 (Control de Procesos) en el departamento de Ingeniería Química de la Universidad de Pretoria
. - ↑ "Noticias de CACHE (Invierno de 2018): Incorporación de la simulación dinámica en los planes de estudio de ingeniería química" (PDF) . CACHE: Ayudas informáticas para la ingeniería química . Universidad de Texas en Austin. 2 de mayo de 2018. Archivado del original (PDF) el 3 de mayo de 2018. Consultado el 2 de mayo de 2018.
Curso breve en la Escuela de Verano ASEE 2017 organizada en SCSU por Hedengren (BYU), Grover (Georgia Tech) y Badgwell (ExxonMobil).
Enlaces externos
- Descripción general de GEKKO con aprendizaje automático y optimización
- Documentación de GEKKO
- Código fuente de GEKKO
- GEKKO en PyPI para Python pip install
- GEKKO es un producto de código abierto financiado por la subvención de investigación número 1547110 de la Fundación Nacional de Ciencias (NSF).
- Referencias a APMonitor y GEKKO en la literatura
- 18 ejemplos de GEKKO : aprendizaje automático, control óptimo, regresión de datos
- Estadísticas de descargas de Gekko
- Lenguajes de programación numérica
- Software de optimización matemática