Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
49 changes: 32 additions & 17 deletions lib/OptimizationManopt/Project.toml
Original file line number Diff line number Diff line change
@@ -1,47 +1,62 @@
name = "OptimizationManopt"
uuid = "e57b7fff-7ee7-4550-b4f0-90e9476e9fb6"
authors = ["Mateusz Baran <mateuszbaran89@gmail.com>", "Ronny Bergmann <manopt@ronnybergmann.net>"]
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"]
17 changes: 11 additions & 6 deletions lib/OptimizationManopt/src/OptimizationManopt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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.
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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
Expand Down
7 changes: 6 additions & 1 deletion lib/OptimizationManopt/test/qa/qa.jl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading