JuMP: A Modeling Language for Mathematical Optimization

@article{Dunning2017JuMPAM,
  title={JuMP: A Modeling Language for Mathematical Optimization},
  author={Iain Dunning and Joey Huchette and Miles Lubin},
  journal={SIAM Rev.},
  year={2017},
  volume={59},
  pages={295-320}
}
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.

Web-Based Tool for Algebraic Modeling and Mathematical Optimization

A new open-source tool for algebraic modeling and mathematical optimization that does not require specific algebraic language knowledge, allows solving problems using different solvers, and utilizes the best characteristics of existing algebraic modeled languages is presented.

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

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.
...

References

SHOWING 1-10 OF 129 REFERENCES

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.

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.

Recomputations in reverse mode AD

The Efficient Recomputation Algorithm implemented in the Tangent linear and Adjoint Model Compiler and in Transformation of Algorithms in Fortran, which are source-to-source translation AD tools for Fortran programs are described and possible improvements are discussed.
...