The contributors are happy to announce, that Optim.jl version 0.4.5 has now 
been released.

This is the last patch before the next minor version bump to v0.5.0. The 
next release will remove deprecations introduced in this patch, and will 
also include breaking changes to the API. This patch allows our users to 
report any problems with the recent changes to the master branch, before we 
remove the deprecations, and finalize the API changes, by including changes 
that cannot be deprecated, such as: field name changes and keyword renaming.

*New API for optimization*
This patch introduces our new dispatch based API for choosing between the 
different algorithms. This replaces the old BFGS(df, x0), Newton(df, x0), 
... or optimize(df, x0, method = :bfgs), optimize(df, x0, method = :newton) 
functions with optimize(df, x0, BFGS()), optimize(df, x0, Newton()), and so 
on. The README.md has been updated accordingly.

Notice that there will be further changes when moving to the v0.5.0 tag. 
For example, keywords will be matched with the syntax of the results 
retrieving methods presented below, and field names of *OptimizationResults 
will be changes.

*New API for retrieving results*
We have removed the old API for accessing the results of an optimization 
result (directly accessing field names), with a function based API. This 
means that what was accessed as res.iterations is now iterations(res), 
res.converged is now converged(res), and so on. This allows for better use 
of errors, and is much less fragile than having users access field names. 
To give an example, we have a field named minimum which is actually the 
minimizer. The new API is minimizer(res), but to avoid breaking user code, 
we have to wait with changing the unfortunate field name until v0.5.0.

*New dependency - PositiveFactorizations*
Many users have asked: "Why do I get an error saying no descent could be 
found with :newton?" Often the answer is: you are in a concave region of 
your objective. To avoid this, the Newton() method now uses the 
PositiveFactorizations package to compute the direction of descent. This 
means a new dependency, but it is pure Julia, and very lightweight.

*Other changes*
Minor revamp of README.md, preparation for JuliaLang v0.5 changes, remove 
Optim.vecdot and use the vecdot introduced in JuliaLang v0.4 instead, and 
several minor bug fixes.

Please report any problems to the issue tracker over at 
https://github.com/JuliaOpt/Optim.jl/issues or here. 

Reply via email to