El monitor de procesos avanzado (APMonitor) es un lenguaje de modelado para ecuaciones diferenciales algebraicas ( EDA ). [ 1 ] Es un servicio web gratuito o un servidor local para resolver representaciones de sistemas físicos en forma de modelos EDA implícitos. APMonitor es adecuado para problemas a gran escala y resuelve programación lineal , programación entera , programación no lineal , programación entera mixta no lineal, simulación dinámica, [ 2 ] estimación de horizonte móvil , [ 3 ] y control predictivo de modelo no lineal . [ 4 ] APMonitor no resuelve los problemas directamente, sino que llama a solucionadores de programación no lineal como APOPT , BPOPT , IPOPT , MINOS y SNOPT . La API de APMonitor proporciona derivadas primeras y segundas exactas de funciones continuas a los solucionadores a través de diferenciación automática y en forma de matriz dispersa .
Integración de lenguajes de programación
Julia , MATLAB y Python son lenguajes de programación matemática que se integran con APMonitor mediante API de servicios web. GEKKO Optimization Suite es una extensión reciente de APMonitor con integración completa en Python. Las interfaces son módulos o cajas de herramientas de optimización integradas para cargar y procesar soluciones de problemas de optimización. APMonitor es un lenguaje de modelado orientado a objetos y una suite de optimización que se basa en lenguajes de programación para cargar, ejecutar y recuperar soluciones. Los modelos y datos de APMonitor se compilan en tiempo de ejecución y se traducen en objetos que son resueltos por un motor de optimización como APOPT o IPOPT . APMonitor no especifica el motor de optimización, lo que permite cambiar entre varios motores diferentes. El modo de simulación u optimización también es configurable para reconfigurar el modelo para simulación dinámica , control predictivo de modelo no lineal , estimación de horizonte móvil o problemas generales en optimización matemática .
Como primer paso para resolver el problema, se expresa un modelo matemático en términos de variables y ecuaciones, como el problema de referencia n.° 71 de Hock y Schittkowski [ 5 ] , 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 modelo matemático se traduce al lenguaje de modelado APMonitor en el siguiente archivo de texto.
! archivo guardado como hs71 . apm Variables x1 = 1 , >= 1 , <= 5 x2 = 5 , >= 1 , <= 5 x3 = 5 , >= 1 , <= 5 x4 = 1 , >= 1 , <= 5 Fin de las variablesLas ecuaciones minimizan x1 * x4 * ( x1 + x2 + x3 ) + x3x1 * x2 * x3 * x4 > 25 x1² + x2² + x3² + x4² = 40 Fin de las ecuacionesEl problema se resuelve entonces en Python instalando primero el paquete APMonitor con pip install APMonitor o desde el siguiente código Python.
# Instalar APMonitor import pip pip . main ([ "install" , "APMonitor" ])La instalación de Python solo es necesaria una vez para cada módulo. Una vez instalado el paquete APMonitor, se importa y la función apm_solve resuelve el problema de optimización. La solución se devuelve al lenguaje de programación para su posterior procesamiento y análisis.
# Ejemplo en Python para resolver un problema de optimización desde APMonitor.apm import *# Resolver el problema de optimización sol = apm_solve ( "hs71" , 3 )# Acceso a la solución x1 = sol [ "x1" ] x2 = sol [ "x2" ]Existen interfaces similares para MATLAB y Julia , con pequeñas diferencias respecto a la sintaxis anterior. Ampliar las capacidades de un lenguaje de modelado es importante, ya que a menudo se requiere un procesamiento previo o posterior significativo de datos o soluciones al resolver problemas complejos de optimización, simulación dinámica, estimación o control.
DAE de alto índice
El orden más alto de una derivada que es necesario para devolver una EDA a la forma de EDO se llama índice de diferenciación . Una forma estándar de tratar con EDA de alto índice es diferenciar las ecuaciones para ponerlas en la forma de EDA o EDO de índice 1 (ver algoritmo de Pantelides ). Sin embargo, este enfoque puede causar una serie de problemas numéricos indeseables, como inestabilidad. Si bien la sintaxis es similar a otros lenguajes de modelado como gProms, APMonitor resuelve EDA de cualquier índice sin reordenamiento ni diferenciación. [ 6 ] Como ejemplo, a continuación se muestra una EDA de índice 3 para las ecuaciones de movimiento del péndulo y los reordenamientos de índice inferior pueden devolver este sistema de ecuaciones a la forma de EDO (ver ejemplo de péndulo de índice 0 a 3 ).
Movimiento pendular (forma DAE de índice 3)
Parámetros del modelo de péndulo m = 1 g = 9,81 s = 1 Parámetros finalesVariables x = 0 y = - s v = 1 w = 0 lam = m * ( 1 + s * g ) / 2 * s ^ 2 Fin VariablesEcuaciones x² + y² = s² $ x = v $ y = w m * $ v = - 2 * x * lam m * $ w = - m * g - 2 * y * lam Fin de las ecuaciones Fin del modeloAplicaciones en el lenguaje de modelado APMonitor
Muchos sistemas físicos se expresan naturalmente mediante ecuaciones diferenciales algebraicas . Algunos ejemplos son:
- cultivos celulares
- reactores químicos
- cogeneración (electricidad y calor) [ 7 ]
- columnas de destilación
- automatización de perforación [ 8 ]
- destilación por vapor de aceite esencial [ 9 ]
- soldadura por fricción-agitación [ 10 ]
- formación de hidratos en oleoductos de aguas profundas [ 11 ]
- propagación de enfermedades infecciosas
- osciladores
- control severo de slugging [ 12 ]
- producción de energía solar térmica [ 13 ]
- pilas de combustible de óxido sólido [ 14 ] [ 15 ]
- simulación de lanzamiento del transbordador espacial
- Vehículos aéreos no tripulados (VANT) [ 16 ]
A continuación se presentan modelos para un motor de corriente continua (CC) y la respuesta de la glucosa en sangre de un paciente insulinodependiente. Estos modelos representan ecuaciones diferenciales y algebraicas comunes en diversas ramas de la ciencia y la ingeniería.
Motor de corriente continua (CC)
Parámetros ! Parámetros del motor (motor de CC) v = 36 ! Voltaje de entrada al motor (voltios) rm = 0,1 ! Resistencia del motor (ohmios) lm = 0,01 ! Inductancia del motor (henrios) kb = 6,5e-4 ! Constante de fuerza contraelectromotriz (voltios·s/rad) kt = 0,1 ! Constante de par (N·m/a) jm = 1,0e-4 ! Inercia del rotor (kg m^2) bm = 1,0e-5 ! Amortiguación mecánica (modelo lineal de fricción: bm * dth)! parámetros de carga jl = 1000 * jm ! inercia de carga (1000 veces el rotor) bl = 1.0e-3 ! amortiguación de carga (fricción) k = 1.0e2 ! constante del resorte para el eje del motor a la carga b = 0.1 ! amortiguación del resorte para el eje del motor a la carga Parámetros finalesVariables i = 0 ! corriente eléctrica del motor (amperios) dth_m = 0 ! velocidad angular del rotor, a veces llamada omega (radianes/seg) th_m = 0 ! ángulo del rotor, theta (radianes) dth_l = 0 ! velocidad angular de la rueda (rad/s) th_l = 0 ! ángulo de la rueda (radianes) Fin de las variablesEcuaciones lm * $ i - v = - rm * i - kb * $ th_m jm * $ dth_m = kt * i - ( bm + b ) * $ th_m - k * th_m + b * $ th_l + k * th_l jl * $ dth_l = b * $ th_m + k * th_m - ( b + bl ) * $ th_l - k * th_l dth_m = $ th_m dth_l = $ th_l Fin de las ecuacionesRespuesta de la glucosa en sangre de un paciente insulinodependiente
! Fuente del modelo: ! A. Roy y RS Parker. “Modelado dinámico de ácidos grasos libres, glucosa e insulina: un modelo mínimo extendido”, ! Diabetes Technology and Therapeutics 8(6), 617-626, 2006. Parámetros p1 = 0,068 ! 1/min p2 = 0,037 ! 1/min p3 = 0,000012 ! 1/min p4 = 1,3 ! mL/(min·µU) p5 = 0,000568 ! 1/mL p6 = 0,00006 ! 1/(min·µmol) p7 = 0,03 ! 1/min p8 = 4,5 ! mL/(min·µU) k1 = 0,02 ! 1/min k2 = 0,03 ! 1/min pF2 = 0,17 ! 1/min pF3 = 0,00001 ! 1/min n = 0,142 ! 1/min VolG = 117 ! dL VolF = 1 1,7 ! L ! parámetros basales para diabético tipo I Ib = 0 ! Insulina (µU/mL) Xb = 0 ! Insulina remota (µU/mL) Gb = 98 ! Glucosa en sangre (mg/dL) Yb = 0 ! Insulina para lipogénesis (µU/mL) Fb = 380 ! Ácido graso libre plasmático (µmol/L) Zb = 380 ! Ácido graso libre remoto (µmol/L) ! tasa de infusión de insulina u1 = 3 ! µU/min ! tasa de captación de glucosa u2 = 300 ! mg/min ! infusión lipídica externa u3 = 0 ! mg/min Parámetros finalesIntermedios p9 = 0,00021 * exp ( - 0,0055 * G ) ! dL/(min*mg) Fin de los intermediosVariables I = Ib X = Xb G = Gb Y = Yb F = Fb Z = Zb Variables finalesEcuaciones ! Dinámica de la insulina $ I = - n * I + p5 * u1 ! Dinámica del compartimento remoto de insulina $ X = - p2 * X + p3 * I ! Dinámica de la glucosa $ G = - p1 * G - p4 * X * G + p6 * G * Z + p1 * Gb - p6 * Gb * Zb + u2 / VolG ! Dinámica de la insulina para la lipogénesis $ Y = - pF2 * Y + pF3 * I ! Dinámica de los ácidos grasos libres (AGL) plasmáticos $ F = - p7 * ( F - Fb ) - p8 * Y * F + p9 * ( F * G - Fb * Gb ) + u3 / VolF ! Dinámica de los AGL remotos $ Z = - k2 * ( Z - Zb ) + k1 * ( F - Fb ) Fin de las ecuacionesVéase también
Referencias
- ↑ JD Hedengren; R. Asgharzadeh Shishavan; KM Powell; TF Edgar (2014). "Modelado no lineal, estimación y control predictivo en APMonitor" . Computers & Chemical Engineering . 70 (5): 133– 148. doi : 10.1016/j.compchemeng.2014.04.013 .
- ↑ Hedengren, J. (2008). "Una biblioteca de modelos no lineales para dinámica y control" (PDF) . Noticias de CACHE (Computer Aids for Chemical Engineering) . Archivado del original (PDF) el 3 de marzo de 2016. Consultado el 29 de marzo de 2010 .
- ↑ Spivey, B. (2009). "Monitoring of Process Fouling Using First-Principles Modeling and Moving Horizon Estimation". Proc. Applications of Computer Algebra (ACA) Conference .
- ↑ Ramlal, J. (2007). "Estimación de horizonte móvil para un reactor industrial de polimerización en fase gaseosa" (PDF) . Simposio IFAC sobre diseño de sistemas de control no lineales (NOLCOS) . Archivado del original (PDF) el 20 de septiembre de 2009. Recuperado el 29 de marzo de 2010 .
- ↑ W. Hock y K. Schittkowski, Test Examples for Nonlinear Programming Codes, Lecture Notes in Economics and Mathematical Systems, Vol. 187, Springer 1981.
- ↑ Harney, D. (2013). "Evaluación numérica de la estabilidad de puntos estacionarios de ecuaciones diferenciales-algebraicas de índice 2: Aplicaciones a sistemas de destilación reactiva y destilación reactiva". Computers & Chemical Engineering . 49 : 61–69 . doi : 10.1016/j.compchemeng.2012.09.021 .
- ↑ 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 . Bibcode : 2017Ene...118...97M . 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 .
- ↑ 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 .
- ↑ Nielsen, Isak (2012). Modelado y control de la soldadura por fricción-agitación en recipientes de cobre de 5 cm de espesor (tesis de maestría). Universidad de Linköping.
- ↑ Brower, D. (2012). "Monitoreo por fibra óptica de equipos submarinos" (PDF) . Actas de OMAE 2012, Río de Janeiro, Brasil .
- ↑ 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 .
- ↑ 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 .
Enlaces externos
- Página principal de APMonitor
- Curso de optimización dinámica con APMonitor
- Documentación de APMonitor
- Citas de APMonitor
- Motor de soluciones en línea con IPOPT
- Comparación de la sintaxis de lenguajes de modelado populares
- Descargue el cliente APM MATLAB , APM Python o APM Julia para APMonitor.
- Descargar APMonitor Server (Windows)
- Descargar APMonitor Server (Linux)
- Lenguajes de programación numérica
- Software de optimización matemática