Engee documentation

Introduction

What is JuMP

JuMP is a domain-specific modeling language for https://en.wikipedia.org/wiki/Mathematical_optimization [mathematical optimization], built into https://julialang.org /[Julia]. It currently supports a number of open-source and commercial solvers for various classes of problems, including linear, partial integer, second-order conic, semidefinite, and nonlinear programming.

If you are not sure if you need a JuMP language, see Should you use JuMP?.

Resources for getting started

There are four ways to get started with JuMP.

  • Read the Installation Guide.

  • Read the introductory manuals Getting started with Julia and Getting started with JuMP.

  • Check out the modeling manuals, including how to solve such classic problems as The diet problem, or the Maximum likelihood estimation problem using nonlinear programming usage.

Need some help? On https://jump.dev/forum [community forum] you can find answers to frequently asked questions.

Before asking a question, read the entry https://discourse.julialang.org/t/psa-make-it-easier-to-help-you/14757 [How to make it easier to get help] with tips on the correct formulation of the question.

Documentation structure

A general understanding of the structure of this documentation will help you understand where to look for the information you need.

  • The manuals contain practical examples of solving problems using JuMP. Start with them if you are new to JuMP or you need to simulate a task of a certain class.

  • The manual contains small code snippets illustrating the execution of specific tasks in JuMP. Refer to it if you want to know how to perform a specific task, for example, delete a variable](manual/variables.md#delete_a_variable) or change the coefficient of the objective function ([Modify an objective coefficient).

  • The API Help contains a complete list of functions that can be used in JuMP. Refer to it if you want to learn how to use a specific function.

  • The Additional information section contains general materials about JuMP. Read it if you want to know what the JuMP language is and why it was created, not how to use it.

  • The Developer Documentation section provides information for those who participate in the development of JuMP or the creation of JuMP extensions. If you just use JuMP to formulate and solve problems, you don’t need this section.

  • The MathOptInterface section is an offline copy of the MathOptInterface documentation. Here you can find a description of functions and constants starting with MOI., as well as general information about how MathOptInterface works.

Quoting JuMP

If the JuMP language turned out to be useful in your work, then you can refer to the following article (https://arxiv.org/abs/2206.03866 [preprint]):

@article{Lubin2023,
    author = {Miles Lubin and Oscar Dowson and Joaquim {Dias Garcia} and Joey Huchette and Beno{\^i}t Legat and Juan Pablo Vielma},
    title = {{JuMP} 1.0: {R}ecent improvements to a modeling language for mathematical optimization},
    journal = {Mathematical Programming Computation},
    year = {2023},
    doi = {10.1007/s12532-023-00239-3}
}

NumFOCUS

NumFOCUS logo

JuMP is a project sponsored by NumFOCUS, a 501(c)(3) non-profit charitable organization based in the United States. NumFOCUS provides JuMP with financial, legal and administrative support to ensure the viability and sustainability of the project. For more information, see the website https://numfocus.org [numfocus.org ].

License

JuMP is distributed by https://mozilla.org/MPL/2.0 /[MPL-2.0 software licenses]. For more information, see https://github.com/jump-dev/JuMP.jl/blob/master/LICENSE.md [license text] and https://www.mozilla.org/en-US/MPL/2.0/FAQ /[Mozilla Frequently Asked Questions]. In addition, JuMP is often used together with solver packages and extensions that have their own licenses. For information about current licenses, see the package repositories.