JuMP is an award-winning project started by MIT students Iain Dunning, Joey Huchette, and Miles Lubin. It was developed at MIT Sloan School of Management and MIT’s Operations Research Center. JuMP’s design leverages advanced features of the Julia programming language (also developed at MIT) to allow users to express complex mathematical optimization problems with a natural notation that mirrors what a user might write on paper. Through this convenient and expressive syntax, JuMP lets users access advanced tools that were previously restricted to low-level proprietary interfaces.

“We started JuMP as an experiment to see if Julia could help solve our frustrations with modeling and solving mathematical optimization problems on a computer. It’s been amazing to see JuMP’s growth over the past 5 years, far beyond MIT, which proves the experiment was a success,” said Miles Lubin, a founding developer who is now a researcher at Google. “We are excited for JuMP to have a new home under NumFOCUS and are honored for it to be a fiscally sponsored project together with many foundational packages in the modern technical computing stack. NumFOCUS will provide the infrastructure and open-source expertise to sustain JuMP’s development for the next 5 years (and more) and grow and broaden its community.”

JuMP Features and Applications

“JuMP began as a modeling language but its ecosystem has since expanded to include auxiliary tools and solvers,” says Juan Pablo Vielma, Associate Professor of Operations Research and Statistics at MIT Sloan. “Its ease-of-use, its power, and its state-of-the-art techniques make it an ideal language for a variety of different research and business environments.”

The JuMP project makes state-of-the-art tools for mathematical optimization available in Julia. The flagship package is the JuMP modeling interface, a domain-specific language for modeling optimization problems. It supports a number of open-source and commercial solver backends for a variety of problem classes, including (mixed-integer) linear programming, semidefinite programming, and derivative-based nonlinear optimization. JuMP matches the performance of standalone commercial modeling languages by using Julia’s key features like macros and JIT compilation. It provides support for callbacks to solvers for advanced control of the solution process. JuMP is extensible at all levels of the stack, from supporting new solvers to expressing new types of constraints to modeling new problem classes like polynomial optimization.

JuMP has been used for routing school buses in Boston, scheduling trains in Canada, and simulating power system operations in North and South America. It is used for teaching and research at numerous universities worldwide. Features and extensions have been developed in collaboration with researchers at universities and national laboratories. A wide range of research papers have cited JuMP. In addition, it is used in many of MIT Sloan’s business analytics courses in the undergraduate, MBAn, and MBA programs.

“ JuMP was used to add new features to existing tools and now some of PSR´s most important software are being completely re-written in Julia because of JuMP.”

Power systems software developer PSR has been using JuMP since 2016 for both prototyping and deployment. Joaquim Dias Garcia, Research Scientist at PSR, explains: “PSR software relies deeply on optimization to solve complex power systems problems. At PSR, JuMP started as a prototyping tool, mainly for research, but in a few months we figured out it was an excellent tool to deploy and distribute our software. JuMP was used to add new features to existing tools and now some of PSR´s most important software are being completely re-written in Julia because of JuMP.”