JuMP 0.21.5 is released
releases ·We are happy to announce the joint release of JuMP 0.21.5 and MathOptInterface 0.9.17! These releases are a mix of new features and some much needed performance optimizations. This should be a non-breaking release, please let us know if this isn’t the case by opening a GitHub issue or joining the Developer chatroom. We did have a couple of bugs that slipped into a short-lived release, hence the jump (if you will excuse us) from 0.21.3 to 0.21.5.
On the JuMP side, new features of interest include
- the
relax_integrality
function, which relaxes all integrality constraints in the model. This restores thesolve(..., relaxation=true)
functionality from JuMP 0.18. - the
compute_conflict!
function, which exposes the ability of some solvers to compute an irreducible infeasible subsystem of an infeasible model.
We also spent time improving the time it takes to run the tests and fixing bugs. We also resolved a long outstanding issue with reporting correct line numbers in errors involving macros.
On the MathOptInterface side, we spent the majority of the last few months
working on performance improvements. These changes include: faster reading and
writing of MathOptFormat files;
specialized copy_to
methods for Clp
and GLPK, which reduces the time
taken to copy the problem from JuMP into the solver; and numerous minor changes
to the backend of MathOptInterface, such as specialized dictionaries which act
like arrays at first, but switch to dictionaries when elements are deleted.
@blegat also implemented an option that changes the way to compute which bridges to use in a transformation, opening the way for us to experiment with different bridging schemes in the future.
On the solver front, the conic solver SCS in particular received a lot of attention on improving performance. This led to very large gains formulating large problems in our benchmarks. In the worst case, a problem that never finished loading into the solver now takes 10 seconds.
We also have a number of contributors to thank.
- @ilancoulon took a deep dive into the bridging system
-
@rtwalker implemented a new bridge to convert
between
ZeroOne
andInteger
constraints - @dourouc05 completed a multi-year odyssey to expose irreducible infeasible subsystems (IIS). He also made a number of other fixes and documentation improvements.
- @yashcodes made some helpful improvements to JuMP’s error messages and the documentation in MathOptInterface.
- @egbuck fixed a bug in objective support for various file formats.
- @andrewrosemberg fixed a bug that affected heuristic callbacks.
We also thank testing improvements from @iainnz, documentation improvements from @zlatanvasovic, @mtanneau and @aks1996.
For a full list of the merged pull requests and closed issues that contributed to this release, see the tag notes for JuMP v0.21.4 and v0.21.5, and MathOptInterface v0.9.15, v0.9.16, and v0.9.17.
This release knocks out a number of major items on our roadmap for JuMP 1.0. Stay tuned for more progress!