Academia and software neutrality

When I started my PhD, the only MIP solver that was used at the lab was Cplex. At that time, it was considered the best by the people I worked with. I say “considered”, because I took this assumption as a fact without actually testing it. I could have been working with the wrong solver without realizing it.

Now, a few years later, the MIP landscape has changed pretty much, with Gurobi and Cplex competing and Xpress also performing well on the benchmarks. There are also more options to easily use open-source codes (such as SolverStudio), especially for using these in the classroom.

As a researcher, I have developed a habit of testing with different solvers each time I approach a new project. Being the fastest on geometric mean performance on the MIPLIB2010 benchmarks does not guarantee that a solver will be faster for a given problem. It also keeps me up to date with the APIs of each solvers and how easy (or not) they are to work with. As a teacher, I also want to introduce students to a wide range of tools so they develop their ability to select the proper software or technique to the requirements of their job, as well as to quickly adapt to new tools when they are available. Currently I teach OR with these tools:

AMPL

CBC through either OpenSolver or SolverStudio

CPLEX with command line & concert

Gurobi with command line & .NET API

(I’d also like to teach Gurobi with Python, but I’m too much of a beginner in Python to be really a good mentor for undergrads.) To be able to teach when and how to use each solver, I must be proficient with them too, which takes time. That probably makes me a little less efficient, especially in terms of how many papers I can produce per year. Up to a certain point, I can live with that, though obviously I can’t test everything and every software I come upon.

On a more personal level, I find it important to base my assessment of the tools on facts or computational experiments rather than opinions. Trying different tools and providing feedback to developers is a good way to keep the competitive environment that we have now.