El paquete GEKKO Python [1] resuelve ecuaciones algebraicas diferenciales y enteras mixtas a gran escala con solucionadores de programación no lineal ( IPOPT , APOPT , BPOPT, SNOPT , MINOS ). Los modos de operación incluyen aprendizaje automático, reconciliació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), programa cuadrático restringido cuadráticamente (QCQP), programación no lineal (NLP), programación entera mixta (MIP) yProgramación lineal de enteros mixtos (MILP). GEKKO está disponible en Python y se instala con pip de PyPI de la Python Software Foundation.
![]() | |
Desarrollador (es) | Logan Beal y John Hedengren |
---|---|
Lanzamiento estable | 0.2.7 / 28 de julio de 2020 |
Repositorio | ![]() |
Sistema operativo | Multiplataforma |
Tipo | Computación técnica |
Licencia | MIT |
Sitio web | gekko |
pip instalar gekko
GEKKO funciona en todas las plataformas y con Python 2.7 y 3+. De forma predeterminada, el problema se envía a un servidor público donde se calcula la solución y se devuelve a Python. Hay opciones de procesador de Windows, MacOS, Linux y ARM (Raspberry Pi) para resolver sin una conexión a Internet. GEKKO es una extensión de APMonitor Optimization Suite, pero ha integrado el modelado y la visualización de la solución directamente dentro de Python. Un modelo matemático se expresa en términos de variables y ecuaciones como el Problema de referencia de Hock & Schittkowski # 71 [2] que se utiliza para probar el rendimiento de los solucionadores de programación no lineal . Este problema de optimización particular tiene una función objetivo y sujeto a la restricción de desigualdad y restricción de igualdad . Las cuatro variables deben estar entre un límite inferior de 1 y un límite superior de 5. Los valores iniciales de estimación son. Este problema de optimización se resuelve con GEKKO como se muestra a continuación.
de gekko importar 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 . Obj ( x1 * x4 * ( x1 + x2 + x3 ) + x3 ) # Objetivo m . solve ( disp = False ) # Resuelve print ( "x1:" + str ( x1 . valor )) print ( "x2:" + str ( x2 . valor )) print ( "x3:" + str ( x3 . valor )) print ( "x4:" + str ( x4 . valor )) print ( "Objetivo:" + str ( m . opciones . objfcnval ))
Aplicaciones de GEKKO
Las aplicaciones incluyen cogeneración (energía y calor) , [3] automatización de perforación , [4] control de taponamiento severo, [5] producción de energía solar térmica, [6] celdas de combustible de óxido sólido , [7] [8] aseguramiento de flujo, [9] Recuperación mejorada de aceite , [10] Extracción de aceite esencial , [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 la inclusión en el árbol de decisiones para software de optimización, [18] soporte agregado para solucionadores APOPT y BPOPT, [19] informes de proyectos del curso de optimización dinámica en línea de participantes internacionales. [20] GEKKO es un tema en foros en línea donde los usuarios están resolviendo 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
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/b/b5/Artificial_Neural_Network_Example.png/220px-Artificial_Neural_Network_Example.png)
Una aplicación del aprendizaje automático es realizar una regresión de los datos de entrenamiento para construir una correlación. En este ejemplo, el aprendizaje profundo genera un modelo a partir de los datos de entrenamiento que se generan con la función. Una red neuronal artificial con tres capas se utiliza para este ejemplo. La primera capa es lineal, la segunda capa tiene una función de activación tangente hiperbólica y la tercera capa es lineal. El programa produce pesos de parámetros que minimizan la suma de errores cuadrados 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 de peso óptimos en lugar de métodos estándar como la propagación hacia atrás . Los gradientes se determinan mediante diferenciación automática, similar a otros paquetes populares. El problema se resuelve como un problema de optimización restringido y converge cuando el solucionador satisface las condiciones de Karush-Kuhn-Tucker . El uso de un optimizador basado en gradientes permite restricciones adicionales que pueden imponerse con el conocimiento del dominio de los datos o del sistema.
de gekko importar cerebro importar numpy como npb = cerebro . Cerebro () b . capa_entrada ( 1 ) b . capa ( lineal = 3 ) b . capa ( tanh = 3 ) b . capa ( lineal = 3 ) b . capa_salida ( 1 ) x = np . linspace ( - np . pi , 3 * np . pi , 20 ) y = 1 - np . cos ( x ) b . aprender ( x , y )
El modelo de red neuronal se prueba en toda la gama de datos de entrenamiento, así como para extrapolarlo para demostrar predicciones deficientes fuera de los datos de entrenamiento. Las predicciones fuera del conjunto de datos de entrenamiento se mejoran con el aprendizaje automático híbrido que utiliza principios fundamentales (si están disponibles) para imponer una estructura que sea válida en una gama más amplia de condiciones. En el ejemplo anterior, la función de activación de la tangente hiperbólica (capa oculta 2) podría reemplazarse con una función de 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.
xp = np . linspace ( - 2 * np . pi , 4 * np . pi , 100 ) yp = b . pensar ( xp ) importar matplotlib.pyplot como pltplt . figura () plt . plot ( x , y , "bo" ) plt . plot ( xp , yp [ 0 ], "r-" ) plt . mostrar ()
Control óptimo
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/e/e5/Optimal_Control_Luus.png/220px-Optimal_Control_Luus.png)
El control óptimo es el uso de optimización matemática para obtener una política que está restringida por diferencias, igualdad , o desigualdad ecuaciones y minimiza una función objetivo / recompensa . El control óptimo básico se resuelve con GEKKO integrando el objetivo y transcribiendo la ecuación diferencial en forma algebraica con colocación ortogonal en elementos finitos.
de gekko importar GEKKO importar numpy como np importar matplotlib.pyplot como pltm = GEKKO () # inicializar gekko nt = 101 m . tiempo = np . linspace ( 0 , 2 , nt ) # Variables x1 = m . Var ( valor = 1 ) x2 = m . Var ( valor = 0 ) u = m . Var ( valor = 0 , lb = - 1 , ub = 1 ) p = np . ceros ( nt ) # marcar el punto de tiempo final p [ - 1 ] = 1.0 final = m . Param ( valor = p ) # Ecuaciones m . Ecuación ( x1 . Dt () == u ) m . Ecuación ( x2 . Dt () == 0.5 * x1 ** 2 ) m . Obj ( x2 * final ) # Función objetivo m . opciones . IMODE = 6 # modo de control óptimo m . solve () # resolver plt . figura ( 1 ) # resultados de la gráfica plt . plot ( m . tiempo , x1 . valor , "k-" , etiqueta = r "$ x_1 $" ) plt . plot ( m . tiempo , x2 . valor , "b-" , etiqueta = r "$ x_2 $" ) plt . plot ( m . tiempo , u . valor , "r--" , etiqueta = r "$ u $" ) plt . leyenda ( loc = "mejor" ) plt . xlabel ( "Hora" ) plt . ylabel ( "Valor" ) plt . mostrar ()
Ver también
- APMonitor y Python .
Referencias
- ^ Beal, L. (2018). "Suite de optimización GEKKO" . Procesos . 6 (8): 106. doi : 10.3390 / pr6080106 .
- ^ W. Hock y K. Schittkowski, Ejemplos de prueba para códigos de programación no lineal, Notas de conferencias en economía y sistemas matemáticos, 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" . Energía . 118 : 97-115. doi : 10.1016 / j.energy.2016.12.009 .
- ^ Eaton, A. (2017). "Identificación de modelos en tiempo real utilizando modelos de fidelidad múltiple en perforaciones a presión gestionadas". Computación e Ingeniería Química . 97 : 76–84. doi : 10.1016 / j.compchemeng.2016.11.008 .
- ^ Eaton, A. (2015). "Sensores de presión de fibra óptica instalados posteriormente en elevadores de producción submarinos para un control de golpes severo" (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". Energía solar . 108 : 210–218. Código bibliográfico : 2014SoEn..108..210P . doi : 10.1016 / j.solener.2014.07.004 .
- ^ Spivey, B. (2010). "Modelado dinámico de restricciones de confiabilidad en pilas 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 pila de combustible de óxido sólido tubular". Revista de Control de Procesos . 22 (8): 1502-1520. doi : 10.1016 / j.jprocont.2012.01.015 .
- ^ Hedengren, J. (2018). "Nuevo sistema de aseguramiento de flujo con monitoreo de presión y temperatura por fibra óptica submarina de alta velocidad" . ASME 37th International Conference on Ocean, Offshore and Artctic Engineering, OMAE2018 / 78079, Madrid, España : V005T04A034. doi : 10.1115 / OMAE2018-78079 . ISBN 978-0-7918-5124-1.
- ^ Udy, J. (2017). "Modelado de pedidos reducidos para la optimización y previsión de inyección de yacimientos" (PDF) . FOCAPO / CPC 2017, Tucson, AZ .
- ^ Valderrama, F. (2018). "Un enfoque de control óptimo para la destilación al vapor de aceites esenciales de plantas aromáticas". Computación e Ingeniería Química . 117 : 25–31. doi : 10.1016 / j.compchemeng.2018.05.009 .
- ^ Sol, L. (2013). "Generación de trayectoria óptima utilizando control predictivo de modelos para sistemas de cables remolcados por vía aérea" (PDF) . Revista de Orientación, Control y Dinámica . 37 (2): 525–539. Código bibliográfico : 2014JGCD ... 37..525S . doi : 10,2514 / 1,60820 .
- ^ Beal, L. (2018). "Programación y control integrados en tiempo discreto con parámetros dinámicos y restricciones" . Computación e Ingeniería Química . 115 : 361–376. doi : 10.1016 / j.compchemeng.2018.04.010 .
- ^ Beal, L. (2017). "Control predictivo y programación de modelos combinados con compensación constante de tiempo dominante" . Computación e Ingeniería Química . 104 : 271-282. doi : 10.1016 / j.compchemeng.2017.04.024 .
- ^ Beal, L. (2017). “Beneficio económico de la integración progresiva de programación y control para procesos químicos continuos” . Procesos . 5 (4): 84. doi : 10.3390 / pr5040084 .
- ^ Petersen, D. (2017). "Programación no cíclica combinada y control avanzado para procesos químicos continuos" . Procesos . 5 (4): 83. doi : 10.3390 / pr5040083 .
- ^ Hedengren, J. (2018). "Edición especial: programación y control combinados" . Procesos . 6 (3): 24. doi : 10.3390 / pr6030024 .
- ^ Mittleman, Hans (1 de mayo de 2018). "Árbol de decisiones para software de optimización" . Platón . Universidad Estatal de Arizona . Consultado el 1 de mayo de 2018 .
Biblioteca de Python orientada a objetos para ecuaciones algebraicas diferenciales y enteras mixtas
- ^ "Soluciones Solver" . Soluciones de proceso avanzadas, LLC . Consultado el 1 de mayo de 2018 .
Python GEKKO con APOPT o BPOPT Solvers
- ^ 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 para el modelado y control no lineal de destilación
- ^ "APMonitor Google Group: 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 TCLab" (PDF) . ReadTheDocs . Universidad de Notre Dame . Consultado el 2 de mayo de 2018 .
pip instalar tclab
- ^ Kantor, Jeff (2 de mayo de 2018). "Control de procesos químicos" . GitHub . Universidad de Notre Dame . Consultado el 2 de mayo de 2018 .
Uso del laboratorio de control de temperatura (TCLab)
- ^ Hedengren, John (2 de mayo de 2018). "Laboratorio avanzado de control de temperatura" . Curso de Optimización Dinámica . Universidad Brigham Young . Consultado el 2 de mayo de 2018 .
Aplicaciones prácticas de control de temperatura avanzado
- ^ 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 (Process Dynamics) y CPB421 (Process Control) en el departamento de Ingeniería Química de la Universidad de Pretoria
- ^ "CACHE News (invierno 2018): incorporación de la simulación dinámica en los planes de estudios 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 . Consultado el 2 de mayo de 2018 .
Curso corto 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 GEKKO
- Código fuente GEKKO
- GEKKO en PyPI para la instalación de Python pip
- GEKKO es un producto de código abierto de la subvención de investigación 1547110 de la National Science Foundation (NSF)
- Referencias a APMonitor y GEKKO en la literatura
- 18 ejemplos de GEKKO : aprendizaje automático, control óptimo, regresión de datos