JuMP: A Modeling Language for Mathematical Optimization
By Iain Dunning, Joey Huchette, Miles Lubin. 2015
1,563 citations recorded by the source corpus.
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 implementation, and discuss how JuMP can be extended to new problem classes and composed with state-of-the-art tools for visualization and interactivity.
Subfields: Computer Networks and Communications, Hardware and Architecture, Numerical Analysis
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Computer Networks and Communications
- Xiaojin Zhu
- Xuezhou Zhang
- Brendan O'Donoghue
- Adam N. Elmachtoub
- Dragos Florin Ciocan
- Paul Grigas
- Velibor V. Misic
- Vincent Tjeng
In Hardware and Architecture
- Brendan O'Donoghue
- Xiaojin Zhu
- Xuezhou Zhang
- Adam N. Elmachtoub
- Dragos Florin Ciocan
- Paul Grigas
- Velibor V. Misic
- Russ Tedrake
In Numerical Analysis
- Brendan O'Donoghue
- Stephen P. Boyd
- Steven Diamond
- Velibor V. Misic
- Miles Lubin
- Russ Tedrake
- Xiaojin Zhu
- Xuezhou Zhang
Citations in the corpus
- Verifying Neural Networks with Mixed Integer Programming (2017, neutral): “We construct the MIP models corresponding to the optimization problems in Julia [2] using JuMP [6], with the solve carried out by the commercial solver Gurobi 7.0.2 [10] on a desktop with a Intel Core i7-6700 CPU (with 4 cores) clocked at 3.40GHz.”
- Evaluating Robustness of Neural Networks with Mixed Integer Programming (2017, methodology): “We construct the MILP models in Julia [3] using JuMP [11], with the model solved by the commercial solver Gurobi 7.5.2 [19].”
- Online Data Poisoning Attack (2019, methodology): “The victim’s initial parameter is set to θ For attack methods that requires solving a nonlinear program, including GREEDY, NLP and Clairvoy-ant, we use the JuMP modeling language [9] and the IPOPT interior-point solver [25].”
- A Rewriting System for Convex Optimization Problems (2017, background): “These DSLs do support some nonconvex regimes (e.g., combinatorial optimization), and there also exist DSLs for nonlinear optimization (see Boyd & Vandenberghe, 2004, § 1.4, for a definition), including GAMS (Brook, Kendrick, & Meeraus, 1988), AMPL (Fourer, Gay, & Kernighan, 1990), and JuMP (Dunning, ”
- A Tutorial On the design, experimentation and application of metaheuristic algorithms to real-World optimization problems (2021, background): “Assorted tools have been very recently proposed for this purpose, including directed questionnaires [135] and algebraic modeling languages to describe optimization problems (see [136] and references therein).”
- A review and comparison of solvers for convex MINLP (2018, methodology): “Pajarito is currently accessible through Julia using problem inputs in both JuMP and DCP [119].”
- JuMP 1.0: recent improvements to a modeling language for mathematical optimization (2022, methodology): “Our results are broadly consistent with those reported in Dunning et al. [6] and Jusevičius et al. [9] 1 .”
- Optimization-Based Collision Avoidance (2017, methodology): “A Julia-based example code can be found at https://github.com/XiaojingGeorgeZhang/OBCA .”
- Smart "Predict, then Optimize" (2017, methodology): “…metric is an estimate of the probability that the SPO+ model dominates the least squares model, and is formally computed as We use the JuMP package in Julia (Dunning et al. (2017)) with the Gurobi solver to implement the reformulation approach and the oracle w ∗ ( · ) for the SGD approach.”
- AutoTM: Automatic Tensor Movement in Heterogeneous Memory Systems using Integer Linear Programming (2020, methodology): “The memory optimizer itself was implemented in the Julia [5] programming language using the JuMP [12] package for ILP modeling.”
- Polyhedral approximation in mixed-integer convex optimization (2016, background): “Pajarito is an open-source stand-alone Julia solver, now publicly released 2 at https://github.com/JuliaOpt/Pajarito.jl, that heavily relies on the infrastructure of JuMP [16].”
- CasADi: a software framework for nonlinear optimization and optimal control (2018, methodology): “CasADi is an open-source software framework for numerical optimization, offering an alternative to conventional algebraic modeling languages such as AMPL [45], Pyomo [67] and JuMP [35].”
- Forward-Mode Automatic Differentiation in Julia (2016, methodology): “We reproduce an example from [5] illustrating a user-defined square root function within a JuMP optimization model: function squareroot (x) # Start Newton ’ s method at x z = x while abs ( z ∗ z − x) > 1e − 13 z = z − ( z ∗ z − x )/(2 z ) z end JuMP. r e g i s t e r ( : squareroot , 1 , squareroot ,…”
- Interpretable Optimal Stopping (2018, methodology): “mputing language, version 0.6.2 (Bezanson et al. 2017). All linear optimization problems for the pathwise optimization method were formulated using the JuMP package for Julia (Lubin and Dunning 2015, Dunning et al. 2017) and solved using Gurobi 8.0 (Gurobi Optimization, Inc. 2018). Ciocan and Misic:”
- GEKKO Optimization Suite (2018, methodology): “JuMP [20] is a modeling language for optimization in the Julia language.”