AMPL (lenguaje de programación)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 13 de abril de 2017; las comprobaciones requieren 12 ediciones .
AMPL
clase de idioma Multiparadigma : Declarativo , Imperativo
Apareció en 1985  ( 1985 )
Desarrollador AMPL Optimización, Inc.
extensión de archivo .mod, .dato.run
Liberar 20220323 (23 de marzo de 2022 ) ( 2022-03-23 ​​)
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.

Funciones

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.

Disponibilidad

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.

Historia

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

Modelo de muestra

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 ;

Solucionadores

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

Mapa de ecosistemas

Haga clic en el mapa para abrir una versión interactiva

Véase también

  • sol (formato)
  • GNU MathProg (anteriormente conocido como GMPL) es un subconjunto de AMPL compatible con GNU Linear Programming Suite [23] .

Recomendaciones

Notas

  1. Fourer, Robert (2002). "Extensión de un lenguaje de modelado algebraico para admitir la programación de restricciones" . INFORMA Revista de Computación . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 .
  2. Plataformas . AMPL Optimizaciones Inc. . Consultado el 14 de mayo de 2022. Archivado desde el original el 14 de mayo de 2022.
  3. Servidor NEOS para optimización . Consultado el 11 de agosto de 2015. Archivado desde el original el 6 de mayo de 2011.
  4. ¡Prueba AMPL! . Consultado el 11 de agosto de 2015. Archivado desde el original el 18 de junio de 2011.
  5. Descargas AMPL . Consultado el 11 de agosto de 2015. Archivado desde el original el 26 de mayo de 2015.
  6. Error: parámetro no establecido en la plantilla {{ publicación }} . - ISBN 978-0-534-38809-6 . Fourer, Robert ; Gay, David M ; Kernighan, Brian W. (2003). AMPL: un lenguaje de modelado para programación matemática . Estados Unidos: Duxbury Press/Brooks/Cole Publishing Company. ISBN |заглавие= 978-0-534-38809-6.
  7. Fourer, Robert (1990). "Un lenguaje de modelado para la programación matemática" (PDF) . Ciencias Administrativas . 36 (5): 519–554–83. DOI : 10.1287/mnsc.36.5.519 . Archivado (PDF) desde el original el 16 de julio de 2011 . Consultado el 14 de mayo de 2022 . Parámetro obsoleto utilizado |deadlink=( ayuda )
  8. INFORMA. ICS-INFORMA . Consultado el 11 de agosto de 2015. Archivado desde el original el 7 de octubre de 2006.
  9. Fourer, Robert (2002). "Extensión de un lenguaje de modelado algebraico para admitir la programación de restricciones" . INFORMA Revista de Computación . 14 (4): 322-344. DOI : 10.1287/ijoc.14.4.322.2825 . Fourer, Robert ; Gay, David M. (2002). "Extensión de un lenguaje de modelado algebraico para admitir la programación de restricciones" . INFORMA Revista de Computación . 14 (4): 322–344. CiteSeerX  10.1.1.8.9699 . doi : 10.1287/ijoc.14.4.322.2825 .
  10. Grupos de Google . Consultado el 14 de mayo de 2022. Archivado desde el original el 26 de mayo de 2013.
  11. INFORMA. Premio Impacto INFORMA . Consultado el 11 de agosto de 2015. Archivado desde el original el 22 de octubre de 2013.
  12. Descarga gratuita - AMPL: un lenguaje de modelado para programación matemática . Consultado el 5 de marzo de 2021. Archivado desde el original el 20 de mayo de 2022.
  13. Grupos de Google . Consultado el 11 de agosto de 2015. Archivado desde el original el 31 de mayo de 2019.
  14. Error: parámetro no establecido en la plantilla {{ publicación }} . ISBN 978-1-4008-8417-9 . |заглавие=
  15. Solvers-AMPL . Consultado el 21 de enero de 2018. Archivado desde el original el 27 de febrero de 2014.
  16. Couenne . Fecha de acceso: 27 de octubre de 2013. Archivado desde el original el 29 de octubre de 2013.
  17. mp/solvers/ilogcp en master ampl/mp GitHub . GitHub . Consultado el 11 de agosto de 2015. Archivado desde el original el 14 de mayo de 2022.
  18. mp/solvers/gecode en master ampl/mp GitHub . GitHub . Consultado el 11 de agosto de 2015. Archivado desde el original el 14 de mayo de 2022.
  19. mp/solvers/jacop en master ampl/mp GitHub . GitHub . Consultado el 11 de agosto de 2015. Archivado desde el original el 14 de mayo de 2022.
  20. LGO-AMPL . Consultado el 11 de agosto de 2015. Archivado desde el original el 11 de agosto de 2015.
  21. Uso de lpsolve de AMPL . Consultado el 11 de agosto de 2015. Archivado desde el original el 14 de mayo de 2022.
  22. mp/solvers/sulum en master ampl/mp GitHub . GitHub . Consultado el 11 de agosto de 2015. Archivado desde el original el 14 de mayo de 2022.
  23. Sitio oficial de GLPK . Consultado el 17 de septiembre de 2020. Archivado desde el original el 30 de mayo de 2022.

Enlaces externos

Plantilla:Software de optimización matemática