There are many modeling languages and APIs around. One or more per solver, plus many that target multiple solvers: AMPL, GAMS, PuLP, JuMP, Pyomo...

Among all these possibilities, why did you pick a given modeling tool? Which criteria did you apply? In general, which features do you like to have?

Possible factors

Some of the reasons I can think of:

  • More user friendly language or API
  • Independence from the underlying solver
  • Commercial support, price
  • Better interface to your programming language and datasources
  • Availability of analysis and visualization tools
  • Reformulation features (linearization, branch-and-price, ...), or abstraction around a barebone solver (automated differentiation, ...)
  • ...

In my personal experience, for example, ease of integration with the existing environment has often been a determining factor to pick the underlying optimization software. But there are so many different situations in OR that a single point of view is quite anecdotal. So, what is your opinion?


I am writing a modeling API. Although the overall architecture is built to suit my needs - concrete modeling with simple reformulations, multi-solver and multi-language - I'd like to broaden my view about modelers in general for future developments.

  • 3
    $\begingroup$ Maybe this question and the answer therein can be helpful: or.stackexchange.com/q/1366/39 $\endgroup$ – Oguz Toragay Jun 16 '20 at 20:52
  • 1
    $\begingroup$ Thanks, it deserves clarification. I am not interested in a comparison between modeling languages. Rather, I'd like to know how other OR professionals make their choice, knowing the strengths and weaknesses of each of them. $\endgroup$ – Gabriel Gouvine Jun 16 '20 at 21:01
  • 1
    $\begingroup$ For a problem I worked on, I used GMPL (GLPK) as modeling language and CBC as solver (along with some Java and Python code to obtain data and parse results). The main reason was because both are free and they were sufficient for this problem. As I write LP files from GMPL, I could also use CPLEX or Gurobi as solver, but as I said, CBC was sufficient. $\endgroup$ – T_O Jun 16 '20 at 21:10
  • 2
    $\begingroup$ @GabrielGouvine, Adding to answer Oguz Toragay, would you see this, this, this and this links. They will be useful. Would you try developing a new algebraic modelling language? $\endgroup$ – A.Omidi Jun 17 '20 at 9:31
  • $\begingroup$ @A.Omidi Your last link is exactly the kind of answer I was looking for, with a thorough review of the criteria that led to them chosing a tool (Pyomo, in this case). And they point out one more reason: the license. $\endgroup$ – Gabriel Gouvine Jun 17 '20 at 16:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.