AMPL | |
---|---|
clase de idioma | Multiparadigma : Declarativo , Imperativo |
Apareció en | 1985 |
Desarrollador | AMPL Optimización, Inc. |
extensión de archivo | .mod, .dato.run |
Liberar | 20220323 (23 de marzo de 2022 ) |
sido influenciado | A.W.K. , C |
influenciado | piomo |
Licencia |
Freemium (traductor), código abierto (AMPL Solver Library) |
Sitio web | ampl.com |
sistema operativo | Multiplataforma : Linux , macOS , Solaris , AIX , Windows |
AMPL (abreviatura de A Mathematical Programming Language) es un lenguaje de alto nivel para el modelado algebraico y la representación de problemas a gran escala de alta complejidad. AMPL fue desarrollado por Robert Fourer, David Gay y Brian Kernighan en Bell Laboratories en 1985 para describir y resolver problemas complejos de optimización y programación. Los autores de AMPL recibieron el premio Operations Research Society of America en 1993. AMPL no resuelve los problemas directamente, sino que recurre a "solucionadores" externos adecuados, tanto de código abierto como comerciales (CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO y LGO). Los problemas se transfieren a los solucionadores en forma de archivos nl. AMPL es utilizado por más de 200 clientes corporativos, así como por agencias gubernamentales e instituciones académicas. Una de las ventajas de AMPL 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 fácil de leer de un problema de optimización. Muchos solucionadores modernos disponibles en el servidor NEOS (anteriormente alojado en el Laboratorio Nacional de Argonne, ahora alojado en la Universidad de Wisconsin, Madison University of Wisconsin, Madison [3]) aceptan entrada AMPL. Según las estadísticas de NEOS, AMPL es el formato más popular para presentar problemas de programación matemática.
AMPL combina estilos de programación declarativos e imperativos . Los modelos de optimización se formulan utilizando elementos de un lenguaje declarativo: conjuntos, parámetros escalares y multidimensionales, variables de decisión, funciones objetivo y restricciones, que permiten describir brevemente la mayoría de problemas en el campo de la optimización matemática. Los procedimientos y operadores disponibles en AMPL le permiten: - intercambiar datos con fuentes de datos externas como hojas de cálculo, bases de datos, XML, CSV y archivos de texto; - Realizar el procesamiento previo y posterior de los datos del modelo de optimización; - Implementar algoritmos híbridos para resolver tipos de problemas para los que no existen solucionadores eficientes directos; - Modelo y datos separados, lo que simplifica enormemente la reutilización de modelos y soluciones y simplifica la construcción de problemas de optimización a gran escala;
AMPL admite una amplia gama de tipos de tareas, que incluyen:
La interacción con el solucionador se realiza a través de una interfaz nl bien definida.
AMPL está disponible para muchos sistemas operativos populares de 32 y 64 bits , incluidos Linux , macOS , Solaris , AIX y Windows . [2] Traductor es un software patentado mantenido por AMPL Optimization LLC. Sin embargo, existen varios servicios en línea que brindan herramientas y soluciones de modelado gratuitas utilizando AMPL. [3] [4] También están disponibles una versión gratuita para estudiantes con funcionalidad limitada y una versión gratuita con todas las funciones para cursos académicos. [5]
AMPL se puede utilizar desde Microsoft Excel a través del complemento SolverStudio Excel.
La biblioteca AMPL Solver (ASL), que le permite leer archivos nl y proporciona una diferenciación automática, es de código abierto. Se utiliza en muchos solucionadores para implementar la conexión AMPL.
Esta tabla representa hitos importantes en la historia de AMPL.
Período | Eventos principales |
---|---|
1985 | AMPL fue diseñado e implementado [6] |
1990 | En la revista Management Science [7] se publicó un artículo que describe el lenguaje de modelado AMPL . |
1991 | AMPL admite programación no lineal y diferenciación automática |
1993 | Robert Furer, David Gay y Brian Kernighan recibieron el premio ORSA/CSTS [8] de la Operations Research Society of America por su trabajo en el diseño de sistemas de programación matemática y el lenguaje de modelado AMPL. |
1995 | Extensiones para representar estructuras lineales y de red por partes |
1995 | Construcciones de guiones |
1997 | Soporte extendido para solucionadores no lineales |
1998 | AMPL apoya los problemas de la teoría de la complementariedad |
2000 | Acceso a bases de datos relacionales y hojas de cálculo |
2002 | Soporte para programación de restricciones [9] |
2003 | AMPL Optimization LLC fue fundada por los inventores de AMPL, Robert Furer, David Gay y Brian Kernighan. La nueva empresa se hizo cargo del desarrollo y mantenimiento del lenguaje de modelado AMPL de Lucent Technologies, Inc. |
2005 | Lanzamiento del grupo de Google sobre el lenguaje de modelado AMPL [10] |
2008 | Kestrel: Introducción de la interfaz AMPL para el servidor NEOS |
2011 | AMPL para cursos |
2012 | Robert Furer, David Gay y Brian Kernighan recibieron el premio INFORMS Impact 2012 como creadores de uno de los lenguajes de modelado algebraico más importantes. [once] |
2012 | El libro AMPL sale gratis en línea [12] |
2012 | AMPL "Lógica" y Extensiones de Programación Restringida |
2013 | Un nuevo entorno de desarrollo integrado (IDE) multiplataforma para AMPL está disponible [13] |
2015 | API AMPL para MATLAB |
2016 | API AMPL para C++ |
2017 | API AMPL para Python |
2018 | API AMPL para R |
2020 | Nueva interfaz de hoja de cálculo AMPL Direct |
2022 | Implementación de optimización en nubes y contenedores |
El problema de transporte de George Danzig se usa para proporcionar un ejemplo de un modelo AMPL. Esta tarea busca el programa de envío de menor costo que satisfaga los requisitos de suministro del mercado y de la fábrica. [catorce]
establecer plantas ; establecer Mercados ; # Capacidad de la planta p en casos param Capacidad { p en Plantas }; # Demanda en el mercado m en casos param Demanda { m en Mercados }; # Distancia en miles de millas param Distancia { Plantas , Mercados }; # Flete en dólares por caja por mil millas param Flete ; # Costo de transporte en miles de dólares por caja param TransportCost { p en Plantas , m en Mercados } : = Flete * Distancia [ p , m ] / 1000 ; # Cantidad de envío en var pls . _ _ _ _ # Los costos totales de transporte en miles de dólares minimizan el costo : sum { p en Plantas , m en Mercados } Costo de Transporte [ p , m ] * envío [ p , m ]; # Observar el límite de suministro en la planta p s.t. oferta { p en Plantas }: sum { m en Mercados } envío [ p , m ] <= Capacidad [ p ]; # Satisfacer la demanda en el mercado m s.t. demanda { m en Mercados }: sum { p en Plantas } envío [ p , m ] >= Demanda [ m ]; datos ; conjunto Plantas : = seattle san - diego ; establecer Mercados : = new - york chicago topeka ; param Capacidad : = seattle 350 san - diego 600 ; param Demanda : = nueva york 325 chicago 300 topeka 275 ; _ param Distancia : nueva - york chicago topeka : = seattle 2,5 1,7 1,8 san - diego 2,5 1,8 1,4 ; param Flete : = 90 ;Aquí hay una lista parcial de solucionadores compatibles con AMPL: [15]
solucionador | Tipos de problemas admitidos |
---|---|
APOTAR | programación no lineal de enteros mixtos |
Artelys Knitro | programación lineal, cuadrática y no lineal |
Bonmin | programación no lineal de enteros mixtos |
BPMPD | programación lineal y cuadrática |
MONEDA-O CBC | programación entera mixta |
MONEDA O CLP | programación lineal |
CONOPTO | programación no lineal |
[ 16] | Programación no lineal entera mixta (MINLP) |
CPLEX | programación lineal, cuadrática, de cono de segundo orden y entera mixta |
Optimizador de CP CPLEX [17] | programación de restricciones |
FILTRAR | programación no lineal |
FortMP | programación entera lineal, cuadrática y mixta |
Código geográfico [18] | programación de restricciones |
IPOPT | programación no lineal |
JaCoP [19] | programación de restricciones |
LGO [20] | optimización no lineal global y local |
lp_resolver [21] | programación entera lineal y mixta |
MINOS | programación lineal y no lineal |
MINTO | programación entera mixta |
MOSEK | lineal, entero mixto lineal, cuadrático, entero mixto cuadrático, acotado cuadráticamente, cónico y convexo programación no lineal |
motor de octeracto | Todo tipo de problemas de optimización sin términos diferenciales o integrales, incluyendo problemas discontinuos con funciones elementales min y max . |
SCIP | programación entera mixta |
SNOPT | programación no lineal |
Sulum [22] | programación entera lineal y mixta |
TRABAJO | programación no lineal |
XA | programación entera lineal y mixta |
Expresar | optimización cuadrática lineal y convexa y sus contrapartes enteras mixtas |
Haga clic en el mapa para abrir una versión interactiva
Plantilla:Software de optimización matemática