JuMP: A Modeling Language for Mathematical Optimization

  title={JuMP: A Modeling Language for Mathematical Optimization},
  author={Iain Dunning and Joey Huchette and Miles Lubin},
  journal={SIAM Rev.},
JuMP is an open-source modeling language that allows users to express a wide range of optimization problems (linear, mixed-integer, quadratic, conic-quadratic, semidefinite, and nonlinear) in a high-level, algebraic syntax. JuMP takes advantage of advanced features of the Julia programming language to offer unique functionality while achieving performance on par with commercial modeling tools for standard tasks. In this work we will provide benchmarks, present the novel aspects of the… 

Figures and Tables from this paper

JuMP 1.0
This short communication highlights the improvements to JuMP from recent releases up to and including 1.0.
G RAVITY : A Mathematical Modeling Language for Optimization and Machine Learning
GRAVITY enables researchers and practitioners to access state-of-the-art optimization solvers with a user-friendly interface for writing general mixed-integer nonlinear models.
Experimental Analysis of Algebraic Modelling Languages for Mathematical Optimization
An extensive theoretical and experimental analysis of the characteristics of five of the most prominent algebraic modelling languages and modelling systems supporting them and features that are essential in the current mathematical optimization landscape are provided.
OOES . jl : A julia package for optimizing a linear function over the set of efficient solutions for bi-objective mixed integer linear programming
OOES.jl is presented, a package for optimizing a linear function over the efficient set of bi-objective mixed integer linear programs and is compatible with JuMP modeling language.
A General Modeling Framework for Robust Optimization
This paper introduces pyropt, a Python programming language package for robust optimization. The package provides a convenient way for expressing robust optimization problems using simple and concise
Efficient Stochastic Programming in Julia
The StochasticPrograms.jl framework can reduce the barrier to entry for incoming practitioners of stochastic programming by providing both an intuitive interface for new users and an extensive development environment for expert users by providing strong scaling properties of the distributed algorithms on numerical benchmarks in a multinode setup.
An integrated platform for intuitive mathematical programming modeling using LaTeX
This paper presents a novel prototype platform that uses the same LaTeX mark-up language, commonly used to typeset mathematical content, as an input language for modeling optimization problems of
GBOML: Graph-Based Optimization Modeling Language
The Graph-Based Optimization Modeling Language (GBOML) is a modeling language for mathematical programming enabling the easy implementation of a broad class of structured mixed-integer linear
MathOptInterface: a data structure for mathematical optimization problems
This work introduces MathOptInterface, an abstract data structure for representing mathematical optimization problems based on combining pre-defined functions and sets that leads naturally to a general file format for mathematical optimization the authors call MathOptFormat.
A Rewriting System for Convex Optimization Problems
A modular rewriting system for translating optimization problems written in a domain-specific language to forms compatible with low-level solver interfaces, which makes it easy to match problems to solvers well-suited for them and to support solvers with a wide variety of standard forms.


A Structure-Exploiting Tool in Algebraic Modeling Languages
A new concept is proposed for linking algebraic modeling languages with structure-exploiting solvers to enable algebraic modeled languages to access the large body of algorithmic techniques which require problem structure.
AMPL: A Modeling Language for Mathematical Programming
An efficient translator is implemented that takes as input a linear AMPL model and associated data, and produces output suitable for standard linear programming optimizers.
Computing in Operations Research Using Julia
This paper explores how Julia, a modern programming language for numerical computing that claims to bridge this divide by incorporating recent advances in language and compiler design, can be used for implementing software and algorithms fundamental to the field of operations research, with a focus on mathematical optimization.
A Structure Conveying Parallelizable Modeling Language for Mathematical Programming
This work presents a modeling language that enables the modular formulation of optimization problems and does not scramble the block-structure of the problem but passes this on to the solver if wished, enabling the parallelization of the issue generation process.
Julia: A Fast Dynamic Language for Technical Computing
Julia is presented, a new dynamic language for technical computing, designed for performance from the beginning by adapting and extending modern programming language techniques, which enables an expressive programming model and successful type inference, leading to good performance for a wide range of programs.
Pyomo: modeling and solving mathematical programs in Python
Pyomo provides a capability that is commonly associated with algebraic modeling languages such as AMPL, AIMMS, and GAMS, but Pyomo’s modeling objects are embedded within a full-featured high-level programming language with a rich set of supporting libraries.
Dynamic optimization with CasADi
We demonstrate how CasADi, a recently developed, free, open-source, general purpose software tool for nonlinear optimization, can be used for dynamic optimization in a flexible, interactive and
Integer-Programming Software Systems
The major algorithmic components of state-of-the-art solvers are reviewed and the options available to users for adjusting the behavior of these solvers when default settings do not achieve the desired performance level are discussed.
PySP: modeling and solving stochastic programs in Python
By leveraging the combination of a high-level programming language (Python) and the embedding of the base deterministic model in that language (Pyomo), the package is able to provide completely generic and highly configurable solver implementations.
Convex Optimization in Julia
Convex translates problems from a user-friendly functional language into an abstract syntax tree describing the problem, which allows Convex to infer whether the problem complies with the rules of disciplined convex programming (DCP), and to pass the problem to a suitable solver.