Woohoo! That's a lot of new stuff.

-- Jarrett

On Tuesday, September 1, 2015 at 12:41:26 AM UTC-4, Miles Lubin wrote:
>
> The JuMP team is happy to announce the release of JuMP 0.10.
>
> This is a major release with the greatest amount of new functionality 
> since the addition of nonlinear modeling last year. This will likely be the 
> last major release of JuMP to support Julia 0.3. Thanks to the heroic work 
> of Joey Huchette, JuMP now supports *vectorized syntax* and modeling for 
> *semidefinite 
> programming*.
>
> You can now write, for example:
>
> @defVar(m, x[1:5])
> @addConstraint(m, A*x .== 0)
>
> where A is a Julia matrix (dense or sparse). Note that we require dot 
> comparison operators .== (and similarly .<= and .>=) for vectorized 
> constraints. The vectorized syntax extends to quadratic but not general 
> nonlinear expressions.
>
> An important new concept to keep in mind is that this vectorized syntax 
> only applies to sets of variables which are one-based arrays. If you 
> declare variables indexed by more complicated sets, e.g.,
>
> @defVar(m, y[3:5])
> s = [:cat, :dog, :pizza]
> @defVar(m, z[s])
>
> then dot(y,z) and rand(3,3)*z are undefined. A result of this new concept 
> of one-based arrays is that x above now has the type Vector{JuMP.Variable}. 
> In this case, getValue() now returns a Vector{Float64} instead of an 
> opaque JuMP object. We hope users find this new distinction between 
> one-indexed array variables and all other symbolically indexed variables 
> useful and intuitive (if not, let us know).
>
> For semidefinite modeling, you can declare variables as SDP matrices and 
> add LMI (linear matrix inequality) constraints as illustrated in the 
> examples for minimal ellipse 
> <https://github.com/JuliaOpt/JuMP.jl/blob/6e7c86acfe09c4970741d957e381446bfd7630ca/examples/minellipse.jl>
>  and 
> max cut 
> <https://github.com/JuliaOpt/JuMP.jl/blob/6e7c86acfe09c4970741d957e381446bfd7630ca/examples/maxcut_sdp.jl>,
>  
> among others.
>
> We also have a *new syntax for euclidean norms:*
>
> @addConstraint(m, norm2{c[i]*x[i]+b[i],i=1:N} <= 10)
> # or
> @addConstraint(m, norm(c.*x+b) <= 10)
>
> You may be wondering how JuMP compares with Convex.jl given these new 
> additions. Not much has changed philosophically; JuMP directly translates 
> SDP constraints and euclidean norms into the sparse matrix formats as 
> required by conic solvers. Unlike Convex.jl, *JuMP accepts only 
> standard-form SDP and second-order conic constraints and will not perform 
> any automatic transformations* such as modeling nuclear norms, minimum 
> eigenvalue, geometric mean, rational norms, etc. We would recommend using 
> Convex.jl for easy modeling of such functions. Our focus, for now, is on 
> the large-scale performance and stability of the huge amount of new syntax 
> introduced in this release.
>
> Also notable in this release:
> - JuMP models now store a dictionary of attached variables, so that you 
> can look up a variable from a model by name by using the new getVar() 
> method.
> - On Julia 0.4 only, you can now have a filter variable declarations, e.g.,
> @defVar(m, x[i=1:5,j=1:5; i+j >= 3])
> will only create variables for the indices which satisfy the filter 
> condition. (These are not one-based arrays as introduced above.)
> - Dual multipliers are available for nonlinear problems from the solvers 
> which provide them
> - There is improved documentation for querying derivatives from a 
> nonlinear JuMP model 
> <http://jump.readthedocs.org/en/latest/nlp.html#querying-derivatives-from-a-jump-model>
> - *We now try to print warnings for two common performance traps*: 
> calling getValue() in a tight loop and using operator overloading to 
> construct large JuMP expressions. Please let us know if these are useful or 
> annoying or both so that we can tune the warning thresholds.
> - Thanks to Tony Kelman and Jack Dunn, you can now call a large number of 
> external solvers including Bonmin and Couenne through either the .osil or 
> .nl exchange formats.
> - Module precompilation speeds up using JuMP considerably, for those on 
> Julia 0.4
>
> The delay since the last release of JuMP is mostly due to us trying to 
> test and refine the new syntax, but inevitably some bugs have slipped 
> through, so please let us know of any incorrect or confusing behavior.
>
> Also newsworthy is our new paper <http://arxiv.org/abs/1508.01982> 
> describing the methods used in JuMP with benchmark comparisons to existing 
> open-source and commercial optimization modeling software.
>
> Miles, Iain, and Joey
>
>

Reply via email to