Multicommodity Network Design

Este proyecto desarrolla un modelo de optimización de diseño de redes multicommodity que determina el plan semanal de envíos más eficiente en costes, minimizando costes fijos, variables y penalizaciones por compatibilidad, al mismo tiempo que satisface la demanda, respeta las capacidades de los arcos, garantiza las restricciones de seguridad alimentaria (productos incompatibles no pueden compartir rutas) y asegura la fiabilidad del suministro al abastecer cada par destino–producto desde al menos dos orígenes

¿En qué consistió vuestro proyecto?

Nuestro proyecto se centró en un problema de Diseño de Redes Multicommodity, cuyo objetivo era determinar un plan semanal óptimo de envíos que satisficiera la demanda al mínimo coste total.

Modelamos el transporte de múltiples productos alimentarios desde los orígenes hasta los destinos a través de una red de arcos con restricciones de capacidad. El modelo incorpora costes fijos y variables de transporte, límites de capacidad, restricciones de seguridad alimentaria (que impiden que productos incompatibles viajen juntos), requisitos de fiabilidad (garantizando que cada destino reciba cada producto desde al menos dos orígenes) y penalizaciones por compatibilidad cuando varios productos comparten el mismo arco.

El objetivo era diseñar una red de distribución eficiente en costes, fiable y segura utilizando técnicas de optimización matemática.

¿Qué impacto o problema real buscabais abordar?

Nuestro proyecto pretendía abordar el reto real de hacer que las cadenas de suministro sean tanto eficientes en costes como fiables, especialmente en el ámbito de la distribución alimentaria.

En la práctica, las empresas logísticas deben equilibrar bajos costes de transporte con regulaciones de seguridad, capacidad limitada y el riesgo de interrupciones en el suministro. Nos centramos en cómo diseñar un sistema de distribución que reduzca costes, garantice la compatibilidad alimentaria y asegure que cada destino esté abastecido desde múltiples orígenes para lograr mayor resiliencia.

Este tipo de optimización es altamente relevante para supermercados y redes de distribución, donde pequeñas mejoras en las decisiones de enrutamiento pueden generar ahorros significativos y mejorar la estabilidad operativa.

¿Qué enfoques técnicos y herramientas utilizasteis y por qué las elegisteis?

Formulamos el problema como un Programa Lineal Entero Mixto (MILP), ya que combina decisiones continuas de flujo con variables binarias para la activación de arcos y penalizaciones por compatibilidad.

Inicialmente implementamos el modelo en PuLP, pero a medida que aumentó su complejidad, migramos a Pyomo por su mayor flexibilidad y escalabilidad. Construimos el modelo de forma incremental, comenzando con restricciones de balance de flujo y capacidad, y posteriormente añadiendo restricciones de enlace big-M, reglas de compatibilidad y requisitos de diversificación.

Para resolver el modelo utilizamos el solver HiGHS, que ofreció un buen rendimiento y nos permitió obtener una solución de alta calidad dentro de un límite de 60 segundos y con un gap MIP del 1%.

Por favor, cuéntanos sobre tu proyecto:

Metodología:

Formulamos el problema como un modelo de Programación Lineal Entera Mixta.

El objetivo era minimizar el coste total de transporte, incluyendo costes fijos de activación de arcos, costes variables de envío y penalizaciones por compatibilidad.

El modelo incluía restricciones de satisfacción de la demanda, límites de capacidad de los arcos, restricciones de enlace big-M entre flujos y variables binarias, requisitos de diversificación (al menos dos orígenes por producto y destino) y restricciones de incompatibilidad por grupos.

Implementamos el modelo en Pyomo y lo resolvimos utilizando el solver HiGHS.

Resultados

El solver obtuvo una solución de alta calidad con un valor objetivo de 8.642,7 dentro de un límite de 60 segundos y un gap MIP del 1%.

La estructura de costes mostró que los costes fijos representaban la mayor parte (aproximadamente el 67%), seguidos de los costes variables de transporte y las penalizaciones por mezcla.

Los resultados destacaron cómo las penalizaciones y los requisitos de diversificación influyen en las decisiones de enrutamiento y en el coste total.

Conclusiones: 

El proyecto demostró la existencia de un equilibrio entre minimizar el coste y garantizar seguridad y fiabilidad.

Penalizaciones más altas por compatibilidad reducen la mezcla de productos, pero incrementan los costes fijos, mientras que la diversificación mejora la robustez a costa de un mayor coste total.

En conjunto, el modelo proporciona una forma estructurada de equilibrar la eficiencia económica con la fiabilidad operativa.

