La Infraestructura Computacional para la Investigación de Operaciones ( COIN-OR ), es un proyecto que tiene como objetivo "crear para el software matemático lo que es la literatura abierta para la teoría matemática ". La literatura abierta (por ejemplo, una revista de investigación) proporciona a la comunidad de investigación operativa (OR) un proceso de revisión por pares y un archivo. Los artículos publicados en revistas de investigación de operaciones sobre teoría matemática a menudo contienen resultados numéricos de apoyo de estudios computacionales. Las implementaciones de software, los modelos y los datos utilizados para producir los resultados numéricos generalmente no se publican. El statu quo impidió que los investigadores tuvieran que reproducir resultados computacionales, hacer comparaciones justas y ampliar el estado de la técnica.
Sitio web | www |
---|
El éxito de Linux , Apache y otros proyectos popularizó el modelo de código abierto de desarrollo y distribución de software. Un grupo de IBM Research propuso el código abierto como un medio análogo pero viable para publicar software, modelos y datos. COIN-OR se concibió como una iniciativa para promover el código abierto en la comunidad de investigación de operaciones computacionales y para proporcionar los recursos en línea y los servicios de alojamiento necesarios para permitir que otros ejecuten sus propios proyectos de software de código abierto .
El sitio web COIN-OR se lanzó como un experimento en 2000, junto con el 17º Simposio Internacional sobre Programación Matemática en Atlanta, Georgia. En 2007, COIN-OR tenía 25 proyectos de aplicación, [1] que incluían herramientas para programación lineal (p. Ej., COIN-OR CLP ), programación no lineal (p. Ej., IPOPT ), programación de enteros (p. Ej., CBC, Bcp y COIN-OR SYMPHONY ) , lenguajes de modelado algebraico (por ejemplo, Coopr ) y más. Para 2011, esto había aumentado a 48 proyectos. [2] COIN-OR está alojado por el Instituto de Investigación Operativa y Ciencias de la Gestión, INFORMS , y es administrado por la Fundación educativa y sin fines de lucro COIN-OR.
Proyectos
CLP
COIN-OR LP (CLP o Clp) es un solucionador de programación lineal de código abierto escrito en C ++ . Está publicado bajo la Licencia Pública Común, por lo que puede usarse en software propietario sin ninguna de las restricciones de la Licencia Pública General GNU . CLP está destinado principalmente a utilizarse como una biblioteca invocable, aunque se puede crear una versión ejecutable independiente. Está diseñado para ser tan confiable como cualquier solucionador comercial (aunque un poco más lento) y para poder abordar problemas muy grandes.
CLP está diseñado para resolver problemas de programación lineal como:
- minimizar
- sujeto a las limitaciones del problema de la siguiente forma
- y variables no negativas
con hasta millones de variables y / o restricciones. Su algoritmo principal es el algoritmo simplex .
CLP se utiliza en otros proyectos COIN-OR como SYMPHONY , Branch Cut and Price (BCP), COIN-OR Branch and Cut ( CBC ), y otros.
CBC
COIN-OR branch and cut (CBC o Cbc) es un solucionador de programación de enteros mixtos de código abierto escrito en C ++ . Se puede usar como un ejecutable independiente y como una biblioteca invocable (a través de A Mathematical Programming Language ( AMPL ) [de forma nativa], General Algebraic Modeling System (GAMS) [usando los enlaces provistos por COIN-OR Optimization Services (OS ) y proyectos GAMSlinks ], MPL [a través del proyecto CoinMP ], AIMMS [a través del proyecto AIMMSlinks ], PuLP , CMPL , OpenSolver para Excel , JuMP o MiniZinc ).
SINFONÍA
La optimización de proceso único o multiproceso en redes (SYMPHONY) es un marco de rama y corte de código abierto para resolver programas de enteros mixtos (MIP) en redes heterogéneas. [3] Puede utilizar CLP , CPLEX , XPRESS u otros solucionadores de programación lineal para resolver los programas lineales subyacentes.
SYMPHONY es una biblioteca invocable que implementa versiones secuenciales y paralelas de rama, corte y precio para resolver MILP. Un algoritmo de rama, corte y precio es similar a un algoritmo de rama y límite , pero además incluye métodos de plano de corte y algoritmos de precios. El usuario de la biblioteca puede personalizar el algoritmo de varias formas al proporcionar subrutinas específicas de la aplicación para leer en archivos de datos personalizados, generar planos de corte específicos de la aplicación o aplicar reglas de ramificación personalizadas, lo que da como resultado un algoritmo de corte y ramificación personalizado. La mayoría de los componentes del algoritmo, por ejemplo, la gestión del árbol de búsqueda, la gestión de la solución de programación lineal, la gestión del grupo de cortes y la gestión de la comunicación, son internos de la biblioteca y el usuario no necesita tocarlos. Los ejecutables se pueden construir en cualquier cantidad de configuraciones que van desde completamente secuenciales hasta completamente paralelas con generadores de corte, grupos de corte y solucionadores LP que funcionen de forma independiente. La versión distribuida se ejecuta actualmente en cualquier entorno compatible con el protocolo de paso de mensajes PVM . El mismo código fuente también se puede compilar para arquitecturas de memoria compartida utilizando cualquier compilador compatible con OpenMP .
SYMPHONY lee MPS (a través del lector COIN-OR MPS) y archivos GNU MathProg . SYMPHONY no tiene un LP-Solver propio, pero se puede usar con solvers como Clp, Cplex, Xpress a través de la interfaz Osi. Los cortes se generan utilizando la biblioteca de generación de cortes de COIN: CGL. SYMPHONY también tiene implementaciones específicas de estructura para problemas como el problema del viajante , vehículo de enrutamiento de problemas , conjunto problema de la partición , de problemas cartero mixto , etc. SYMPHONY también tiene un shell interactivo donde el usuario puede introducir comandos para ejecutar y controlar el programa.
Pulpa
PuLP es un modelador LP / IP escrito en Python . [4] Puede generar archivos MPS o LP y llamar a GLPK , CLP / CBC , CPLEX y Gurobi para resolver problemas lineales. PuLP es la herramienta de optimización predeterminada en SolverStudio para Excel .
SMI
SMI es un modelador y solucionador de programación estocástica escrito en C ++. [5] Puede leer Stochastic MPS y ofrece interfaces directas para construir programas estocásticos. Genera el programa lineal equivalente determinista, lo resuelve y proporciona interfaces para acceder a las soluciones del escenario.
Ver también
- Los solucionadores COIN-OR están disponibles en los sistemas de modelado AIMMS , AMPL y GAMS , y en el solucionador FortSP . También se pueden utilizar desde Excel a través de los complementos OpenSolver y SolverStudio .
Referencias
- ^ Informe anual COIN-OR, 2007
- ^ Informe anual COIN-OR, 2011
- ^ SINFONÍA
- ^ PuLP
- ^ "SMI" . Archivado desde el original el 15 de octubre de 2014 . Consultado el 3 de enero de 2014 .
Otras lecturas
- JT Linderoth y TK Ralphs: Software no comercial para programación lineal de enteros mixtos . En: Programación de enteros: teoría y práctica , John Karlof (ed.), CRC Press Operations Research Series, 2005, 253-303. (Versión en papel de trabajo)
- T. Ralphs: Introducción a COIN-OR Optimization Suite: Herramientas de código abierto para construir y resolver modelos de optimización . Optimization Days, Montreal, 7 de mayo de 2013. (Diapositivas de la presentación)
enlaces externos
- Sitio web oficial COIN-OR, Infraestructura Computacional para Investigación Operativa