diff --git a/lib/OptimizationManopt/Project.toml b/lib/OptimizationManopt/Project.toml index 2125d2ba8..d4079d768 100644 --- a/lib/OptimizationManopt/Project.toml +++ b/lib/OptimizationManopt/Project.toml @@ -1,47 +1,62 @@ name = "OptimizationManopt" uuid = "e57b7fff-7ee7-4550-b4f0-90e9476e9fb6" authors = ["Mateusz Baran ", "Ronny Bergmann "] -version = "1.3.2" +version = "1.3.3" [deps] -Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" -OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb" +Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -ManifoldsBase = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" ManifoldDiff = "af67fdf4-a580-4b9f-bbec-742ef357defd" Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e" +ManifoldsBase = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" +Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" +OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" [extras] -Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" +FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" -RipQP = "1e40b3f8-35eb-4cd8-8edd-3e515bb9de08" +JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" QuadraticModels = "f468eda6-eac5-11e8-05a5-ff9e497bcd19" -ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +RipQP = "1e40b3f8-35eb-4cd8-8edd-3e515bb9de08" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" -FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" -Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" [sources] OptimizationBase = {path = "../OptimizationBase"} [compat] -Pkg = "1" -SafeTestsets = "0.1" -julia = "1.10" +Aqua = "0.8" +Dates = "1.10" DifferentiationInterface = "0.7" -Manopt = "0.5.25" -OptimizationBase = "5.1" +Enzyme = "0.13" +FiniteDiff = "2" +ForwardDiff = "0.10, 1" +JET = "0.9, 0.10, 0.11" LinearAlgebra = "1.10" -ManifoldsBase = "1" ManifoldDiff = "0.4" -Manifolds = "0.10" +Manifolds = "0.10, 0.11" +ManifoldsBase = "1, 2" +Manopt = "0.5.25" +OptimizationBase = "5.1" +Pkg = "1" +QuadraticModels = "0.9" +Random = "1.10" Reexport = "1.2" +ReverseDiff = "1" +RipQP = "0.6" +SafeTestsets = "0.1" SciMLBase = "2.122.1, 3" +Test = "1.10" +Zygote = "0.6, 0.7" +julia = "1.10" [targets] test = ["DifferentiationInterface", "Enzyme", "ForwardDiff", "FiniteDiff", "QuadraticModels", "Random", "ReverseDiff", "RipQP", "Test", "Zygote", "SafeTestsets", "Pkg"] diff --git a/lib/OptimizationManopt/src/OptimizationManopt.jl b/lib/OptimizationManopt/src/OptimizationManopt.jl index 1a4d8c4b2..5b7ce8f95 100644 --- a/lib/OptimizationManopt/src/OptimizationManopt.jl +++ b/lib/OptimizationManopt/src/OptimizationManopt.jl @@ -2,7 +2,12 @@ module OptimizationManopt using Reexport @reexport using Manopt -using OptimizationBase, Manopt, ManifoldsBase, ManifoldDiff, SciMLBase +import OptimizationBase +using OptimizationBase: @SciMLMessage +using ManifoldsBase, ManifoldDiff +import SciMLBase +using SciMLBase: ReturnCode +using Dates: Millisecond """ abstract type AbstractManoptOptimizer end @@ -34,7 +39,7 @@ function __map_optimizer_args!( end if !isnothing(maxtime) - push!(criteria, Manopt.StopAfter(maxtime)) + push!(criteria, Manopt.StopAfter(Millisecond(round(Int, maxtime * 1000)))) end if !isnothing(abstol) @@ -279,7 +284,7 @@ function _default_convergence_criterion(::AbstractManoptOptimizer, M, abstol) return Manopt.StopWhenChangeLess(M, abstol) end -function build_loss(f::OptimizationFunction, prob, cb) +function build_loss(f::OptimizationBase.OptimizationFunction, prob, cb) # TODO: I do not understand this. Why is the manifold not used? # Either this is an Euclidean cost, then we should probably still call `embed`, # or it is not, then we need M. @@ -291,7 +296,7 @@ function build_loss(f::OptimizationFunction, prob, cb) end end -function build_gradF(f::OptimizationFunction{true}) +function build_gradF(f::OptimizationBase.OptimizationFunction{true}) function g(M::AbstractManifold, G, θ) f.grad(G, θ) return G .= riemannian_gradient(M, θ, G) @@ -304,7 +309,7 @@ function build_gradF(f::OptimizationFunction{true}) return g end -function build_hessF(f::OptimizationFunction{true}) +function build_hessF(f::OptimizationBase.OptimizationFunction{true}) function h(M::AbstractManifold, H1, θ, X) H = zeros(eltype(θ), length(θ)) f.hv(H, θ, X) @@ -322,7 +327,7 @@ function build_hessF(f::OptimizationFunction{true}) return h end -function SciMLBase.__solve(cache::OptimizationCache{O}) where {O <: AbstractManoptOptimizer} +function SciMLBase.__solve(cache::OptimizationBase.OptimizationCache{O}) where {O <: AbstractManoptOptimizer} local x, cur, state manifold = cache.manifold diff --git a/lib/OptimizationManopt/test/qa/qa.jl b/lib/OptimizationManopt/test/qa/qa.jl index c33d117c1..04e04a0ea 100644 --- a/lib/OptimizationManopt/test/qa/qa.jl +++ b/lib/OptimizationManopt/test/qa/qa.jl @@ -2,7 +2,12 @@ using OptimizationManopt, Aqua, JET using Test @testset "Aqua" begin - Aqua.test_all(OptimizationManopt) + # Manifolds is declared because the curvature analysis path may pull it in, + # but no symbol from it is currently used in src — ignore it for now. + Aqua.test_all( + OptimizationManopt; + stale_deps = (; ignore = [:Manifolds]) + ) end @testset "JET static analysis" begin