Skip to content

Releases: JuliaManifolds/Manopt.jl

v0.5.1

04 Sep 15:49
82f31f8
Compare
Choose a tag to compare

Manopt v0.5.1

Diff since v0.5.0

Changed

  • slightly improves the test for the ExponentialFamilyProjection text on the about page.

Added

  • the proximal_point method.

Merged pull requests:

Closed issues:

  • PPA on Stiefel (#252)

v0.5.0

29 Aug 06:31
ba6979e
Compare
Choose a tag to compare

Manopt v0.5.0

Diff since v0.4.69

This breaking release is mainly concerned with stability and usability

  • all interfaces have been unified, especially orders of arguments and names of keywords
  • for gradient rules like CG or average gradient, and stepsizes like the Armijo linesearch, specifying the manifold (yet again) is no longer necessary thanks to an idea from Dmtry
  • the documentation has been reworked to using a glossary internally
  • we now use Aqua.jl to avoid ambiguities
  • we are back to supporting Julia 1.6 again after this rework as well.

For a full list of breaking changes see the Changelog.md.

Merged pull requests:

Closed issues:

  • Unify passing of optional parts of the objective in high-level solver interfaces (#381)
  • Quasi-Newton update rules issues (#382)
  • Initialise states based on point type already and not requiring an actual point (#400)
  • Problems with quasi-newton and PositiveDefinite matrix (#401)

v0.4.69

03 Aug 16:07
Compare
Choose a tag to compare

Manopt v0.4.69

Diff since v0.4.68

Changed

  • Improved performance of Interior Point Newton Method.

Merged pull requests:

v0.4.68

02 Aug 17:02
0b05c8c
Compare
Choose a tag to compare

Manopt v0.4.68

Diff since v0.4.67

Added

  • an Interior Point Newton Method, the interior_point_newton
  • a conjugate_residual Algorithm to solve a linear system on a tangent space.
  • ArmijoLinesearch now allows for additional additional_decrease_condition and additional_increase_condition keywords to add further conditions to accept additional conditions when to accept an decreasing or increase of the stepsize.
  • add a DebugFeasibility to have a debug print about feasibility of points in constrained optimisation employing the new is_feasible function
  • add a InteriorPointCentralityCondition check that can be added for step candidates within the line search of interior_point_newton
  • Add Several new functors
    • the LagrangianCost, LagrangianGradient, LagrangianHessian, that based on a constrained objective allow to construct the hessian objective of its Lagrangian
    • the CondensedKKTVectorField and its CondensedKKTVectorFieldJacobian, that are being used to solve a linear system within interior_point_newton
    • the KKTVectorField as well as its KKTVectorFieldJacobian and ``KKTVectorFieldAdjointJacobian`
    • the KKTVectorFieldNormSq and its KKTVectorFieldNormSqGradient used within the Armijo line search of interior_point_newton
  • New stopping criteria
    • A StopWhenRelativeResidualLess for the conjugate_residual
    • A StopWhenKKTResidualLess for the interior_point_newton

Merged pull requests:

Closed issues:

  • Refine storage of subsolver states (#403)

v0.4.67

25 Jul 08:39
21dd646
Compare
Choose a tag to compare

Manopt v0.4.67

Diff since v0.4.66

Merged pull requests:

Closed issues:

v0.4.66

27 Jun 07:42
5062ad5
Compare
Choose a tag to compare

Manopt v0.4.66

Diff since v0.4.65

Merged pull requests:

v0.4.65

13 Jun 15:11
befce29
Compare
Choose a tag to compare

Manopt v0.4.65

Diff since v0.4.64

Changed

  • refactor stopping criteria to not store a sc.reason internally, but instead only
    generate the reason (and hence allocate a string) when actually asked for a reason.

Merged pull requests:

  • CompatHelper: bump compat for DocumenterInterLinks to 1 for package docs, (keep existing compat) (#394) (@github-actions[bot])
  • Refactor get_reason (#395) (@kellertuer)

Closed issues:

  • Built-in stopping criterions allocate new error strings on each check, even when not required (#389)

v0.4.64

08 Jun 17:22
2943e0d
Compare
Choose a tag to compare

Manopt v0.4.64

Diff since v0.4.63

Added

  • Remodel the constraints and their gradients into separate VectorGradientFunctions
    to reduce code duplication and encapsulate the inner model of these functions and their gradients
  • Introduce a ConstrainedManoptProblem to model different ranges for the gradients in the
    new VectorGradientFunctions beyond the default NestedPowerRepresentation
  • introduce a VectorHessianFunction to also model that one can provide the vector of Hessians
    to constraints
  • introduce a more flexible indexing beyond single indexing, to also include arbitrary ranges
    when accessing vector functions and their gradients and hence also for constraints and
    their gradients.

Changed

  • Remodel ConstrainedManifoldObjective to store an AbstractManifoldObjective
    internally instead of directly f and grad_f, allowing also Hessian objectives
    therein and implementing access to this Hessian
  • Fixed a bug that Lanczos produced NaNs when started exactly in a minimizer, since we divide by the gradient norm.

Deprecated

  • deprecate get_grad_equality_constraints(M, o, p), use get_grad_equality_constraint(M, o, p, :)
    from the more flexible indexing instead.

Merged pull requests:

Closed issues:

  • Representing gradient of constraints as tangents on a power manifold (#185)
  • Lanczos initial value shouldn't be zero (#390)

v0.4.63

11 May 13:24
e97d0c0
Compare
Choose a tag to compare

Manopt v0.4.63

Diff since v0.4.62

Added

  • :reinitialize_direction_update option for quasi-Newton behavior when the direction is not a descent one. It is now the new default for QuasiNewtonState.
  • Quasi-Newton direction update rules are now initialized upon start of the solver with the new internal function initialize_update!.

Fixed

  • ALM and EPM no longer keep a part of the quasi-Newton subsolver state between runs.

Changed

  • Quasi-Newton solvers: :reinitialize_direction_update is the new default behavior in case of detection of non-descent direction instead of :step_towards_negative_gradient. :step_towards_negative_gradient is still available when explicitly set using the nondescent_direction_behavior keyword argument.

Merged pull requests:

v0.4.62

03 May 10:59
d6cfc0d
Compare
Choose a tag to compare

Manopt v0.4.62

Diff since v0.4.61

Changed

  • bumped dependency of ManifoldsBase.jl to 0.15.9 and imported their numerical check functions. This changes the throw_error keyword used internally to a error= with a symbol.

Merged pull requests: