HOME

TheInfoList



OR:

JuMP is an
algebraic modeling language Algebraic modeling languages (AML) are high-level computer programming languages for describing and solving high complexity problems for large scale mathematical computation (i.e. large scale optimization type problems). One particular advantage of ...
and a collection of supporting packages for
mathematical optimization Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criteria, from some set of available alternatives. It is generally divided into two subfiel ...
embedded in the
Julia Julia may refer to: People *Julia (given name), including a list of people with the name *Julia (surname), including a list of people with the name *Julia gens, a patrician family of Ancient Rome *Julia (clairvoyant) (fl. 1689), lady's maid of Qu ...
programming language. JuMP is used by companies, government agencies, academic institutions, software projects, and individuals to formulate and submit
optimization Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criteria, from some set of available alternatives. It is generally divided into two subfiel ...
problems to thirdparty solvers. JuMP has been specifically applied to problems in the field of
operations research Operations research () (U.S. Air Force Specialty Code: Operations Analysis), often shortened to the initialism OR, is a branch of applied mathematics that deals with the development and application of analytical methods to improve management and ...
. Paperback edition.


Features

JuMP is a
Julia Julia may refer to: People *Julia (given name), including a list of people with the name *Julia (surname), including a list of people with the name *Julia gens, a patrician family of Ancient Rome *Julia (clairvoyant) (fl. 1689), lady's maid of Qu ...
package and
domain-specific language A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
that provides an
API An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
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 Metaprogramming is a computer programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyse, or transform other programs, and even modi ...
features. JuMP supports
linear programming Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements and objective are represented by linear function#As a polynomia ...
, mixed integer programming,
semidefinite programming Semidefinite programming (SDP) is a subfield of mathematical programming concerned with the optimization of a linear objective function (a user-specified function that the user wants to minimize or maximize) over the intersection of the cone of po ...
, conic optimization,
nonlinear programming In mathematics, nonlinear programming (NLP) is the process of solving an optimization problem where some of the constraints are not linear equalities or the objective function is not a linear function. An optimization problem is one of calculation ...
, and other classes of optimization problems. JuMP provides access to over 50
solver A solver is a piece of mathematical software, possibly in the form of a stand-alone computer program or as a Library (computing), software library, that 'solves' a mathematical problem. A solver takes problem descriptions in some sort of generic ...
s, including state-of-the-art commercial and open-source solvers.


History

JuMP was first developed by Miles Lubin, Iain Dunning, and Joey Huchette while they were students at the
Massachusetts Institute of Technology The Massachusetts Institute of Technology (MIT) is a Private university, private research university in Cambridge, Massachusetts, United States. Established in 1861, MIT has played a significant role in the development of many areas of moder ...
. 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 Benevolent dictator for life (BDFL) is a title given to a small number of open-source software development leaders, typically project founders who retain the final say in disputes or arguments within the community. The phrase originated in 1995 w ...
. JuMP is a sponsored project of NumFOCUS.


Recognition

JuMP and its authors have been acknowledged by the 2015
COIN-OR 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 (e.g., a research journal) provides the operati ...
Cup, the 2016
INFORMS The Institute for Operations Research and the Management Sciences (INFORMS) is an international society for practitioners in the fields of operations research Operations research () (U.S. Air Force Specialty Code: Operations Analysis), often s ...
Computing Society Prize, and the
Mathematical Optimization Society The Mathematical Optimization Society (MOS), known as the Mathematical Programming Society (MPS) until 2010,


See also

*
HiGHS optimization solver HiGHS is open-source software to solve linear programming (LP), mixed-integer programming (MIP), and convex quadratic programming (QP) models. Written in C++ and published under an MIT license, HiGHS provides programming interfaces to C, ...
* List of free and open-source optimization solvers *
Mathematical optimization Mathematical optimization (alternatively spelled ''optimisation'') or mathematical programming is the selection of a best element, with regard to some criteria, from some set of available alternatives. It is generally divided into two subfiel ...
*
PuLP Pulp may refer to: * Pulp (fruit), the inner flesh of fruit * Pulp (band), an English rock band Engineering * Pulp (paper), the fibrous material used to make paper * Dissolving pulp, highly purified cellulose used in fibre and film manufacture ...
a similar project for
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...
*
Pyomo Pyomo is a collection of Python software packages for formulating optimization models. Pyomo was developed by William Hart and Jean-Paul Watson at Sandia National Laboratories and David Woodruff at University of California, Davis. Significan ...
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...
packages for formulating optimization problems


References


External links


JuMP documentation

JuMP repository
{{FOSS Computational science Computer programming Mathematical modeling Mathematical optimization