La Infraestructura Computacional para la Investigación Operativa ( COIN-OR ) es un proyecto que busca "crear para el software matemático lo que la literatura abierta es para la teoría matemática ". La literatura abierta (por ejemplo, una revista de investigación) proporciona a la comunidad de investigación operativa (IO) un proceso de revisión por pares y un archivo. Los artículos en revistas de investigación operativa sobre teoría matemática a menudo incluyen resultados numéricos de estudios computacionales que los respaldan. Las implementaciones de software, los modelos y los datos utilizados para producir dichos resultados numéricos generalmente no se publican. Esta situación dificultaba a los investigadores que necesitaban reproducir resultados computacionales, realizar comparaciones justas y ampliar el estado del arte.
El éxito de Linux , Apache y otros proyectos popularizó el modelo de código abierto para el desarrollo y la distribución de software. Un grupo de IBM Research propuso el código abierto como una alternativa 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 operativa computacional y para proporcionar los recursos en línea y los servicios de alojamiento necesarios para que otros pudieran ejecutar sus propios proyectos de software de código abierto .
El sitio web COIN-OR se lanzó como un experimento en 2000, en conjunto 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 ] incluyendo herramientas para programación lineal (por ejemplo, COIN-OR CLP ), programación no lineal (por ejemplo, IPOPT ), programación entera (por ejemplo, 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 administrado por la Fundación COIN-OR, una organización educativa sin fines de lucro.
Proyectos
CLP
COIN-OR LP (CLP o Clp) es un solucionador de programación lineal de código abierto escrito en C++ . Se publica bajo la Licencia Pública Común , por lo que puede utilizarse en software propietario sin necesidad de contribuir con mejoras, como ocurre con la Licencia Pública General de GNU . CLP está diseñado principalmente para usarse como una biblioteca invocable, aunque también se puede compilar una versión ejecutable independiente. Está diseñado para ser tan fiable como cualquier solucionador comercial, aunque varias veces más lento, [ 3 ] y para poder abordar problemas de gran tamaño.
CLP está diseñado para resolver problemas de programación lineal como :
- minimizar
- sujeto a las restricciones 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 de 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 entera mixta de código abierto escrito en C++ . Puede utilizarse como ejecutable independiente y como biblioteca invocable (a través de A Mathematical Programming Language ( AMPL ) [de forma nativa], General Algebraic Modeling System (GAMS) [utilizando los enlaces proporcionados por los proyectos COIN-OR Optimization Services (OS) y GAMSlinks ], MPL [a través del proyecto CoinMP ], AIMMS [a través del proyecto AIMMSlinks ], PuLP , CMPL, [ 4 ] OpenSolver para Excel, [ 5 ] JuMP, [ 6 ] o MiniZinc ). Aunque ha sido una opción popular de solucionador MIP de código abierto durante muchos años, su rendimiento ahora es significativamente inferior al de HiGHS. [ 7 ] [ 8 ]
SINFONÍA
SYMPHONY ( Optimización de procesos únicos o múltiples sobre redes ) es un marco de código abierto de ramificación y corte para resolver programas de enteros mixtos (MIP) sobre redes heterogéneas. [ 9 ] 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 del algoritmo de ramificación, corte y precio para resolver problemas de programación lineal entera mixta (MILP). Este algoritmo es similar al de ramificación y acotación , pero incluye además métodos de planos de corte y algoritmos de precios. El usuario puede personalizar el algoritmo de diversas maneras, proporcionando subrutinas específicas para la aplicación, como la lectura de archivos de datos personalizados, la generación de planos de corte específicos o la aplicación de reglas de ramificación personalizadas, lo que da como resultado un algoritmo de ramificación y corte a medida. La mayoría de los componentes del algoritmo, como la gestión del árbol de búsqueda, la gestión de la solución de programación lineal, la gestión del conjunto de cortes y la gestión de la comunicación, son internos a la biblioteca y no requieren la intervención del usuario. Los ejecutables pueden compilarse en diversas configuraciones, desde completamente secuenciales hasta totalmente paralelas, con generadores de cortes, conjuntos de cortes y solucionadores de programación lineal que funcionan 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 puede compilarse para arquitecturas de memoria compartida utilizando cualquier compilador compatible con OpenMP .
SYMPHONY lee archivos MPS (a través del lector COIN-OR MPS) y GNU MathProg . SYMPHONY no tiene un solucionador de programación lineal propio, pero puede usarse con solucionadores como Clp, Cplex y Xpress a través de la interfaz Osi. Los cortes se generan usando la biblioteca de generación de cortes de COIN: CGL. SYMPHONY también tiene implementaciones específicas para problemas estructurales como el problema del viajante , el problema de enrutamiento de vehículos , el problema de partición de conjuntos , el problema del cartero mixto , etc. SYMPHONY también tiene una consola interactiva donde el usuario puede ingresar comandos para ejecutar y controlar el programa.
Pulpa
PuLP es un modelador LP/IP escrito en Python . [ 10 ] Puede generar archivos MPS o LP y llamar a GLPK , CLP / CBC y CPLEX 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++. [ 11 ] Puede leer MPS estocástico 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 de los escenarios.
RBFOpt
RBFOpt es un solucionador MINLP de código abierto escrito en Python y distribuido bajo la licencia BSD revisada. RBFOpt emplea una estrategia de modelo sustituto de función de base radial para minimizar funciones objetivo de caja negra costosas. Resuelve problemas MINLP con una combinación de variables continuas, enteras y categóricas sujetas a restricciones de caja. No admite restricciones lineales ni no lineales generales.
El solucionador tiene una larga trayectoria de desarrollo y se sigue desarrollando activamente en GitHub. Para resolver problemas con variables enteras, requiere un solucionador MINLP externo y suavizado. Se pueden utilizar Bonmin e Ipopt, de código abierto.
Véase también
- Los solucionadores COIN-OR están disponibles en los sistemas de modelado JuMP , AIMMS , AMPL , GAMS y FortSP . También se pueden usar desde Excel mediante los complementos OpenSolver y SolverStudio .
Referencias
- ↑ "Informe anual de COIN-OR, 2007" (PDF) . Archivado (PDF) del original el 15 de mayo de 2008. Consultado el 28 de marzo de 2008 .
- ↑ "Informe anual de COIN-OR, 2011" (PDF) . Archivado (PDF) del original el 29/04/2016 . Consultado el 05/07/2016 .
- ↑ "Benchmark of Simplex LP solucioners" . Archivado del original el 11/11/2021 . Consultado el 11/11/2021 .
- ↑ coin-or/Cmpl , Fundación COIN-OR, 2024-01-20, archivado del original el 2024-04-13 , recuperado el 2024-06-20
- ↑ "OpenSolver para Excel: el solucionador de optimización de código abierto para Excel" . opensolver.org . Archivado del original el 10 de junio de 2024. Consultado el 20 de junio de 2024 .
- ↑ jump-dev/JuMP.jl , JuMP-dev, 19-06-2024, archivado del original el 15-05-2024 , recuperado el 20-06-2024
- ↑ "HiGHS - Software de optimización lineal paralela de alto rendimiento" . www.highs.dev . Archivado del original el 17 de junio de 2024. Consultado el 20 de junio de 2024 .
- ↑ "Las instancias de referencia MIPLIB2017" . Archivado del original el 30/10/2021 . Consultado el 11/11/2021 .
- ↑ "SINFONÍA" . Archivado del original el 28 de febrero de 2014. Consultado el 14 de noviembre de 2013 .
- ↑ "PuLP" . Archivado del original el 20 de diciembre de 2013. Consultado el 14 de noviembre de 2013 .
- ↑ "SMI" . Archivado del original el 15-10-2014 . Consultado el 03-01-2014 .
Lecturas adicionales
- JT Linderoth y TK Ralphs: Software no comercial para programación lineal entera mixta . En: Programación entera: teoría y práctica , John Karlof (ed.), CRC Press Operations Research Series, 2005, 253-303. (Versión preliminar)
- T. Ralphs: Introducción al conjunto de herramientas de optimización COIN-OR: herramientas de código abierto para la creación y resolución de modelos de optimización . Jornadas de Optimización, Montreal, 7 de mayo de 2013. (Diapositivas de la presentación)
Enlaces externos
- Sitio web oficial de COIN-OR, Infraestructura Computacional para la Investigación Operativa
- Software de optimización matemática