JuMP

Last updated
JuMP
Jump-logo-with-text-and-metadata.svg
Developers
  • Miles Lubin
  • Benoît Legat
  • Joaquim Dias Garcia
  • Joey Huchette
  • Oscar Dowson
First appeared2013;10 years ago (2013)
Stable release
1.7.0 / January 25, 2023;5 months ago (2023-01-25)
Implementation language Julia
OS Cross-platform: Linux, Mac OS X and Windows
License Mozilla MPL2.0 (JuMP), MIT (supporting packages)
Website jump.dev
Influenced by
AMPL, PuLP

JuMP is an algebraic modeling language and a collection of supporting packages for mathematical optimization embedded in the Julia programming language. [1] JuMP is used by companies, government agencies, academic institutions, software projects, and individuals to formulate and submit optimization problems to thirdparty solvers. JuMP has been specifically applied to problems in the field of operations research. [2]

Contents

Features

JuMP is a Julia package and domain-specific language that provides an API and syntax for declaring and solving optimization problems. Specialized syntax for declaring decision variables, adding constraints, and setting objective functions is facilitated by Julia's syntactic macros and metaprogramming features. JuMP supports linear programming, mixed integer programming, semidefinite programming, conic optimization, nonlinear programming, and other classes of optimization problems. JuMP provides access to over 30 solvers, including state-of-the-art commercial and open-source solvers. [3]

History

JuMP was first developed by Miles Lubin, Iain Dunning, and Joey Huchette while they were students at the Massachusetts Institute of Technology. Today, JuMP's core developers are Miles Lubin, Benoît Legat, Joaquim Dias Garcia, Joey Huchette, and Oscar Dowson. Miles Lubin additionally holds the title of BDFL. [4] JuMP is a sponsored project of NumFOCUS. [5]

Recognition

JuMP and its authors have been acknowledged by the 2015 COIN-OR Cup, the 2016 INFORMS Computing Society Prize, and the Mathematical Optimization Society's 2021 BealeOrchardHays Prize. [6] [7] [8]

See also

Related Research Articles

<span class="mw-page-title-main">NumPy</span> Python library for numerical programming

NumPy is a library for the Python programming language, adding support for large, multi-dimensional arrays and matrices, along with a large collection of high-level mathematical functions to operate on these arrays. The predecessor of NumPy, Numeric, was originally created by Jim Hugunin with contributions from several other developers. In 2005, Travis Oliphant created NumPy by incorporating features of the competing Numarray into Numeric, with extensive modifications. NumPy is open-source software and has many contributors. NumPy is a NumFOCUS fiscally sponsored project.

<span class="mw-page-title-main">AMPL</span>

AMPL is an algebraic modeling language to describe and solve high-complexity problems for large-scale mathematical computing . It was developed by Robert Fourer, David Gay, and Brian Kernighan at Bell Laboratories. AMPL supports dozens of solvers, both open source and commercial software, including CBC, CPLEX, FortMP, MINOS, IPOPT, SNOPT, KNITRO, and LGO. Problems are passed to solvers as nl files. AMPL is used by more than 100 corporate clients, and by government agencies and academic institutions.

The general algebraic modeling system (GAMS) is a high-level modeling system for mathematical optimization. GAMS is designed for modeling and solving linear, nonlinear, and mixed-integer optimization problems. The system is tailored for complex, large-scale modeling applications and allows the user to build large maintainable models that can be adapted to new situations. The system is available for use on various computer platforms. Models are portable from one platform to another.

<span class="mw-page-title-main">COIN-OR</span>

Computational Infrastructure for Operations Research (COIN-OR), is a project that aims to "create for mathematical software what the open literature is for mathematical theory." The open literature provides the operations research (OR) community with a peer-review process and an archive. Papers in operations research journals on mathematical theory often contain supporting numerical results from computational studies. The software implementations, models, and data used to produce the numerical results are typically not published. The status quo impeded researchers needing to reproduce computational results, make fair comparisons, and extend the state of the art.

Algebraic modeling languages (AML) are high-level computer programming languages for describing and solving high complexity problems for large scale mathematical computation. One particular advantage of some algebraic modeling languages like AIMMS, AMPL, GAMS, Gekko, MathProg, Mosel, and OPL is the similarity of their syntax to the mathematical notation of optimization problems. This allows for a very concise and readable definition of problems in the domain of optimization, which is supported by certain language elements like sets, indices, algebraic expressions, powerful sparse index and data handling variables, constraints with arbitrary names. The algebraic formulation of a model does not contain any hints how to process it.

