Skip to content
forked from jump-dev/JuMP.jl

Modeling language for Mathematical Programming (linear, mixed-integer, conic, nonlinear)

License

Notifications You must be signed in to change notification settings

adowling2/JuMP.jl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JuMP

Julia for Mathematical Programming

JuMP is a domain-specific modeling language for mathematical programming embedded in Julia. It currently supports a number of open-source and commercial solvers (Bonmin, Cbc, Clp, Couenne, CPLEX, ECOS, GLPK, Gurobi, Ipopt, KNITRO, MOSEK, NLopt, SCS) for a variety of problem classes, including linear programming, (mixed) integer programming, second-order conic programming, semidefinite programming, and nonlinear programming.

JuMP makes it easy to specify and solve optimization problems without expert knowledge, yet at the same time allows experts to implement advanced algorithmic techniques such as exploiting efficient hot-starts in linear programming or using callbacks to interact with branch-and-bound solvers. JuMP is also fast - benchmarking has shown that it can create problems at similar speeds to special-purpose commercial tools such as AMPL while maintaining the expressiveness of a generic high-level programming language. JuMP can be easily embedded in complex work flows including simulations and web servers.

Our documentation includes an installation guide, quick-start guide, and reference manual. The juliaopt-notebooks repository contains a small but growing collection of contributed examples. Submissions are welcome!

Latest Release: 0.12.2 (via Pkg.add)

Development version:

Installation

JuMP can be installed through the Julia package manager:

julia> Pkg.add("JuMP")

For full installation instructions, including how to install solvers, see the documentation linked above.

Supported problem classes

Mathematical programming encompasses a large variety of problem classes. We list below what is currently supported. See the documentation for more information.

Objective types

  • Linear
  • Convex Quadratic
  • Nonlinear (convex and nonconvex)

Constraint types

  • Linear
  • Convex Quadratic
  • Second-order Conic
  • Semidefinite
  • Nonlinear (convex and nonconvex)

Variable types

  • Continuous
  • Integer-valued
  • Semicontinuous
  • Semi-integer

Bug reports and support

Please report any issues via the Github issue tracker. All types of issues are welcome and encouraged; this includes bug reports, documentation typos, feature requests, etc. The julia-opt mailing list is appropriate for general discussion, including "how do I do this?" questions.

Citing JuMP

If you find JuMP useful in your work, we kindly request that you cite the following paper:

@article{LubinDunningIJOC,
author = {Miles Lubin and Iain Dunning},
title = {Computing in Operations Research Using Julia},
journal = {INFORMS Journal on Computing},
volume = {27},
number = {2},
pages = {238-248},
year = {2015},
doi = {10.1287/ijoc.2014.0623},
URL = {http://dx.doi.org/10.1287/ijoc.2014.0623}
}

A preprint of this paper is freely available on arXiv.

If you use the nonlinear or conic optimization functionality of JuMP, please cite the following preprint which describes the methods implemented in JuMP. You may cite it as:

@article{DunningHuchetteLubin2015,
title = {{JuMP}: {A} modeling language for mathematical optimization},
author = {Iain Dunning and Joey Huchette and Miles Lubin},
journal = {arXiv:1508.01982 [math.OC]},
year = {2015},
url = {http://arxiv.org/abs/1508.01982}
}

About

Modeling language for Mathematical Programming (linear, mixed-integer, conic, nonlinear)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%