¿Hubo algún reto durante el proceso y cómo lo superasteis?

Uno de los principales retos fue gestionar la creciente complejidad del modelo a medida que incorporábamos costes fijos, penalizaciones por compatibilidad, requisitos de diversificación y restricciones de incompatibilidad por grupos.

A medida que el modelo crecía, nuestra implementación inicial en PuLP se volvió difícil de escalar y depurar, por lo que decidimos reconstruirlo en Pyomo, añadiendo cada restricción de forma progresiva y probando cada componente de manera individual.

Otro reto fue el rendimiento computacional y la estabilidad numérica en la formulación MILP, especialmente debido a las restricciones big-M. Lo abordamos utilizando valores big-M más ajustados y específicos por arco, además de cambiar al solver HiGHS, lo que mejoró significativamente el rendimiento.

Estos ajustes nos permitieron obtener una solución de alta calidad de manera eficiente dentro del límite de tiempo.

¿Cómo contribuyó el trabajo en equipo al éxito del proyecto?

Teníamos reuniones internas cada quince días, lo que fue clave para lograr un proyecto coherente y cohesionado.

En estas reuniones planteábamos dudas, nuevas ideas o posibles mejoras. A partir de ahí debatíamos, tomábamos decisiones y trabajábamos individualmente hasta la siguiente reunión para alcanzar los objetivos establecidos.

Este enfoque nos permitió mantener un ritmo de trabajo continuo y eficaz. Sabíamos en todo momento en qué punto se encontraban los demás y, si surgía algún bloqueo, nos apoyábamos también de forma online.

El trabajo en equipo fue un pilar fundamental; nos complementamos muy bien y nos motivamos mutuamente para dar lo mejor de nosotros.

¿Qué habilidades clave (técnicas y personales) habéis adquirido o reforzado?

Desde el punto de vista técnico, reforzamos nuestras habilidades en modelización matemática y optimización, especialmente en la formulación e implementación de modelos de Programación Lineal Entera Mixta. También mejoramos nuestras competencias en programación en Python y Pyomo, en la integración de solvers y en la comprensión de la estabilidad numérica y el rendimiento computacional.

Desde el punto de vista de habilidades personales, desarrollamos una mayor capacidad de trabajo en equipo y comunicación, especialmente al dividir tareas, depurar colaborativamente y explicar conceptos técnicos complejos con claridad. También mejoramos nuestra capacidad para analizar críticamente los compromisos entre coste, seguridad y fiabilidad, algo esencial en las matemáticas aplicadas.

¿Tenéis planes de seguir desarrollando o mejorando el proyecto en el futuro?

Sí, existen varias líneas de desarrollo posibles. Una extensión natural sería incorporar estacionalidad y fluctuaciones de demanda, transformando el modelo en dinámico en lugar de semanal y estático.

También podríamos incluir escenarios de demanda pico o incertidumbre, convirtiendo el modelo en un marco de optimización estocástica o robusta para reflejar mejor la variabilidad del mundo real.

Otra mejora sería explorar estructuras alternativas de costes o comparar distintas estrategias de resolución para analizar la escalabilidad en redes más grandes.

En conjunto, el modelo proporciona una base sólida que podría ampliarse para reflejar condiciones de cadena de suministro más realistas y complejas.

¿Este proyecto os ayudó a entender mejor cómo el grado se traduce en contextos reales o aplicados? ¿Cómo?

Sí, definitivamente. Este proyecto nos permitió ver cómo los conceptos teóricos que aprendemos en el grado en Matemáticas Aplicadas —como programación lineal, dualidad y teoría de la optimización— se traducen directamente en problemas reales de toma de decisiones.

En lugar de resolver ejercicios abstractos, aplicamos estas herramientas para diseñar una red logística realista con restricciones económicas, de seguridad y de fiabilidad. Nos mostró cómo la modelización matemática permite estructurar problemas operativos complejos y generar conclusiones accionables.

La experiencia dejó claro que las matemáticas aplicadas no consisten solo en resolver ecuaciones, sino en construir modelos que respalden decisiones estratégicas en sectores como la gestión de cadenas de suministro y operaciones.

Imágenes





Referencias

Huangfu, Q., & Hall, J. A. J. (2018). Parallelizing the dual revised simplex method. Mathematical Programming Computation, 10(1), 119–142. https://doi.org/10.1007/s12532-017-0130-5 

Nota: Utilizamos principalmente los apuntes de clase y el libro mencionado para la formulación del problema. Para la parte de programación, contamos sobre todo con la orientación de nuestro supervisor y el apoyo de modelos de lenguaje.