Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework high level interfaces #392

Merged
merged 107 commits into from
Aug 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
2484fae
very first sketch of a new function struct type to wrap them and make…
kellertuer Jun 5, 2024
ab09993
Revert "very first sketch of a new function struct type to wrap them …
kellertuer Jun 5, 2024
9aae785
trigger all ambiguity errors.
kellertuer Jun 5, 2024
232e7b3
Move dispatch on p into subfunctions, that existed before anyways.
kellertuer Jun 6, 2024
91d1038
rework the safeguards to dispatch internally.
kellertuer Jun 6, 2024
da222a0
rework the safeguards to dispatch internally.
kellertuer Jun 6, 2024
b1777d2
Merge branch 'kellertuer/rework-high-level-interfaces' of github.com:…
kellertuer Jun 6, 2024
c85c98b
Fix a few bugs.
kellertuer Jun 6, 2024
0691ae3
Merge branch 'master' into kellertuer/rework-high-level-interfaces
kellertuer Jun 6, 2024
6b4291f
fixes all ambiguities but the ones with TCG.
kellertuer Jun 6, 2024
c8944e1
runs formatter.
kellertuer Jun 6, 2024
9b525ae
bump version to 0.5.0, describe what is beaking, simplify code and te…
kellertuer Jun 6, 2024
912d47e
remove deprecated definitions.
kellertuer Jun 6, 2024
a56f6a9
runs formatter.
kellertuer Jun 6, 2024
26fe778
Fix documenter. Increase bound on ManoptExamples to use the extension.
kellertuer Jun 8, 2024
25aca12
Loosen constraints on ManoptExamples since it works with 0.1.6 until …
kellertuer Jun 9, 2024
dcc2d74
Merge branch 'master' into kellertuer/rework-high-level-interfaces
kellertuer Jun 9, 2024
56e3504
Update test/test_aqua.jl
kellertuer Jun 9, 2024
a7b9eb2
raise dependency.
kellertuer Jun 9, 2024
13d99ec
Fix a typo in reducing Aqua.
kellertuer Jun 9, 2024
7b382d9
remove all deprecated parameters.
kellertuer Jun 12, 2024
7d8cc46
runs formatter on the correct folder.
kellertuer Jun 12, 2024
0a91e10
Fix a stopping criterion.
kellertuer Jun 13, 2024
9482223
Consistently wrap numbers in arrays for points/tangent vectors intern…
kellertuer Jun 13, 2024
0419908
Merge branch 'master' into kellertuer/rework-high-level-interfaces
kellertuer Jun 13, 2024
58b7fad
Merge branch 'master' into kellertuer/rework-high-level-interfaces
kellertuer Jul 5, 2024
d6fa02b
Fix typos to correctly handle constraints
hajg-ijk Aug 5, 2024
e9e827d
Merge branch 'master' into kellertuer/rework-high-level-interfaces
kellertuer Aug 5, 2024
b2455c2
Fix two places, where I was a bit too fast.
kellertuer Aug 5, 2024
bf7451c
Maybe like this?
kellertuer Aug 5, 2024
509e6a3
Merge branch 'master' into kellertuer/rework-high-level-interfaces
kellertuer Aug 11, 2024
7ee5ee9
Reiterate on deprecated things (reintroduced by merging).
kellertuer Aug 11, 2024
f1c8fd6
rename set_manopt_parameter! to set_parameter and get_manopt_paramete…
kellertuer Aug 12, 2024
fb5a5c4
unify stabilisation through projection keyword.
kellertuer Aug 12, 2024
92ad1f9
remove `update_stopping_criterion` to update values in the stopping c…
kellertuer Aug 12, 2024
4ea449f
Fix docs.
kellertuer Aug 12, 2024
6d5c422
Fix quarto env.
kellertuer Aug 12, 2024
74fba25
Maybe tweak tutorials to still/again run?
kellertuer Aug 12, 2024
6e3dcb5
unify state constructors of ALM and ARC
kellertuer Aug 13, 2024
88445e5
Adapt EPM.
kellertuer Aug 13, 2024
6e95c7c
Finish DoC and DCPPA
kellertuer Aug 13, 2024
c3d20ec
Unify how p and X are passed to states overall in all states.
kellertuer Aug 13, 2024
edd3481
Fix all tests.
kellertuer Aug 13, 2024
f7363c6
Fix a typo in the quarto notebook.
kellertuer Aug 13, 2024
3147fb4
Sketch a first idea of a factory.
kellertuer Aug 14, 2024
3ea9052
Fix a few typos in the docs.
kellertuer Aug 14, 2024
033f9d7
Check and fix docs.
kellertuer Aug 14, 2024
86c6742
Work on test coverage for new state constructors.
kellertuer Aug 14, 2024
08a0511
Remove some deprecated old code and increase code cov
kellertuer Aug 14, 2024
649bc7e
increase test coverage.
kellertuer Aug 14, 2024
bb574c2
Fix scaling parameter in quasi newton. This resolvs #382
kellertuer Aug 16, 2024
b53f783
Start changing the docs snippets to using a dictionary approach inste…
kellertuer Aug 17, 2024
1e5f922
Twiddling a bit with the new factory.
kellertuer Aug 17, 2024
70045da
adds a note.
kellertuer Aug 17, 2024
70ab110
Apply suggestions from code review
kellertuer Aug 19, 2024
08a868c
Generalise the factory to more than just Direction Updates; address p…
kellertuer Aug 19, 2024
0670728
Merge branch 'kellertuer/rework-high-level-interfaces' of github.com:…
kellertuer Aug 19, 2024
1bf5570
Start meta fields in the glossary. Format can probably be improved
kellertuer Aug 19, 2024
574e158
Work a bit towards the glossary idea.
kellertuer Aug 19, 2024
085c976
order alphabetically.
kellertuer Aug 19, 2024
5430abb
Start introducing a proper glossary,
kellertuer Aug 20, 2024
585f71a
First base for a glossary.
kellertuer Aug 20, 2024
dec40cd
Trying the new glossary in a slightly larger scale, it seems to work …
kellertuer Aug 20, 2024
822856c
runs formatter.
kellertuer Aug 20, 2024
80c2aa0
A bit of further glossary work.
kellertuer Aug 20, 2024
b4e1a6a
Before moving to the factory lets first get the glossary established …
kellertuer Aug 21, 2024
2cda5e0
Replace further arguments.
kellertuer Aug 21, 2024
4f1fe6d
Finishing all argument glossary entries.
kellertuer Aug 21, 2024
bfe4d37
Simplify first Keyword which is now really much nicer to write.
kellertuer Aug 21, 2024
cb8c9a4
Codecov updates.
kellertuer Aug 21, 2024
bdcf267
acidentially removed a string short.
kellertuer Aug 21, 2024
bc0a120
Unify most retractions, inverse retraction and vector transport keywo…
kellertuer Aug 22, 2024
3ce1ccf
Refactor docs further.
kellertuer Aug 22, 2024
1884103
refactor docs for sub problem and state keywords
kellertuer Aug 22, 2024
212fa4e
📚Finish the glossary work
kellertuer Aug 22, 2024
e79295b
Refactor types and docs for ConjugateDescentCoefficient and DaiYuanCo…
kellertuer Aug 22, 2024
a5f9a3c
Move 3 more gradient rules over to the factory pattern.
kellertuer Aug 22, 2024
7c8a382
Finish. the remaining rules.
kellertuer Aug 23, 2024
79382e7
Add test coverage.
kellertuer Aug 23, 2024
5563c2d
Adds a final test for today.
kellertuer Aug 23, 2024
5598bab
Fix two typos.
kellertuer Aug 23, 2024
02c4689
And another final final test.
kellertuer Aug 23, 2024
d42990f
Refactor Armijo line search to use a factory.
kellertuer Aug 24, 2024
5b3956b
Finish Polyak docs.
kellertuer Aug 24, 2024
0e488b9
Fix docs.
kellertuer Aug 24, 2024
c387209
Fix/simplify tutorial.
kellertuer Aug 24, 2024
f81f048
Fix a typo, thanks to tutorial mode, there were important warning.
kellertuer Aug 24, 2024
04f56a5
Fix two typos in the docs.
kellertuer Aug 24, 2024
b23e549
Code coverage.
kellertuer Aug 24, 2024
cec7454
Trying to bump to Manifolds 0.10.
kellertuer Aug 25, 2024
8655671
Maybe it works now?
kellertuer Aug 25, 2024
9881f73
Move product manifold on alternating gradient to a new extension.
kellertuer Aug 25, 2024
5db1943
We are eneting dependency fun Part 3.
kellertuer Aug 25, 2024
def9c97
First time ever I am running int dependency hell with Julia. Somethin…
kellertuer Aug 25, 2024
508ad58
Maybe now?
kellertuer Aug 25, 2024
5f6f929
First step in wolfe powell.
kellertuer Aug 25, 2024
0dfb2e6
Minor fixes.
kellertuer Aug 25, 2024
6836dc8
fnumps.
kellertuer Aug 25, 2024
fce828f
Fnord.
kellertuer Aug 25, 2024
6e5cef9
Finish NM rework.
kellertuer Aug 26, 2024
108566d
Finish AWN.
kellertuer Aug 26, 2024
868c02d
Fix docs to render cases.
kellertuer Aug 26, 2024
9f48ba7
A few final tweaks to the docs.
kellertuer Aug 26, 2024
318bca3
Unify signatures, fix a few tex typos and improve english on the fact…
kellertuer Aug 27, 2024
0bf2244
runs formatter.
kellertuer Aug 27, 2024
2242159
Small fix in Polyak.
kellertuer Aug 27, 2024
949457a
Update .github/workflows/ci.yml
kellertuer Aug 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
ignore:
- "src/examples/.*"
- "src/tutorials/.*"
- "src/helpers/exports/.*" # exclude exports, since there are no CI tests for Asy-exports
- "src/documentation_glossary.jl" # exclude this since it is just use to create the docs and code cov goes bogus on this.
1 change: 0 additions & 1 deletion .vale.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ Packages = Google
[formats]
# code blocks with Julia in Markdown do not yet work well
qmd = md
jl = md

[docs/src/*.md]
BasedOnStyles = Vale, Google
Expand Down
99 changes: 94 additions & 5 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,105 @@ All notable Changes to the Julia package `Manopt.jl` will be documented in this
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.4.70] WIP

### Added

# [0.5.0] – August 29, 2024

This breaking update is mainly concerned with improving a unified experience through all solvers
and some usability improvements, such that for example the different gradient update rules are easier to specify.

In general we introduce a few factories, that avoid having to pass the manifold to keyword arguments

## Added

* A `ManifoldDefaultsFactory` that postpones the creation/allocation of manifold-specific fields in for example direction updates, step sizes and stopping criteria. As a rule of thumb, internal structures, like a solver state should store the final type. Any high-level interface, like the functions to start solvers, should accept such a factory in the appropriate places and call the internal `_produce_type(factory, M)`, for example before passing something to the state.
* a `documentation_glossary.jl` file containing a glossary of often used variables in fields, arguments, and keywords, to print them in a unified manner. The same for usual sections, tex, and math notation that is often used within the doc-strings.

## Changed

* Any `Stepsize` now hase a `Stepsize` struct used internally as the original `struct`s before. The newly exported terms aim to fit `stepsize=...` in naming and create a `ManifoldDefaultsFactory` instead, so that any stepsize can be created without explicitly specifying the manifold.
* `ConstantStepsize` is no longer exported, use `ConstantLength` instead. The length parameter is now a positional argument following the (optonal) manifold. Besides that `ConstantLength` works as before,just that omitting the manifold fills the one specified in the solver now.
* `DecreasingStepsize` is no longer exported, use `DecreasingLength` instead. `ConstantLength` works as before,just that omitting the manifold fills the one specified in the solver now.
* `ArmijoLinesearch` is now called `ArmijoLinesearchStepsize`. `ArmijoLinesearch` works as before,just that omitting the manifold fills the one specified in the solver now.
* `WolfePowellLinesearch` is now called `WolfePowellLinesearchStepsize`, its constant `c_1` is now unified with Armijo and called `sufficient_decrease`, `c_2` was renamed to `sufficient_curvature`. Besides that, `WolfePowellLinesearch` works as before, just that omitting the manifold fills the one specified in the solver now.
* `WolfePowellBinaryLinesearch` is now called `WolfePowellBinaryLinesearchStepsize`, its constant `c_1` is now unified with Armijo and called `sufficient_decrease`, `c_2` was renamed to `sufficient_curvature`. Besides that, `WolfePowellBinaryLinesearch` works as before, just that omitting the manifold fills the one specified in the solver now.
* `NonmonotoneLinesearch` is now called `NonmonotoneLinesearchStepsize`. `NonmonotoneLinesearch` works as before, just that omitting the manifold fills the one specified in the solver now.
* `AdaptiveWNGradient` is now called `AdaptiveWNGradientStepsize`. Its second positional argument, the gradient function was only evaluated once for the `gradient_bound` default, so it has been replaced by the keyword `X=` accepting a tangent vector. The last positional argument `p` has also been moved to a keyword argument. Besides that, `AdaptiveWNGradient` works as before, just that omitting the manifold fills the one specified in the solver now.
* Any `DirectionUpdateRule` now has the `Rule` in its name, since the original name is used to create the `ManifoldDefaultsFactory` instead. The original constructor now no longer requires the manifold as a parameter, that is later done in the factory. The `Rule` is, however, also no longer exported.
* `AverageGradient` is now called `AverageGradientRule`. `AverageGradient` works as before, but the manifold as its first parameter is no longer necessary and `p` is now a keyword argument.
* The `IdentityUpdateRule` now accepts a manifold optionally for consistency, and you can use `Gradient()` for short as well as its factory. Hence `direction=Gradient()` is now available.
* `MomentumGradient` is now called `MomentumGradientRule`. `MomentumGradient` works as before, but the manifold as its first parameter is no longer necessary and `p` is now a keyword argument.
* `Nesterov` is now called `NesterovRule`. `Nesterov` works as before, but the manifold as its first parameter is no longer necessary and `p` is now a keyword argument.
* `ConjugateDescentCoefficient` is now called `ConjugateDescentCoefficientRule`. `ConjugateDescentCoefficient` works as before, but can now use the factory in between
* the `ConjugateGradientBealeRestart` is now called `ConjugateGradientBealeRestartRule`. For the `ConjugateGradientBealeRestart` the manifold is now a first parameter, that is not necessary and no longer the `manifold=` keyword.
* `DaiYuanCoefficient` is now called `DaiYuanCoefficientRule`. For the `DaiYuanCoefficient` the manifold as its first parameter is no longer necessary and the vector transport has been unified/moved to the `vector_transport_method=` keyword.
* `FletcherReevesCoefficient` is now called `FletcherReevesCoefficientRule`. `FletcherReevesCoefficient` works as before, but can now use the factory in between
* `HagerZhangCoefficient` is now called `HagerZhangCoefficientRule`. For the `HagerZhangCoefficient` the manifold as its first parameter is no longer necessary and the vector transport has been unified/moved to the `vector_transport_method=` keyword.
* `HestenesStiefelCoefficient` is now called `HestenesStiefelCoefficientRule`. For the `HestenesStiefelCoefficient` the manifold as its first parameter is no longer necessary and the vector transport has been unified/moved to the `vector_transport_method=` keyword.
* `LiuStoreyCoefficient` is now called `LiuStoreyCoefficientRule`. For the `LiuStoreyCoefficient` the manifold as its first parameter is no longer necessary and the vector transport has been unified/moved to the `vector_transport_method=` keyword.
* `PolakRibiereCoefficient` is now called `PolakRibiereCoefficientRule`. For the `PolakRibiereCoefficient` the manifold as its first parameter is no longer necessary and the vector transport has been unified/moved to the `vector_transport_method=` keyword.
* the `SteepestDirectionUpdateRule` is now called `SteepestDescentCoefficientRule`. The `SteepestDescentCoefficient` is equivalent, but creates the new factory interims wise.
* `AbstractGradientGroupProcessor` is now called `AbstractGradientGroupDirectionRule`
* the `StochasticGradient` is now called `StochasticGradientRule`. The `StochasticGradient` is equivalent, but creates the new factory interims wise, so that the manifold is not longer necessary.
* the `AlternatingGradient` is now called `AlternatingGradientRule`.
The `AlternatingGradient` is equivalent, but creates the new factory interims wise, so that the manifold is not longer necessary.
* `quasi_Newton` had a keyword `scale_initial_operator=` that was inconsistently declared (sometimes bool, sometimes real) and was unused.
It is now called `initial_scale=1.0` and scales the initial (diagonal, unit) matrix within the approximation of the Hessian additionally to the $\frac{1}{\lVert g_k\rVert}$ scaling with the norm of the oldest gradient for the limited memory variant. For the full matrix variant the initial identity matrix is now scaled with this parameter.
* Unify doc strings and presentation of keyword arguments
* general indexing, for example in a vector, uses `i`
* index for inequality constraints is unified to `i` running from `1,...,m`
* index for equality constraints is unified to `j` running from `1,...,n`
* iterations are using now `k`
* Doc strings unified and even reusing similar docstring snippets.
* `get_manopt_parameter` has been renamed to `get_parameter` since it is internal,
so internally that is clear; accessing it from outside hence reads anyways `Manopt.get_parameter`
* `set_manopt_parameter!` has been renamed to `set_parameter!` since it is internal,
so internally that is clear; accessing it from outside hence reads `Manopt.set_parameter!`
* changed the `stabilize::Bool=` keyword in `quasi_Newton` to the more flexible `project!=`
keyword, this is also more in line with the other solvers. Internally the same is done
within the `QuasiNewtonLimitedMemoryDirectionUpdate`. To adapt,
* the previous `stabilize=true` is now set with `(project!)=embed_project!` in general,
and if the manifold is represented by points in the embedding, like the sphere, `(project!)=project!` suffices
* the new default is `(project!)=copyto!`, so by default no projection/stabilization is performed.
* the positional argument `p` (usually the last or the third to last if subsolvers existed) has been moved to a keyword argument `p=` in all State constructors
* in `NelderMeadState` the `population` moved from positional to keyword argument as well,
* the way to initialise sub solvers in the solver states has been unified In the new variant
* the `sub_problem` is always a positional argument; namely the last one
* if the `sub_state` is given as a optional positional argument after the problem, it has to be a manopt solver state
* you can provide the new `ClosedFormSolverState(e::AbstractEvaluationType)` for the state
to indicate that the `sub_problem` is a closed form solution (function call) and how it
has to be called
* if you do not provide the `sub_state` as positional, the keyword `evaluation=` is used
to generate the state `ClosedFormSolverState`.
* when previously `p` and eventually `X` where positional arguments, they are now moved
to keyword arguments of the same name for start point and tangent vector.
* in detail
* `AdaptiveRegularizationState(M, sub_problem [, sub_state]; kwargs...)` replaces
the (anyways unused) variant to only provide the objective; both `X` and `p` moved to keyword arguments.
* `AugmentedLagrangianMethodState(M, objective, sub_problem; evaluation=...)` was added
* ``AugmentedLagrangianMethodState(M, objective, sub_problem, sub_state; evaluation=...)` now has `p=rand(M)` as keyword argument instead of being the second positional one
* `ExactPenaltyMethodState(M, sub_problem; evaluation=...)` was added and `ExactPenaltyMethodState(M, sub_problem, sub_state; evaluation=...)` now has `p=rand(M)` as keyword argument instead of being the second positional one
* `DifferenceOfConvexState(M, sub_problem; evaluation=...)` was added and `DifferenceOfConvexState(M, sub_problem, sub_state; evaluation=...)` now has `p=rand(M)` as keyword argument instead of being the second positional one
* `DifferenceOfConvexProximalState(M, sub_problem; evaluation=...)` was added and `DifferenceOfConvexProximalState(M, sub_problem, sub_state; evaluation=...)` now has `p=rand(M)` as keyword argument instead of being the second positional one
* bumped `Manifolds.jl`to version 0.10; this mainly means that any algorithm working on a productmanifold and requiring `ArrayPartition` now has to explicitly do `using RecursiveArrayTools`.
### Fixed

* the `AverageGradientRule` filled its internal vector of gradients wrongly – or mixed it up in parallel transport. This is now fixed.

### Removed

* the `convex_bundle_method` and its `ConvexBundleMethodState` no longer accept the keywords `k_size`, `p_estimate` nor `ϱ`, they are superseded by just providing `k_max`.
* the `truncated_conjugate_gradient_descent(M, f, grad_f, hess_f)` has the Hessian now
a mandatory argument. To use the old variant,
provide `ApproxHessianFiniteDifference(M, copy(M, p), grad_f)` to `hess_f` directly.
* all deprecated keyword arguments and a few function signatures were removed:
* `get_equality_constraints`, `get_equality_constraints!`, `get_inequality_constraints`, `get_inequality_constraints!` are removed. Use their singular forms and set the index to `:` instead.
* `StopWhenChangeLess(ε)` is removed, use ``StopWhenChangeLess(M, ε)` instead to fill for example the retraction properly used to determine the change
* In the `WolfePowellLinesearch` and `WolfeBinaryLinesearch`the `linesearch_stopsize=` keyword is replaced by `stop_when_stepsize_less=`
* `DebugChange` and `RecordChange` had a `manifold=` and a `invretr` keyword that were replaced by the first positional argument `M` and `inverse_retraction_method=`, respectively
* in the `NonlinearLeastSquaresObjective` and `LevenbergMarquardt` the `jacB=` keyword is now called `jacobian_tangent_basis=`
* in `particle_swarm` the `n=` keyword is replaced by `swarm_size=`.
* `update_stopping_criterion!` has been removed and unified with `set_parameter!`. The code adaptions are
* to set a parameter of a stopping criterion, just replace `update_stopping_criterion!(sc, :Val, v)` with `set_parameter!(sc, :Val, v)`
* to update a stopping criterion in a solver state, replace the old `update_stopping_criterion!(state, :Val, v)` tat passed down to the stopping criterion by the explicit pass down with `set_parameter!(state, :StoppingCriterion, :Val, v)`


## [0.4.69] – August 3, 2024

Expand Down
14 changes: 9 additions & 5 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "Manopt"
uuid = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5"
authors = ["Ronny Bergmann <manopt@ronnybergmann.net>"]
version = "0.4.70"
version = "0.5.0"

[deps]
ColorSchemes = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
Expand All @@ -27,13 +27,15 @@ LineSearches = "d3d80556-e9d4-5f37-9878-2ab0fcc64255"
Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19"
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
RipQP = "1e40b3f8-35eb-4cd8-8edd-3e515bb9de08"

[extensions]
ManoptJuMPExt = "JuMP"
ManoptLRUCacheExt = "LRUCache"
ManoptLineSearchesExt = "LineSearches"
ManoptManifoldsExt = "Manifolds"
ManoptRecursiveArrayToolsExt = "RecursiveArrayTools"
ManoptRipQPQuadraticModelsExt = ["RipQP", "QuadraticModels"]

[compat]
Expand All @@ -49,21 +51,22 @@ LRUCache = "1.4"
LineSearches = "7.2.0"
LinearAlgebra = "1.6"
ManifoldDiff = "0.3.8"
Manifolds = "0.9.11"
Manifolds = "0.9.11, 0.10"
ManifoldsBase = "0.15.10"
ManoptExamples = "0.1.4"
ManoptExamples = "0.1.8"
Markdown = "1.6"
Plots = "1.30"
Preferences = "1.4"
Printf = "1.6"
QuadraticModels = "0.9"
Random = "1.6"
RecursiveArrayTools = "2, 3"
Requires = "0.5, 1"
RipQP = "0.6.4"
SparseArrays = "1.6"
Statistics = "1.6"
Test = "1.6"
julia = "1.6"
julia = "1.8"

[extras]
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
Expand All @@ -76,8 +79,9 @@ Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e"
ManoptExamples = "5b8d5e80-5788-45cb-83d6-5e8f1484217d"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19"
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
RipQP = "1e40b3f8-35eb-4cd8-8edd-3e515bb9de08"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Test", "Aqua", "ForwardDiff", "JuMP", "Manifolds", "ManoptExamples", "ManifoldDiff", "Plots", "LineSearches", "LRUCache", "RipQP", "QuadraticModels"]
test = ["Test", "Aqua", "ForwardDiff", "JuMP", "Manifolds", "ManoptExamples", "ManifoldDiff", "Plots", "LineSearches", "LRUCache", "RecursiveArrayTools", "RipQP", "QuadraticModels"]
6 changes: 4 additions & 2 deletions docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
RipQP = "1e40b3f8-35eb-4cd8-8edd-3e515bb9de08"

[compat]
Expand All @@ -39,9 +40,10 @@ JuMP = "1"
LRUCache = "1"
LineSearches = "7"
Literate = "2"
Manifolds = "0.8.81, 0.9"
Manifolds = "0.8.81, 0.9, 0.10"
ManifoldsBase = "0.14.12, 0.15"
Manopt = "0.4"
Manopt = "0.4, 0.5"
Plots = "1"
QuadraticModels = "0.9.6"
RecursiveArrayTools = "2, 3"
RipQP = "0.6.4"
4 changes: 3 additions & 1 deletion docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ if "--quarto" ∈ ARGS
tutorials_folder = (@__DIR__) * "/../tutorials"
# instantiate the tutorials environment if necessary
Pkg.activate(tutorials_folder)
# For a breaking release -> also set the tutorials folder to the most recent version
Pkg.develop(PackageSpec(; path=(@__DIR__) * "/../"))
Pkg.resolve()
Pkg.instantiate()
Pkg.build("IJulia") # build `IJulia` to the right version.
Expand All @@ -72,7 +74,7 @@ end
# (c) load necessary packages for the docs
using Documenter
using DocumenterCitations, DocumenterInterLinks
using JuMP, LineSearches, LRUCache, Manopt, Manifolds, Plots
using JuMP, LineSearches, LRUCache, Manopt, Manifolds, Plots, RecursiveArrayTools
using RipQP, QuadraticModels

# (d) add contributing.md to docs
Expand Down
Loading
Loading