Episodio

ompr: una manera alternativa de modelar programas lineales de enteros mixtos

con Dirk Schumacher

useR!2017: ompr: una manera alternativa de modelar mixto-...

Palabras clave: programación de enteros, programación lineal, modelado, optimización
Páginas web: https://github.com/dirkschumacher/ompr
Muchos problemas de optimización del mundo real, como el popular problema del vendedor de viajes, se pueden formular como un programa lineal de enteros mixto (MILP). El objetivo de MILP es optimizar una función objetivo lineal, sujeta a un conjunto de restricciones lineales. En las últimas décadas, se han desarrollado solucionadores especializados de código abierto y comercial, como el Kit de programación lineal GNU (GLPK), que puede resolver eficazmente estos tipos de problemas.
En R, las interfaces para estos solucionadores están orientadas principalmente a matrices. Al resolver un MILP en R, primero tendría que desarrollar el modelo real y luego traducirlo en código que construye una matriz y vectores antes de pasarlo a un solucionador. Especialmente para los modelos más complejos, el código de R puede ser bastante difícil de desarrollar y razonar sin documentación adicional.
ompr es un lenguaje específico del dominio que permite modelar MILPs mediante declaración mediante funciones como set_objective, add_variable o add_constraint. Junto con las canalizaciones magrittr , puede crear un modelo igual que una instrucción dplyr incrementalmente, sin preocuparse por cómo crear la matriz y los vectores. Además, un modelo de ompr es independiente de solucionadores específicos y muchos solucionadores populares se pueden usar fácilmente a través de la familia de paquetes ROI (Hornik et al. 2016).
La idea de modelar programas de enteros mixtos de forma algebraica no es nueva en general. Lenguajes específicos de dominio como GNU MathProg o el proyecto JuMP (Dunning, Huchette y Lubin 2015) en Julia implementan un enfoque similar como ompr e inspiran su desarrollo. En lo que sé, hay otro paquete de R relacionado, roml (Vana, Schwendinger y Hochreiter 2016), que está actualmente en desarrollo y sigue un camino similar.
El paquete de ompr se desarrolla y está disponible en GitHub. Además del propio paquete existen varias viñetas y ejemplos que describen cómo modelar y resolver problemas de optimización populares, como el problema del vendedor de viajes, el problema de ubicación del almacén o la resolución interactiva de Sudokus con brillo.
En esta charla presentaré las características de modelado de ompr, cómo se puede usar el paquete para resolver problemas prácticos de optimización y algunas ideas para futuros desarrollos.
Referencias a Dunning, Iain, Joey Huchette y Miles Lubin. 2015. "JuMP: Un lenguaje de modelado para la optimización matemática". arXiv:1508.01982 [Math.OC]. http://arxiv.org/abs/1508.01982.

Kit de programación lineal GNU. 2017. http://www.gnu.org/software/glpk/glpk.html.

Hornik, Kurt, David Meyer, Florian Schwendinger y Stefan Theussl. 2016. ROI: Infraestructura de optimización de R. https://CRAN.R-project.org/package=ROI.

Vana, Laura, Florian Schwendinger y Ronald Hochreiter. 2016. Lenguaje de modelado de optimización de R. https://r-forge.r-project.org/projects/roml/.