|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "JuMP 0.21.5 is released" |
| 4 | +date: 2020-09-21 |
| 5 | +categories: [releases] |
| 6 | +permalink: /blog/0.21.5-release/ |
| 7 | +--- |
| 8 | + |
| 9 | +We are happy to announce the joint release of JuMP 0.21.5 and MathOptInterface |
| 10 | +0.9.17! These releases are a mix of new features and some much needed |
| 11 | +performance optimizations. This should be a non-breaking release, please let us |
| 12 | +know if this isn't the case by [opening a Github issue](https://github.com/jump-dev/JuMP.jl/issues/new/choose) |
| 13 | +or joining the [Gitter chat](https://gitter.im/JuliaOpt/JuMP-dev). We did have |
| 14 | +a couple of bugs that slipped into a short-lived release, hence the jump (if you |
| 15 | +will excuse us) from 0.21.3 to 0.21.5. |
| 16 | + |
| 17 | +On the JuMP side, new features of interest include |
| 18 | +* the [`relax_integrality`](https://jump.dev/JuMP.jl/v0.21.5/variables/#JuMP.relax_integrality) |
| 19 | +function, which relaxes all integrality constraints in the model. This restores |
| 20 | +the `solve(..., relaxation=true)` functionality from JuMP 0.18. |
| 21 | +* the [`compute_conflict!`](https://jump.dev/JuMP.jl/v0.21.5/solutions/#JuMP.compute_conflict!) |
| 22 | +function, which exposes the ability of some solvers to compute an irreducible |
| 23 | +infeasible subsystem of an infeasible model. |
| 24 | + |
| 25 | +We also spent time improving the [time](https://github.com/jump-dev/JuMP.jl/pull/2279) |
| 26 | +[it](https://github.com/jump-dev/JuMP.jl/pull/2284) |
| 27 | +[takes](https://github.com/jump-dev/JuMP.jl/pull/2285) |
| 28 | +[to](https://github.com/jump-dev/JuMP.jl/pull/2286) |
| 29 | +[run](https://github.com/jump-dev/JuMP.jl/pull/2303) |
| 30 | +[the](https://github.com/jump-dev/JuMP.jl/pull/2306) |
| 31 | +[tests](https://github.com/jump-dev/JuMP.jl/pull/2307) and |
| 32 | +[fixing bugs](https://github.com/jump-dev/JuMP.jl/pull/2271). We also |
| 33 | +[resolved](https://github.com/jump-dev/JuMP.jl/pull/2276) a |
| 34 | +[long outstanding issue](https://github.com/jump-dev/JuMP.jl/issues/1174) with |
| 35 | +reporting correct line numbers in errors involving macros. |
| 36 | + |
| 37 | +On the MathOptInterface side, we spent the majority of the last few months |
| 38 | +working on performance improvements. These changes include: [faster reading and |
| 39 | +writing of MathOptFormat files](https://github.com/jump-dev/MathOptInterface.jl/pull/1111); |
| 40 | +specialized `copy_to` methods for [Clp](https://github.com/jump-dev/Clp.jl/pull/94) |
| 41 | +and [GLPK](https://github.com/jump-dev/GLPK.jl/pull/143), which reduces the time |
| 42 | +taken to copy the problem from JuMP into the solver; and numerous minor changes |
| 43 | +to the backend of MathOptInterface, such as specialized dictionaries which act |
| 44 | +like arrays at first, [but switch to dictionaries when elements are deleted](https://github.com/jump-dev/MathOptInterface.jl/pull/1142). |
| 45 | + |
| 46 | +[@blegat](https://github.com/blegat) also implemented an option that changes the |
| 47 | +way to compute which bridges to use in a transformation, opening the way for us |
| 48 | +to experiment with different bridging schemes in the future. |
| 49 | + |
| 50 | +On the solver front, the conic solver SCS in particular received a |
| 51 | +[lot](https://github.com/jump-dev/SCS.jl/pull/182) |
| 52 | +[of](https://github.com/jump-dev/SCS.jl/pull/185) |
| 53 | +[attention](https://github.com/jump-dev/SCS.jl/pull/189) |
| 54 | +[on](https://github.com/jump-dev/SCS.jl/pull/191) |
| 55 | +[improving](https://github.com/jump-dev/SCS.jl/pull/192) |
| 56 | +[performance](https://github.com/jump-dev/SCS.jl/pull/196). This led to very |
| 57 | +large gains formulating large problems in our benchmarks. In the worst case, a |
| 58 | +problem that never finished loading into the solver [now takes 10 seconds](https://github.com/jump-dev/SCS.jl/issues/181). |
| 59 | + |
| 60 | +We also have a number of contributors to thank. |
| 61 | +* [@ilancoulon](https://github.com/ilancoulon) took a [deep dive into the bridging system](https://github.com/jump-dev/MathOptInterface.jl/pull/1101) |
| 62 | +* [@rtwalker](https://github.com/rtwalker) implemented a new bridge to [convert |
| 63 | +between `ZeroOne` and `Integer` constraints](https://github.com/jump-dev/MathOptInterface.jl/pull/1099) |
| 64 | +* [@dourouc05](https://github.com/dourouc05) completed a multi-year odyssey |
| 65 | +to [expose irreducible infeasible subsystems (IIS)](https://github.com/jump-dev/JuMP.jl/pull/2300). |
| 66 | +He also made a number of [other](https://github.com/jump-dev/MathOptInterface.jl/pull/1149) |
| 67 | +[fixes](https://github.com/jump-dev/JuMP.jl/pull/2317) |
| 68 | +and [documentation](https://github.com/jump-dev/JuMP.jl/pull/2316) |
| 69 | +[improvements](https://github.com/jump-dev/JuMP.jl/pull/2264). |
| 70 | +* [@yashcodes](https://github.com/yashcodes) made some [helpful](https://github.com/jump-dev/JuMP.jl/pull/2222) |
| 71 | +[improvements](https://github.com/jump-dev/JuMP.jl/pull/2203) to JuMP's error |
| 72 | +messages and the [documentation in MathOptInterface](https://github.com/jump-dev/MathOptInterface.jl/pull/1050). |
| 73 | +* [@egbuck](https://github.com/egbuck) [fixed a bug](https://github.com/jump-dev/MathOptInterface.jl/pull/1124) |
| 74 | +in objective support for various file formats. |
| 75 | +* [@andrewrosemberg](https://github/com/andrewrosemberg) [fixed a bug](https://github.com/jump-dev/JuMP.jl/pull/2319) |
| 76 | +that affected heuristic callbacks. |
| 77 | + |
| 78 | +We also thank testing improvments from [@iainnz](https://github/com/iainnz), |
| 79 | +documentation improvements from [@zlatanvasovic](https://github/com/zlatanvasovic), |
| 80 | +[@mtanneau](https://github/com/mtanneau) and [@aks1996](https://github/com/aks1996). |
| 81 | + |
| 82 | +For a full list of the merged pull requests and closed issues that contributed |
| 83 | +to this release, see the tag notes for [JuMP v0.21.4](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.4) |
| 84 | +and [v0.21.5](https://github.com/jump-dev/JuMP.jl/releases/tag/v0.21.5), |
| 85 | +and [MathOptInterface v0.9.15](https://github.com/jump-dev/MathOptInterface.jl/releases/tag/v0.9.15), |
| 86 | +[v0.9.16](https://github.com/jump-dev/MathOptInterface.jl/releases/tag/v0.9.16), |
| 87 | +and [v0.9.17](https://github.com/jump-dev/MathOptInterface.jl/releases/tag/v0.9.17). |
| 88 | + |
| 89 | +This release knocks out a number of major items on our |
| 90 | +[roadmap](https://jump.dev/JuMP.jl/v0.21.5/roadmap/) for JuMP 1.0. Stay |
| 91 | +tuned for more progress! |
0 commit comments