Skip to content

Releases: JuliaManifolds/Manopt.jl

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:

v0.4.61

27 Apr 16:09
77c6720
Compare
Choose a tag to compare

Manopt v0.4.61

Diff since v0.4.60

Added

  • Tests now also use Aqua.jl to spot problems in the code, e.g. ambiguities.
  • introduce a feature-based list of solvers and reduce the details in the alphabetical list
  • adds a PolyakStepsize
  • added a get_subgradient for AbstractManifoldGradientObjectives since their gradient is a special case of a subgradient.

Fixed

  • get_last_stepsize was defined in quite different ways that caused ambiguities. That is now internally a bit restructured and should work nicer.
    Internally this means that the interims dispatch on get_last_stepsize(problem, state, step, vars...) was removed. Now the only two left are get_last_stepsize(p, s, vars...) and the one directly checking get_last_stepsize(::Stepsize) for stored values.
  • we accidentally exported set_manopt_parameter!, this is now fixed.

Changed

  • get_manopt_parameter and set_manopt_parameter! have been revised and better documented,
    they now use more semantic symbols (with capital letters) instead of direct field access
    (lower letter symbols). Since these are not exported, this is considered an internal, hence non-breaking change.
    • semantic symbols are now all nouns in upper case letters
    • :active is changed to :Activity

Merged pull requests:

Closed issues:

  • Polyak's stepsize (#224)
  • Add a structured list of solvers for different problem types (#374)

v0.4.60

10 Apr 08:05
f546183
Compare
Choose a tag to compare

Manopt v0.4.60

Diff since v0.4.59

Added

  • RecordWhenActive to allow records to be deactivated during runtime, symbol :WhenActive
  • RecordSubsolver to record the result of a subsolver recording in the main solver, symbol :Subsolver
  • RecordStoppingReason to record the reason a solver stopped
  • made the RecordFactory more flexible and quite similar to DebugFactory, such that it is now also easy to specify recordings at the end of solver runs. This can especially be used to record final states of sub solvers.

Changed

  • being a bit more strict with internal tools and made the factories for record non-exported, so this is the same as for debug.

Fixed

  • The name :Subsolver to generate DebugWhenActive was misleading, it is now called :WhenActive – referring to “print debug only when set active, e.g. by the parent (main) solver”.
  • the old version of specifying Symbol => RecordAction for later access was ambiguous, since
    it could also mean to store the action in the dictionary under that symbol. Hence the order for access
    was switched to RecordAction => Symbol to resolve that ambiguity.

Merged pull requests:

Closed issues:

  • Provide a collection of records from a subsolver (#371)

v0.4.59

07 Apr 12:47
0d899bf
Compare
Choose a tag to compare

Manopt v0.4.59

Diff since v0.4.58

Added

A Riemannian variant of the CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) algorithm, cma_es.
Fixed

The constructor dispatch for StopWhenAny with Vector had incorrect element type assertion which was fixed.

Merged pull requests:

v0.4.58

19 Mar 07:46
342004e
Compare
Choose a tag to compare

Manopt v0.4.58

Diff since v0.4.57

Added

  • more advanced methods to add debug to the beginning of an algorithm, a step, or the end of
    the algorithm with DebugAction entries at :Start, :BeforeIteration, :Iteration, and
    :Stop, respectively.
  • Introduce a Pair-based format to add elements to these hooks, while all others ar
    now added to :Iteration (no longer to :All)
  • (planned) add an easy possibility to also record the initial stage and not only after the first iteration.

Changed

  • Changed the symbol for the :Step dictionary to be :Iteration, to unify this with the symbols used in recording,
    and removed the :All symbol. On the fine granular scale, all but :Start debugs are now reset on init.
    Since these are merely internal entries in the debug dictionary, this is considered non-breaking.
  • introduce a StopWhenSwarmVelocityLess stopping criterion for particle_swarm replacing
    the current default of the swarm change, since this is a bit more effective to compute

Fixed

  • fixed the outdated documentation of TruncatedConjugateGradientState, that now correcly
    state that p is no longer stored, but the algorithm runs on TpM.
  • implemented the missing get_iterate for TruncatedConjugateGradientState.

Merged pull requests:

  • CompatHelper: add new compat entry for DocumenterInterLinks at version 0.3 for package docs, (keep existing compat) (#368) (@github-actions[bot])
  • Change PSO SC to a more efficient way of computing. (#369) (@kellertuer)
  • Refine debug (#370) (@kellertuer)

Closed issues:

  • Change default stopping criterion in particle swarm (#347)
  • Try DocumenterInterLinks.jl (#364)

v0.4.57

15 Mar 21:30
9b34085
Compare
Choose a tag to compare

Manopt v0.4.57

Diff since v0.4.56

Changed

  • convex_bundle_method uses the sectional_curvature from ManifoldsBase.jl.
  • convex_bundle_method no longer has the unused k_min keyword argument.
  • ManifoldsBase.jl now is running on Documenter 1.3, Manopt.jl documentation now uses DocumenterInterLinks to refer to sections and functions from ManifoldsBase.jl

Fixed

  • fixes a type that when passing sub_kwargs to trust_regions caused an error in the decoration of the sub objective.

Merged pull requests:

v0.4.56

08 Mar 18:04
a0cb692
Compare
Choose a tag to compare

Manopt v0.4.56

Diff since v0.4.55

Added

  • The option :step_towards_negative_gradient for nondescent_direction_behavior in quasi-Newton solvers does no longer emit a warning by default. This has been moved to a message, that can be accessed/displayed with DebugMessages
  • DebugMessages now has a second positional argument, specifying whether all messages, or just the first (:Once) should be displayed.

Merged pull requests:

v0.4.55

03 Mar 13:22
20d82e3
Compare
Choose a tag to compare

Manopt v0.4.55

Diff since v0.4.54

Added

  • Option nondescent_direction_behavior for quasi-Newton solvers.
    By default it checks for non-descent direction which may not be handled well by
    some stepsize selection algorithms.

Fixed

  • unified documentation, especially function signatures further.
  • fixed a few typos related to math formulae in the doc strings.

Merged pull requests: