v0.6.0
Manopt v0.6.0
This is a breaking change since the JuMP extension is dropped.
We also unified a few of the internal solver state constructors.
Added
- A robustified version of the Riemannian Levenberg Marquardt algorithm (#617)
- An option to disable the warm start the conjugate residual currently does when used as a subsolver.
nonpositive_curvature_behaviorforQuasiNewtonLimitedMemoryDirectionUpdatethat determines how transported (y, s) vector pairs are treated after transport; if their inner product gets too low, it may lead to non-positive-definite Hessians which needs to be avoided. This resolves issue (#549). (#554)GeneralizedCauchyDirectionSubsolverfor handling direction selection in the presence of box (Hyperrectangle) constraints in quasi-Newton methods. This allows for L-BFGS-B-style box constraint handling. (#554)- New stopping criteria:
StopWhenRelativeAPosterioriCostChangeLessOrEqualandStopWhenProjectedNegativeGradientNormLess. (#554). HagerZhangLinesearchstepsize, a state-of-the-art line search for smooth objectives with cubic interpolation and adaptive Wolfe condition checking. (#554)- Stopping criteria can now be initialized using
initialize_stepsize!, similar to solvers. (#554) - The
ConjugateResidualStatenow has awarm_start=option when used multiple times, for example in every iteration as a subsolver, to reuse the last state from the previous run.
Changed
- In the Riemannian Levenberg Marquardt algorithmt the
ηparameter has been renamed tocandidate_acceptance_threshold,βtodamping_increase_factorandβ_reductiontodamping_reduction_factor. (#617) - the constructor for the Levenberg-Marquardt state has been unified with the remaining states, to take the
sub_problemandsub_statearguments as second and third positional arguments, respectively. (#617) - the keyword
initial_jacobian_fwithinLevenbergMarquardtis unified in naming to the residual values vector and calledinitial_jacobian_matrices. If you callLevenbergMarquardtwith a single vector component, also a single matrix is allowed. (#617) - an internal field of the solver state of Levenberg-Marqwuardt was called
jacobian_fthe same as the functions whose result it meant to cache if applicable. To distinguish both, the field is now calledjacobian_matrices. (#617) - the
max_stepsize(M)on theSymmetricPositiveDefinitemanifold was changed from returningInf, which is the mathematical maximal stepsize to returning the square root of the maximum (floating point) value to avoid numerical instabilities. - title of "How to define the cost in the embedding" tutorial (#615)
Fixed
- Fixed
showmethods of various state and stopping criteria to properly handle bothreprand multiline printing (#569) - Unified all
showmethods and their human readable analogastatus_summarythroughout the package (#569) - Fixed some text descriptions of a few stopping criteria.
- unify naming of fields,
debugDictionaryof the debug state is now calleddebug_dictionary - the
NesterovRulenow also stores an actualAbstractRetractionMethodinstead of implicitly always using the default one. - Line searches consistently respect
stop_when_stepsize_exceedskeyword argument as a hard limit. (#554) StopWhenChangeLessfalsely claimed to indicate convergence. This is now fixed. (#554)- miscellaneous broken links in the documentation. (#614)
Removed
- The extension to JuMP. A replacement as a separate package is planned when the support for variables beyond vectors is more accessible in JuMP
- the plotting functions to
Asymptote. They can now be found in the separate packageManifoldAsymptote.jl
this way,Manopt.jlhas less dependencies, especially the color and colorschemes dependencies are dropped linear_subsolver! =was removed from theLevenbergMarquardtsolver interface, since it is imprecise. If you use a closed form solver before, specify it by passing the function tosub_problemand setsub_stateto the corresponding evaluation type
Merged pull requests:
- Prepare Manopt v0.6 (#605) (@mateuszbaran)
- Bump codecov/codecov-action from 6 to 7 (#613) (@dependabot[bot])
- fix links in documentation (#614) (@araujoms)
- change title of embedding objective tutorial (#615) (@araujoms)
- Bump actions/checkout from 6 to 7 (#616) (@dependabot[bot])
- Introduce a robust Levenberg-Marquardt (#617) (@kellertuer)
Closed issues: