Releases: JuliaManifolds/Manopt.jl
Releases · JuliaManifolds/Manopt.jl
v0.4.64
Manopt v0.4.64
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
newVectorGradientFunction
s beyond the defaultNestedPowerRepresentation
- 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 anAbstractManifoldObjective
internally instead of directlyf
andgrad_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)
, useget_grad_equality_constraint(M, o, p, :)
from the more flexible indexing instead.
Merged pull requests:
- Modularise Constraints (#386) (@kellertuer)
- Fix Initial condition on Lanczos (#391) (@kellertuer)
Closed issues:
v0.4.63
Manopt v0.4.63
Added
:reinitialize_direction_update
option for quasi-Newton behavior when the direction is not a descent one. It is now the new default forQuasiNewtonState
.- 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 thenondescent_direction_behavior
keyword argument.
Merged pull requests:
- Bump julia-actions/cache from 1 to 2 (#387) (@dependabot[bot])
:reinitialize_direction_update
for quasi-Newton (#388) (@mateuszbaran)
v0.4.62
Manopt v0.4.62
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 aerror=
with a symbol.
Merged pull requests:
- Adapt to the new checks available in ManifoldsBase. (#385) (@kellertuer)
v0.4.61
Manopt v0.4.61
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
forAbstractManifoldGradientObjectives
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 onget_last_stepsize(problem, state, step, vars...)
was removed. Now the only two left areget_last_stepsize(p, s, vars...)
and the one directly checkingget_last_stepsize(::Stepsize)
for stored values.- we accidentally exported
set_manopt_parameter!
, this is now fixed.
Changed
get_manopt_parameter
andset_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:
- Introduce Aqua.jl-based checks (#379) (@kellertuer)
- Add a structured list of solvers (#380) (@kellertuer)
- Unify symbols in get/set manopt parameters. (#383) (@kellertuer)
- add Polyak's Step size. (#384) (@kellertuer)
Closed issues:
v0.4.60
Manopt v0.4.60
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 toDebugFactory
, 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 generateDebugWhenActive
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 toRecordAction => Symbol
to resolve that ambiguity.
Merged pull requests:
- Introduce support of subsolver records. (#377) (@kellertuer)
Closed issues:
- Provide a collection of records from a subsolver (#371)
v0.4.59
Manopt v0.4.59
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:
- typo debug.jl (#372) (@flgoyens)
- CMA-ES (#373) (@mateuszbaran)
- Update
StopWhenAny
constructor forVector
(#376) (@Vaibhavdixit02)
v0.4.58
Manopt v0.4.58
Added
- more advanced methods to add debug to the beginning of an algorithm, a step, or the end of
the algorithm withDebugAction
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 forparticle_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 thatp
is no longer stored, but the algorithm runs onTpM
. - implemented the missing
get_iterate
forTruncatedConjugateGradientState
.
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:
v0.4.57
Manopt v0.4.57
Changed
convex_bundle_method
uses thesectional_curvature
fromManifoldsBase.jl
.convex_bundle_method
no longer has the unusedk_min
keyword argument.ManifoldsBase.jl
now is running on Documenter 1.3,Manopt.jl
documentation now uses DocumenterInterLinks to refer to sections and functions fromManifoldsBase.jl
Fixed
- fixes a type that when passing
sub_kwargs
totrust_regions
caused an error in the decoration of the sub objective.
Merged pull requests:
- Use
sectional_curvature
from ManifoldsBase (#365) (@mateuszbaran) - 📚Switch to using DocumenterInterLinks for ManifoldsBase.jl (#366) (@kellertuer)
- Fix a typo in a decorator call. (#367) (@kellertuer)
v0.4.56
Manopt v0.4.56
Added
- The option
:step_towards_negative_gradient
fornondescent_direction_behavior
in quasi-Newton solvers does no longer emit a warning by default. This has been moved to amessage
, that can be accessed/displayed withDebugMessages
DebugMessages
now has a second positional argument, specifying whether all messages, or just the first (:Once
) should be displayed.
Merged pull requests:
- Nondescent direction without warnings (#363) (@mateuszbaran)
v0.4.55
Manopt v0.4.55
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:
- Fix a few typos and try to fix the dependency from the last PR (#360) (@kellertuer)
- Checking for non-descent direction in qN (#361) (@mateuszbaran)