stringtranslate.com

AMPL

AMPL ( A Mathematical Programming Language ) es un lenguaje de modelado algebraico para describir y resolver problemas de alta complejidad para computación matemática a gran escala (por ejemplo, problemas de optimización y programación a gran escala). [1] Fue desarrollado por Robert Fourer , David Gay y Brian Kernighan en Bell Laboratories . AMPL admite docenas de solucionadores , tanto de código abierto como de software comercial , incluidos CBC, CPLEX , FortMP , MOSEK , MINOS , IPOPT , SNOPT , KNITRO y LGO. Los problemas se pasan a los solucionadores como archivos nl . AMPL es utilizado por más de 100 clientes corporativos, agencias gubernamentales e instituciones académicas. [2]

Una ventaja 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 legible de los problemas en el dominio de la optimización . Muchos solucionadores modernos disponibles en el servidor NEOS (anteriormente alojado en el Laboratorio Nacional Argonne , actualmente alojado en la Universidad de Wisconsin, Madison [3] ) aceptan la entrada AMPL. Según las estadísticas de NEOS, AMPL es el formato más popular para representar problemas de programación matemática.

Características

AMPL presenta una combinación de estilos de programación declarativa e imperativa . La formulación de modelos de optimización se realiza a través de elementos del lenguaje declarativo, como conjuntos, parámetros escalares y multidimensionales, variables de decisión, objetivos y restricciones , que permiten una descripción concisa de la mayoría de los problemas en el dominio de la optimización matemática.

Los procedimientos y las declaraciones de flujo de control están disponibles en AMPL para

Para apoyar la reutilización y simplificar la construcción de problemas de optimización a gran escala, AMPL permite la separación del modelo y los datos.

AMPL admite una amplia gama de tipos de problemas, entre ellos:

AMPL invoca un solucionador en un proceso separado que tiene estas ventajas:

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 . [5] El traductor es un software propietario mantenido por AMPL Optimization LLC. Sin embargo, existen varios servicios en línea que brindan funciones gratuitas de modelado y resolución mediante AMPL. [6] [7] 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. [8]

AMPL se puede utilizar desde Microsoft Excel a través del complemento Excel SolverStudio .

La biblioteca de resolución AMPL (ASL), que permite leer archivos nl y proporciona la diferenciación automática, es de código abierto. Se utiliza en muchos solucionadores para implementar la conexión AMPL.

Historial de estado

Esta tabla presenta pasos significativos en la historia de AMPL.

Un modelo de muestra

Se utiliza un problema de transporte de George Dantzig para proporcionar un modelo AMPL de muestra. Este problema busca el programa de envío de menor costo que cumpla con los requisitos de los mercados y los suministros de las fábricas. [15]

 establecer Plantas ; establecer Mercados ;    # Capacidad de la planta p en casos param Capacidad { p en Plantas };     # Demanda en el mercado m en casos param Demand { 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 ;               # Cantidades de envío en casos var envío { Plantas , Mercados } >= 0 ;      # Los costos totales de transporte en miles de dólares minimizan el costo : suma { p en Plantas , m en Mercados } CostoDeTransporte [ p , m ] * envío [ p , m ];              # Respetar el límite de suministro en la planta p s.t. suministro { p en Plantas }: suma { m en Mercados } envío [ p , m ] <= Capacidad [ p ];            # Satisfacer la demanda del mercado m s.t. demanda { m en Mercados }: suma { p en Plantas } envío [ p , m ] >= Demanda [ m ];            datos ; establecer Plantas : = seattle san - diego ; establecer Mercados : = nueva - 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 Carga : = 90 ;   

Solucionadores

A continuación se muestra una lista parcial de solucionadores compatibles con AMPL: [16]

Véase también

Referencias

  1. ^ ab 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.
  2. ^ "Puesto disponible". Archivado desde el original el 11 de septiembre de 2011. Consultado el 29 de julio de 2011 .
  3. ^ "Acerca de" . Consultado el 11 de agosto de 2015 .
  4. ^ ab Fourer, Robert ; Gay, David M. (2002). "Extensión de un lenguaje de modelado algebraico para soportar la programación con restricciones". INFORMS Journal on Computing . 14 (4): 322–344. CiteSeerX 10.1.1.8.9699 . doi :10.1287/ijoc.14.4.322.2825. 
  5. ^ "Plataformas". AMPL Optimizations Inc. Archivado desde el original el 14 de mayo de 2022. Consultado el 1 de noviembre de 2019 .
  6. ^ "Servidor NEOS para optimización" . Consultado el 11 de agosto de 2015 .
  7. ^ "¡Prueba AMPL!" . Consultado el 11 de agosto de 2015 .
  8. ^ "Descargas de AMPL". Archivado desde el original el 26 de mayo de 2015 . Consultado el 11 de agosto de 2015 .
  9. ^ Fourer, Robert ; Gay, David M.; Kernighan, Brian W. (1990). "Un lenguaje de modelado para programación matemática" (PDF) . Management Science . 36 (5): 519–554–83. doi :10.1287/mnsc.36.5.519.
  10. ^ INFORMA. "ICS - INFORMA" (PDF) . Archivado desde el original (PDF) el 7 de octubre de 2006. Consultado el 11 de agosto de 2015 .
  11. ^ "Grupos de Google".
  12. ^ INFORMS. «Premio de Impacto INFORMS». Archivado desde el original el 22 de octubre de 2013. Consultado el 11 de agosto de 2015 .
  13. ^ "El libro de AMPL: una guía completa para crear modelos de optimización, para usuarios principiantes o experimentados" . Consultado el 5 de marzo de 2021 .
  14. ^ "Grupos de Google" . Consultado el 11 de agosto de 2015 .
  15. ^ Dantzig, George (2016) [1963]. "3. Formulación de un modelo de programación lineal". Programación lineal y extensiones . Princeton University Press. págs. 32–62. ISBN 978-1-4008-8417-9.
  16. ^ "Solvers - AMPL". Archivado desde el original el 27 de febrero de 2014 . Consultado el 21 de enero de 2018 .
  17. ^ "Couenne". Archivado desde el original el 29 de octubre de 2013. Consultado el 27 de octubre de 2013 .
  18. ^ "mp/solvers/ilogcp at master · ampl/mp · GitHub". GitHub . Consultado el 11 de agosto de 2015 .
  19. ^ "mp/solvers/gecode at master · ampl/mp · GitHub". GitHub . Consultado el 11 de agosto de 2015 .
  20. ^ "mp/solvers/jacop at master · ampl/mp · GitHub". GitHub . Consultado el 11 de agosto de 2015 .
  21. ^ "LGO - AMPL" . Consultado el 11 de agosto de 2015 .
  22. ^ "Uso de lpsolve desde AMPL" . Consultado el 11 de agosto de 2015 .
  23. ^ "mp/solvers/sulum at master · ampl/mp · GitHub". GitHub . Consultado el 11 de agosto de 2015 .
  24. ^ "Sitio oficial de GLPK" . Consultado el 17 de septiembre de 2020 .

Enlaces externos