Los lenguajes de modelado algebraico ( AML ) son lenguajes de programación de alto nivel para describir y resolver problemas de alta complejidad para computación matemática a gran escala (es decir, problemas de optimización a gran escala). [ 1 ] Una ventaja particular de algunos lenguajes de modelado algebraico como AIMMS , [ 1 ] AMPL , [ 2 ] GAMS , [ 1 ] Gekko , MathProg , Mosel , [ 1 ] [ 3 ] y OPL es la similitud de su sintaxis con la notación matemática de los problemas de optimización. Esto permite una definición muy concisa y legible de problemas en el dominio de la optimización, que está respaldada por ciertos elementos del lenguaje como conjuntos, índices, expresiones algebraicas, potentes variables de manejo de datos e índices dispersos, y restricciones con nombres arbitrarios. La formulación algebraica de un modelo no contiene ninguna pista sobre cómo procesarlo.
Un AML no resuelve esos problemas directamente; en cambio, llama a algoritmos externos apropiados para obtener una solución. Estos algoritmos se denominan solucionadores y pueden manejar ciertos tipos de problemas matemáticos como:
- problemas lineales
- problemas enteros
- problemas cuadráticos (de enteros mixtos)
- problemas de complementariedad mixta
- programas matemáticos con restricciones de equilibrio
- sistemas no lineales restringidos
- problemas no lineales generales
- programas no lineales con derivadas discontinuas
- problemas enteros no lineales
- problemas de optimización global
- problemas de optimización estocástica
Elementos básicos
Los elementos centrales de una AML son:
- un intérprete de lenguaje de modelado (el propio AML)
- enlaces del solucionador
- interfaces de usuario (UI)
- instalaciones de intercambio de datos
Principios de diseño
La mayoría de las AML siguen ciertos principios de diseño:
- una mezcla equilibrada de elementos declarativos y procedimentales
- arquitectura abierta e interfaces con otros sistemas
- diferentes capas con separación de:
- modelo y datos
- métodos de modelado y solución
- modelo y sistema operativo
- modelo e interfaz
Generación de modelos basada en datos
La mayoría de los lenguajes de modelado explotan las similitudes entre los modelos estructurados y las bases de datos relacionales [ 4 ] al proporcionar una capa de acceso a la base de datos, que permite al sistema de modelado acceder directamente a los datos de fuentes de datos externas (por ejemplo, estos [ 5 ] manejadores de tablas para AMPL). Con el perfeccionamiento de las tecnologías analíticas aplicadas a los procesos de negocio, los modelos de optimización se están convirtiendo en una parte integral de los sistemas de apoyo a la toma de decisiones ; los modelos de optimización pueden estructurarse y estratificarse para representar y dar soporte a procesos de negocio complejos. En tales aplicaciones, la estructura de datos multidimensional típica de los sistemas OLAP puede asignarse directamente a los modelos de optimización y las operaciones típicas de MDDB pueden traducirse en operaciones de agregación y desagregación en el modelo subyacente [ 6 ].
Historia
Los lenguajes de modelado algebraico tienen su origen en los programas generadores de matrices e informes (MGRW), desarrollados a finales de los años setenta. Algunos ejemplos son MAGEN, MGRW (IBM), GAMMA.3, DATAFORM y MGG/RWG. Estos sistemas simplificaron la comunicación de las instancias de problemas a los algoritmos de solución y la generación de un informe legible de los resultados.
Un generador de matrices para programación lineal se desarrolló alrededor de 1969 en el Mathematisch Centrum (actualmente CWI) de Ámsterdam. [ 7 ] Su sintaxis era muy similar a la notación matemática habitual, utilizando subíndices y símbolos sigma. La entrada del generador consistía en secciones separadas para el modelo y los datos. Encontró usuarios en universidades e industria. El principal usuario industrial fue la siderúrgica Hoogovens (actualmente Tata Steel), donde se utilizó durante casi 25 años.
Un gran avance hacia los lenguajes de modelado modernos se encuentra en UIMP, [ 8 ] donde se analiza por primera vez la estructura de los modelos de programación matemática extraídos de la vida real, para resaltar la agrupación natural de variables y restricciones que surgen de dichos modelos. Esto condujo a características de estructura de datos que apoyaron el modelado estructurado; en este paradigma, todas las tablas de entrada y salida, junto con las variables de decisión, se definen en términos de estas estructuras, de una manera comparable al uso de subíndices y conjuntos. Esta es probablemente la característica más notable común a todos los AML modernos y permitió, con el tiempo, una separación entre la estructura del modelo y sus datos, y una correspondencia entre las entidades en un modelo MP y los datos en bases de datos relacionales. Así, un modelo podía finalmente instanciarse y resolverse sobre diferentes conjuntos de datos, simplemente modificando dichos conjuntos.
La correspondencia entre las entidades de modelado y los modelos de datos relacionales [ 4 ] permitió generar instancias de modelos sin problemas mediante la obtención de datos de bases de datos corporativas. Esta característica explica gran parte de la utilidad de la optimización en aplicaciones reales y es compatible con la mayoría de los lenguajes de modelado más conocidos.
Si bien los lenguajes de modelado algebraico solían ser lenguajes aislados, especializados y comerciales, más recientemente han comenzado a aparecer en forma de bibliotecas especializadas de código abierto dentro de un lenguaje de propósito general, como Gekko o Pyomo para Python o JuMP para el lenguaje Julia .
AML notables
AML especializadas
Paquetes AML en lenguajes de programación genéricos
Referencias
- 1 2 3 4 Kallrath, Joseph (2004). Modeling Languages in Mathematical Optimization . Kluwer Academic Publishing. ISBN 978-1-4020-7547-6.
- ↑ Robert Fourer; David M. Gay; Brian W. Kernighan (1990). "Un lenguaje de modelado para la programación matemática" . Management Science . 36 (5): 519–554–83. doi : 10.1287/mnsc.36.5.519 .
- ↑ Gueret, Christelle; Prins, Christian; Sevaux, Marc (2002). Aplicaciones de optimización con Xpress-MP . Dash Optimization Limited. ISBN 0-9543503-0-8.
- 1 2 Gautam Mitra; Cormac Lucas; Shirley Moody; Bjarni Kristjansson (1995). "Conjuntos e índices en el modelado de programación lineal y su integración con modelos de datos relacionales" . Optimización computacional y aplicaciones . 4 (3): 262– 283.
- ↑Controladores de tablas de bases de datos y hojas de cálculo para AMPL
- ↑ Koutsoukis, N.; Mitra, G .; Lucas, C. (1999). "Adaptación del procesamiento analítico en línea para el modelado de decisiones: la interacción de las tecnologías de la información y de la decisión" . Decision Support Systems . 26 (1): 1– 30. doi : 10.1016/S0167-9236(99)00021-4 . Recuperado el 22 de noviembre de 2017 .
- ↑ Jac. M. Anthonisse, Un sistema de entrada para problemas de programación lineal, Statistica Neerlandica 24 (1970), 143-153.
- ↑ Francis D Ellison; Gautam Mitra (1982). "UIMP: interfaz de usuario para programación matemática" (PDF) . ACM Transactions on Mathematical Software . 8 (3): 229– 255. doi : 10.1145/356004.356005 . S2CID 3948431. Archivado del original (PDF) el 18 de enero de 2014. Recuperado el 16 de enero de 2014 .
- Sistemas de álgebra computacional
- Software de optimización matemática
- Lenguajes de especificación