Multicommodity Network Design

This project develops a multicommodity network design optimization model that determines the most cost-efficient weekly shipment plan by minimizing fixed, variable, and compatibility penalty costs, while satisfying demand, respecting arc capacities, enforcing food safety constraints (incompatible goods cannot share routes), and ensuring supply reliability by sourcing each destination–commodity pair from at least two origins

What was your project about ? 

Our project focused on a Multicommodity Network Design problem, where the goal was to determine an optimal weekly shipment plan that satisfies demand at minimum total cost. 

We modeled the transportation of multiple food commodities from sources to destinations through a network of arcs with capacity constraints. The model incorporates fixed and variable shipping costs, capacity limits, food safety constraints (which prevent incompatible goods from traveling together), reliability requirements (ensuring that each destination receives each commodity from at least two origins), and compatibility penalties when multiple commodities share the same arc. 

The objective was to design a cost-efficient, reliable, and safe distribution network using mathematical optimization techniques. 

What impact or real-world problem were you aiming to address?

Our project aimed to address the real-world challenge of making supply chains both cost-efficient and reliable, particularly in food distribution. 

In practice, logistics companies must balance low transportation costs with safety regulations, limited capacity, and the risk of supply disruptions. We focused on how to design a distribution system that reduces costs while ensuring food compatibility and guaranteeing that each destination is supplied from multiple sources for greater resilience. 

This type of optimization is highly relevant for supermarkets and distribution networks, where small improvements in routing decisions can lead to significant cost savings and improved operational stability. 

What technical approaches and tools did you use, and why did you choose them?

We formulated the problem as a Mixed-Integer Linear Program (MILP), since it combines continuous flow decisions with binary variables for arc activation and compatibility penalties. 

We first implemented the model in PuLP, but as it became more complex, we transitioned to Pyomo for greater flexibility and scalability. We built the model incrementally, starting with flow balance and capacity constraints, then adding big-M linking constraints, compatibility rules, and diversification requirements. 

For solving, we used the HiGHS solver, which provided strong performance and allowed us to obtain a high-quality solution within a 60-second time limit and 1% MIP gap. 

Please tell us about your project's:

Methodology: 

We formulated the problem as a Mixed-Integer Linear Programming model. 

The objective was to minimize total transportation cost, including fixed arc activation costs, variable shipping costs, and compatibility penalties. 

The model included demand satisfaction, arc capacity limits, big-M linking constraints between flow and binary variables, diversification requirements (at least two origins per commodity and destination), and group-based incompatibility constraints. 

We implemented the model in Pyomo and solved it using the HiGHS solver.  

Results

The solver obtained a high-quality solution with an objective value of 8,642.7 within a 60-second time limit and a 1% MIP gap. 

The cost structure showed that fixed costs represented the largest portion (about 67%), followed by variable shipping costs and mixing penalties. 

The results highlighted how penalties and diversification requirements influence routing decisions and total cost. 

Conclusions: 

The project demonstrated the trade-off between minimizing cost and ensuring safety and reliability. 

Higher compatibility penalties reduce commodity mixing but increase fixed costs, while diversification improves robustness at the expense of higher total cost. 

Overall, the model provides a structured way to balance economic efficiency with operational reliability. 

Was there a challenge during the process, and how did you manage to overcome it?

One of the main challenges was managing the increasing complexity of the model as we added fixed-charge costs, compatibility penalties, diversification, and group-incompatibility constraints. 

As the model grew, our initial implementation in PuLP became difficult to scale and debug, so we decided to rebuild it in Pyomo, adding each constraint step by step and testing components individually. 

Another challenge was computational performance and numerical stability in the MILP formulation, particularly due to big-M constraints. We addressed this by using tighter, arc-specific big-M values and switching to the HiGHS solver, which significantly improved performance. 

These adjustments allowed us to obtain a high-quality solution efficiently within the time limit. 

How did teamwork contribute to the success or progress of your project?

We had internal meetings in the group every fortnight, which was the key factor to having such a coherent and cohesive project in the end.  

We would bring up any concerns, new ideas, or improvements in said meeting. From there, we’d discuss the matter, reach a decision, and then work individually to reach the set goals for the next meeting. This way, our pace of work was pretty continuous and effective. We knew on what page the others were at all times, and if stuck, we’d reach out online.   

Teamwork was definitely a pillar in this project; we complemented each other really well and motivated each other to give our all. 

Which key skills (soft and hard) have you acquired or strengthened during this experience?

From a technical perspective, we strengthened our skills in mathematical modeling and optimization, particularly in formulating and implementing Mixed-Integer Linear Programming models. We also improved our programming skills in Python, Pyomo, and solver integration, as well as our understanding of numerical stability and computational performance. 

From a soft-skills perspective, we developed stronger teamwork and communication skills, especially when dividing tasks, debugging collaboratively, and explaining complex technical concepts clearly. We also improved our ability to think critically about trade-offs between cost, safety, and reliability, which is essential in applied mathematics. 

Do you have plans for further development or improvement of your project in the future?

Yes, there are several directions in which the project could be further developed. One natural extension would be to incorporate seasonality and demand fluctuations, making the model dynamic instead of weekly and static. 

We could also include peak-demand scenarios or uncertainty, turning the model into a stochastic or robust optimization framework to better capture real-world variability. 

Another improvement would be exploring alternative cost structures or comparing different solver strategies to analyze scalability for larger networks. 

Overall, the model provides a solid foundation that could be expanded to reflect more realistic and complex supply chain conditions. 

Did participating in this project help you better understand how your bachelor translates into real-world or applied contexts? How?

Yes, definitely. This project helped us see how the theoretical concepts we learn in our Applied Mathematics degree — such as linear programming, duality, and optimization theory — translate directly into real-world decision-making problems. 

Instead of solving abstract exercises, we applied these tools to design a realistic logistics network with economic, safety, and reliability constraints. It showed us how mathematical modeling can structure complex operational problems and provide actionable insights. 

The experience made it clear that applied mathematics is not only about solving equations, but about building models that support strategic decisions in industries like supply chain management and operations. 

Pictures





References

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 

*Quick remark: We mainly used the class notes and the aforementioned book for the problem formulation. For the coding part, we relied mainly on our supervisor and LLMs for guidance.