A relevant #orms resolution for 2017: Update your solvers!

Making resolutions during the New Year has become something of a tradition. Some are followed, many are not. Here is one resolution I took years ago that has been pretty relevant. I would encourage you to use it as well :

Update your solvers whenever a new version is released.

Like, every time. It’s worth it. Two reasons:

Performance Improvements

Every major release of mathematical programming solver comes with pretty significant performance improvements. For instance, Gurobi reports 22% average improvements on mixed-integer programming (MIP) and 10% on pure linear programming models between versions 6.5 and 7. CPLEX is usually in the same ballpark of version-to-version improvements. Mosek reports 40% mean improvements for conic quadratic problems between versions 7 and 8. These are pretty significant, especially when compounded over multiple versions. I give a personal example here.

New features

Over the last few years, solver developers have added some pretty significant new functionality. Just for 2016, CPLEX included automatic Benders Decomposition into its 12.7 release, and Gurobi added native support for multiobjective optimization, among others. Before you implement your own customised algorithm, be sure to check what’s new, you could discover that it is now included in a standard release!

Why take some time to write about it?

You’d be surprised how often I see students running models on older workstations or servers using outdated solvers, like CPLEX 12.4 or Gurobi 6.0.5. I sometimes referee papers comparing the authors’ custom algorithms against even older versions.

Here are links on where to find new information about new versions and performance improvements (in alphabetical order). Those usually get presented in scientific conferences as well, the INFORMS Annual Conference in November being the biggest rendez-vous if you want to hear about what’s new.

  • CPLEX : you can generally hear about what’s new and relevant on this blog.
  • FICO Xpress : it’s a bit hard to find but they sometimes release a webinar about their new features here.
  • Gurobi has a very convenient page about what’s in the latest release.
  • Mosek : you can find links to copy of slides presented in conferences. They usually talk about their performance improvements there.

The recommendation game [dual]

People who teach or supervise students have a tremendous influence on what solvers get adopted by the community. Once they finish their studies, many students will continue to use the tools they have learned in school; it is simply more efficient. In this post, I explain the reasons behind the choice of tools I use in class. The associated primal post is about the change in availability of tools over the last few years.

  • In my decision support systems design class (undergrad, industrial engineering), I recommend that the students use Excel, VBA and CBC (CoinOR’s mixed-integer programming solver).
  • Supply chain design class (masters level, industrial engineering & analytics), I recommend the students use CPLEX with a modeling language of their choice.

What is likely to be useful to students?

Most of our undergraduate students at my university come from nearby cities and will probably work in small or medium sized businesses. CPLEX with AMPL is a good mix of tools, but the sad truth is that many small manufacturing businesses will be very reluctant to spend that much on software licences for a new employee. The DSS class is focused on a “do it yourself” approach, so we use tools that are either free (CBC) or are present in almost every business (Excel). Besides, industrial engineering students learn AMPL & CPLEX in another set of two classes, so they still get in contact with these tools.

On the other hand, most masters in analytics are liklely to have more dedicated analyst/planning jobs in larger companies, where integration with other tools is important and where larger budgets are available for buying analytics software. Besides, many of them will end up working on more difficult models or in research, where it is important to use the fastest tools available.

Using the right tools

Besides the talk about context and usefulness, I think it’s important to teach using the right tools. If your class is about hard optimization problems, then use a state-of-the-art solver, not GLPK. If you require to get data from a database or text file and send that to a solver for direct resolution, most people don’t need to use the C API, unless they are very proficient in C, a rather uncommon skill in undergrads. Use either a modeling language, or the solver’s appropriate API.

One or more?

When teaching optimization, many professors will require the use of one solver or programming language. This is makes grading and supporting easier and is especially relevant if you have a teaching assistant (TA). In more advanced or project-based classes, you might want to give more freedom to students to select the most appropriate tool for their project. Since there is a lot of homework and exercices to turn in my supply chain class, I require the use of specific tools.

Teach with tools you know

The tools I recommend using are software I have worked with in the past and that I know well enough to be able to support the students if they have a problem. Otherwise, the students who work with languages or software I know would be advantaged over those who work with technologies I don’t know. I also make it very clear to students in project-based classes that if they use other technologies, I might not be able to support them.

The recommendation game [primal]

People who teach or supervise students have a tremendous influence on what solvers get adopted by the operations research / industrial engineering community. Once they finish their studies, many students will continue to use the tools they have … [Continue reading]

Facility location : not so difficult (with the proper tools)

In a previous post, I generated a few capacitated facility location instances (CFLP) and I ran these through MIP solvers. The instances were solved pretty quickly overall. In a comment, professor Matteo Fischetti suggested I compare my results with … [Continue reading]

Facility location : mistake, issue and results

About two weeks ago, I generated a few capacitated facility location instances (CFLP) for some students to play with. When I ran these through the CPLEX and Gurobi solvers, all of them were solving very quickly. Gurobi in fact seemed to find the … [Continue reading]

Facility location : presolved to optimality!

  ** IMPORTANT NOTICE ** This post has temporarily been suspended as some readers noticed potential problem with the model files. I will issue a corrected post shortly. I am sorry for any inconvenience. Marc-André … [Continue reading]

It’s time talk more about barrier in class

In today's post, I argue that optimization classes and textbooks should put a greater emphasis on interior point methods. During my many years of study, I have been exposed to quite a bit of simplex theory. I also had to perform many primal and … [Continue reading]

Just a LP, really?

In recent talks in scientific conferences, I saw some people dissmiss pure linear programming (LP) models as being easy and primitive. I often got said "oh, that's just a LP". Linear programming is put in the box of solved problems, like some network … [Continue reading]

OR in the field: two challenges

This post presents some thoughts about doing applied operations research together with companies. It's a lot of work, to be sure, but it's also a lot of fun. Some of my colleagues tease me about not being often at my office. While it's true that I … [Continue reading]

When optimal is not enough

Currently I work with Professor Mikael Rönnqvist from Université Laval on an inventory and transportation management problem from a forest products company.  As a large scale commodity products company, much of its focus is on reducing logistics … [Continue reading]