# 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…

## 1,027 Citations

### JuMP 1.0

- Computer ScienceArXiv
- 2022

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

- Computer ScienceMathematics
- 2021

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

- Computer Science
- 2018

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

- Computer ScienceInformatica
- 2021

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

- Computer Science
- 2018

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

- Computer ScienceACIIDS
- 2021

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

- Computer ScienceINFORMS Journal on Computing
- 2022

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

- Computer SciencePeerJ Comput. Sci.
- 2018

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

- Computer ScienceINFORMS J. Comput.
- 2022

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

- Computer ScienceArXiv
- 2017

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

- Computer Science
- 2000

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

- Computer Science
- 1993

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

- Computer ScienceINFORMS J. Comput.
- 2015

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

- Computer Science
- 2009

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

- Computer ScienceArXiv
- 2012

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

- Computer ScienceMath. Program. Comput.
- 2011

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

- Computer Science2012 IEEE 51st IEEE Conference on Decision and Control (CDC)
- 2012

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

- Computer ScienceAnn. Oper. Res.
- 2005

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

- Computer Science2014 First Workshop for High Performance Technical Computing in Dynamic Languages
- 2014

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

- Computer Science
- 2000

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.