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$ Commented Jun 16, 2020 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$
    – Ggouvine
    Commented Jun 16, 2020 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
    Commented Jun 16, 2020 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
    Commented Jun 17, 2020 at 9:31
  • 1
    $\begingroup$ We generally don't allow survey or resource recommendation questions; because they have many answers, no one that is necessarily best, and often opinion based. (In review queue). $\endgroup$
    – Rob
    Commented May 10, 2022 at 7:48


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.