## What is JuMP?

JuMP is a modeling language and collection of supporting packages for mathematical optimization in Julia.

JuMP makes it easy to formulate and solve a range of problem classes, including linear programs, integer programs, conic programs, semidefinite programs, and constrained nonlinear programs. Here’s an example:

``````julia> using JuMP, Ipopt

julia> function solve_constrained_least_squares_regression(A::Matrix, b::Vector)
m, n = size(A)
model = Model(Ipopt.Optimizer)
set_silent(model)
@variable(model, x[1:n])
@variable(model, residuals[1:m])
@constraint(model, residuals == A * x - b)
@constraint(model, sum(x) == 1)
@objective(model, Min, sum(residuals.^2))
optimize!(model)
return value.(x)
end
solve_constrained_least_squares_regression (generic function with 1 method)

julia> A, b = rand(10, 3), rand(10);

julia> x = solve_constrained_least_squares_regression(A, b)
3-element Vector{Float64}:
0.4137624719002825
0.09707679853084578
0.48916072956887174
``````

## JuMP is used…

• to model and solve real-world problems, including
• to teach optimization at universities around the world, including
• to build continental-scale energy system models, including
• to accelerate pre-exascale metabolic modeling workflows at PerMedCoE
• to write hundreds of research papers each year, on topics such as

## Resources for getting started

There is a growing collection of third-party materials about JuMP. This includes the book, Julia Programming for Operations Research, which covers a variety of topics on optimization, with an emphasis on solving practical problems using JuMP and Julia.

## Get involved

Here are some things you can do to become more involved in the JuMP community:

The JuMP ecosystem includes Convex.jl, an algebraic modeling language for convex optimization based on the concept of Disciplined Convex Programming.

Outside of the JuMP organization:

• JuliaSmoothOptimizers provides a collection of tools primarily designed for developing solvers for smooth nonlinear optimization.
• JuliaNLSolvers offers implementations in Julia of standard optimization algorithms for unconstrained or box-constrained problems such as BFGS, Nelder-Mead, conjugate gradient, etc.
• JuliaHub lists 200+ optimization packages in Julia!

## NumFOCUS

JuMP is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. NumFOCUS provides JuMP with fiscal, legal, and administrative support to help ensure the health and sustainability of the project. Visit numfocus.org for more information.

You can support JuMP by donating.

Donations to JuMP are managed by NumFOCUS. For donors in the United States, your gift is tax-deductible to the extent provided by law. As with any donation, you should consult with your tax adviser about your particular tax situation.

JuMP’s largest expense is the annual JuMP-dev workshop. Donations will help us provide travel support for JuMP-dev attendees and take advantage of other opportunities that arise to support JuMP development.