Applying Gurobi in the Real World

Mohsen Moarefdoost Ph.D. Operations Research Scientist
Read Time: 3 minutes apprx.

As an operations research (OR) professional, I have been applying OR tools and designing optimization algorithms to solve large-scale business problems for more than a decade. Recently, I was the lead OR scientist for a client in the fashion industry requiring complex algorithmic OR modeling to automate and optimize their planning process. ‘Algorithmic OR modeling’ is a modeling approach for when a simple formulation of the problem as a single linear program/mixed integer program does not suffice. This is an approach for solving real-world problems in which a large-scale problem needs to be broken down into smaller, more manageable problems that are, in turn, solved sequentially. The solution of one problem becomes the input to another problem, and so on. This approach enables a much more efficient means for solving the larger problem. This algorithmic approach not only requires advanced modeling expertise, but a robust solver to build on as well.

As we defined the problem for our client, it soon became apparent that their planning solution would require many interconnected inputs, requirements and constraints. In addition, their users wanted full flexibility in defining and adapting these constraints over time. Based on these requirements, the solution needed to solve models where the solution of one would go into another, based on some algorithmic conditions (similar to the Algorithmic OR modeling defined above). Knowing this, the team had to determine which commercial solver would provide the needed power and stability to handle a problem of this size, scope and complexity.

I had previous experience using the Gurobi solver in academia, but this would be my first industry project utilizing the Gurobi Python Interface (Python being the associated modeling language). In this case, our solution required a big model within which efficient management of performance and memory was a must.

Here are my observations at the conclusion of the project:

    • Gurobi classes, functions and data structures (such as column, tuplelist and quicksum), not only helped in implementation, but also improved the overall model performance.

 

    • The Gurobi Python API provided a lot of good attributes, which come in very handy as we compiled the many custom reports required of the solution, in order to match the needs of the client’s planners. These types of reports are crucial deliverables, highly scrutinized as a part of any OR consulting project.

 

    • The Gurobi Python API thrives in dealing with complex and interconnected elements in OR models, is intuitive and easy to understand, as well as well-documented.

 

Finally, Gurobi offers one of the most responsive support teams I have ever dealt with. During the course of our project, they not only helped us resolve any issues that came up, but provided guidelines on options for utilizing the solver to its fullest extent.

After implementing my first ‘real world’ solution utilizing Gurobi, I can be confident it passes the test for providing the robust solutions we pride ourselves on delivering to clients month in and month out.