Advanced process monitor (APMonitor) is a modeling language for differential algebraic (DAE) equations. It is a free web-service or local server for solving representations of physical systems in the form of implicit DAE models. APMonitor is suited for large-scale problems and solves linear programming, integer programming, nonlinear programming, nonlinear mixed integer programming, dynamic simulation, moving horizon estimation, and nonlinear model predictive control. APMonitor does not solve the problems directly, but calls nonlinear programming solvers such as APOPT, BPOPT, IPOPT, MINOS, and SNOPT. The APMonitor API provides exact first and second derivatives of continuous functions to the solvers through automatic differentiation and in sparse matrix form.

In computer programming, a scientific programming language can refer to two degrees of the same concept.

<span class="mw-page-title-main">Cython</span> Programming language

Cython is a programming language, a superset of the Python programming language, designed to give C-like performance with code that is written mostly in Python with optional additional C-inspired syntax.

BARON is a computational system for solving non-convex optimization problems to global optimality. Purely continuous, purely integer, and mixed-integer nonlinear problems can be solved by the solver. Linear programming (LP), nonlinear programming (NLP), mixed integer programming (MIP), and mixed integer nonlinear programming (MINLP) are supported. In a comparison of different solvers, BARON solved the most benchmark problems and required the least amount of time per problem.

<span class="mw-page-title-main">Julia (programming language)</span> Dynamic programming language

Julia is a high-level, general-purpose dynamic programming language. Its features are well suited for numerical analysis and computational science.

MINOS is a Fortran software package for solving linear and nonlinear mathematical optimization problems. MINOS may be used for linear programming, quadratic programming, and more general objective functions and constraints, and for finding a feasible point for a set of linear or nonlinear equalities and inequalities.

<span class="mw-page-title-main">Pyomo</span>

Pyomo is a collection of Python software packages for formulating optimization models.

Artelys Knitro is a commercial software package for solving large scale nonlinear mathematical optimization problems.

<span class="mw-page-title-main">NEOS Server</span>

The NEOS Server is an Internet-based client-server application that provides free access to a library of optimization solvers. Its library of solvers includes more than 60 commercial, free and open source solvers, which can be applied to mathematical optimization problems of more than 12 different types, including linear programming, integer programming and nonlinear optimization.

SolverStudio is a free Excel plug-in developed at the University of Auckland that supports optimization and simulation modelling in a spreadsheet using an algebraic modeling language. It is popular in education, the public sector and industry for optimization users because it uses industry-standard modelling languages and is faster than traditional Excel optimisation approaches.

<span class="mw-page-title-main">OR-Tools</span> Open source software suite by Google

Google OR-Tools is a free and open-source software suite developed by Google for solving linear programming (LP), mixed integer programming (MIP), constraint programming (CP), vehicle routing (VRP), and related optimization problems.

<span class="mw-page-title-main">HiGHS optimization solver</span> Numerical software

HiGHS is open-source software to solve linear programming (LP), mixed-integer programming (MIP), and convex quadratic programming (QP) models.

References

  1. Dunning, Iain; Huchette, Joey; Lubin, Miles (2017). "JuMP: a modeling language for mathematical optimization" (PDF). SIAM Review. 59 (2): 295–320. doi:10.1137/15M1020575. ISSN   0036-1445 . Retrieved 2022-07-25.
  2. Kwon, Changhyun (March 2019). Julia programming for operations research (2nd ed.). (Independently published). ISBN   978-1798205471. Paperback edition.
  3. "Supported solvers". JuMP community. Retrieved 2022-07-30.
  4. "Governance Structure". JuMP community. Retrieved 2022-07-30.
  5. "JuMP". NumFOCUS. Retrieved 2022-07-30.
  6. "2021 Beale — Orchard-Hays Prize Citation". Mathematical Optimization Society. Retrieved 2022-07-30.
  7. "COIN-OR Cup 2015 Winners". COIN-OR. Retrieved 2022-07-30.
  8. "ICS Prize 2012-2016". INFORMS Computing Society. Retrieved 2022-07-30.