JuMP v0.20 has been released

We are pleased to announce the release of JuMP v0.20 and MathOptInterface (MOI) v0.9. This release is an incremental improvement over JuMP v0.19, with the majority of breaking changes affecting only solver developers. We support a number of new features that build on top of the extensible design of MOI.

Highlights from the JuMP 0.20 release notes:

  • LP sensitivity summary functions
  • Additional functions for:
    • Setting and querying coefficients in constraints
    • Setting and querying the new MOI attributes listed below
  • Improved error messages
  • Performance improvements

Highlights from the MOI 0.9 release notes:

  • New sets were added for modeling new constraints: IndicatorSet, NormOneCone and NormInfinityCone.
  • New attributes were added to enhance solver independent control over solvers: DualObjectiveValue, RawParameter, RawStatusString, SolveTime, Silent, and TimeLimitSec.
  • Bridges have matured to a point where solver wrappers don’t have to implement any transformation and can directly map the solver interface into MOI without the need of doing any extra work. This allowed us to get rid of the intermediate layers LQOI and SDOI which were carrying out such transformations.

Updating solver wrappers for a new release of MOI is a large effort that requires coordination over 20+ packages. Most, but not all, solver interfaces have already been updated to support MOI 0.9. See here to track progress. Notably, the GLPK, Gurobi, Xpress, CPLEX have been or are currently being rewritten from scratch in order to reduce technical debt and remove the dependency on the intermediate LQOI package.

Note: Until all solver wrappers have a compatible release, expect to see Pkg reporting version incompatibilities.

We thank all the contributors to the release!


Sorry for the noise, but is it related to the incompatible dependencies that when I try to update from 0.19.2, I’m not getting version 0.20 ? I’m on Julia 1.2.0, and here is my package status output:

  [c52e3926] Atom v0.10.1
  [f6369f11] ForwardDiff v0.10.3
  [60bf3e95] GLPK v0.10.0
  [7073ff75] IJulia v1.20.0
  [4076af6c] JuMP v0.19.2
  [e5e0dc1b] Juno v0.7.2
  [b8f27783] MathOptInterface v0.8.4
  [429524aa] Optim v0.19.2
  [d330b81b] PyPlot v2.8.2
  [37e2e3b7] ReverseDiff v0.3.1
  [295af30f] Revise v2.1.10

Try free MathOptInterface. It needs to update to 0.9.

Indeed, thanks!

  Updating `~/.julia/environments/v1.2/Project.toml`
  [60bf3e95] ↑ GLPK v0.10.0 ⇒ v0.11.3
  [4076af6c] ↑ JuMP v0.19.2 ⇒ v0.20.0
  [b8f27783] ↑ MathOptInterface v0.8.4 ⇒ v0.9.2
  Updating `~/.julia/environments/v1.2/Manifest.toml`
  [6e4b80f9] + BenchmarkTools v0.4.3
  [60bf3e95] ↑ GLPK v0.10.0 ⇒ v0.11.3
  [4076af6c] ↑ JuMP v0.19.2 ⇒ v0.20.0
  [f8899e07] - LinQuadOptInterface v0.6.0
  [b8f27783] ↑ MathOptInterface v0.8.4 ⇒ v0.9.2

It’s a bit silly, I installed MOI because I thought it was needed to check the termination status of JuMP, before realizing that MOI.OPTIMAL was already available! (the “recommended workflow” is a bit hidden further down the page…)

Great you got it working. Pull requests to improve the documentation are welcomed.