From 88e06da901ea0b2f8778829e8fe53bc1c70d79f5 Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Tue, 29 Apr 2025 12:29:58 -0400 Subject: [PATCH 1/2] update ManOpt and associated packages --- lib/OptimizationManopt/Project.toml | 8 ++++---- lib/OptimizationManopt/src/OptimizationManopt.jl | 6 +++--- lib/OptimizationManopt/test/runtests.jl | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/OptimizationManopt/Project.toml b/lib/OptimizationManopt/Project.toml index b767b42d8..6f4d4810b 100644 --- a/lib/OptimizationManopt/Project.toml +++ b/lib/OptimizationManopt/Project.toml @@ -14,10 +14,10 @@ Reexport = "189a3867-3050-52da-a836-e630ba90ab69" [compat] LinearAlgebra = "1.10" -ManifoldDiff = "0.3.10" -Manifolds = "0.9.18" -ManifoldsBase = "0.15.10" -Manopt = "0.4.63" +ManifoldDiff = "0.3.10, 0.4" +Manifolds = "0.9.18, 0.10" +ManifoldsBase = "0.15.10, 1" +Manopt = "0.5" Optimization = "4" Reexport = "1.2" julia = "1.9" diff --git a/lib/OptimizationManopt/src/OptimizationManopt.jl b/lib/OptimizationManopt/src/OptimizationManopt.jl index 6430891c3..0522bfddd 100644 --- a/lib/OptimizationManopt/src/OptimizationManopt.jl +++ b/lib/OptimizationManopt/src/OptimizationManopt.jl @@ -67,7 +67,7 @@ function call_manopt_optimizer( x0; stopping_criterion::Union{Manopt.StoppingCriterion, Manopt.StoppingCriterionSet}, evaluation::AbstractEvaluationType = Manopt.AllocatingEvaluation(), - stepsize::Stepsize = ArmijoLinesearch(M), + stepsize::Stepsize = ArmijoLinesearchStepsize(M), kwargs...) opts = gradient_descent(M, loss, @@ -174,7 +174,7 @@ function call_manopt_optimizer(M::Manopt.AbstractManifold, stepsize = WolfePowellLinesearch(M; retraction_method = retraction_method, vector_transport_method = vector_transport_method, - linesearch_stopsize = 1e-12), + stop_when_stepsize_less = 1e-12), kwargs... ) opts = quasi_Newton(M, @@ -308,7 +308,7 @@ function call_manopt_optimizer(M::ManifoldsBase.AbstractManifold, stopping_criterion::Union{Manopt.StoppingCriterion, Manopt.StoppingCriterionSet}, evaluation::AbstractEvaluationType = InplaceEvaluation(), retraction_method::AbstractRetractionMethod = default_retraction_method(M), - stepsize::Stepsize = DecreasingStepsize(; length = 2.0, shift = 2), + stepsize::Stepsize = DecreasingLength(; length = 2.0, shift = 2), kwargs...) opt = Frank_Wolfe_method(M, loss, diff --git a/lib/OptimizationManopt/test/runtests.jl b/lib/OptimizationManopt/test/runtests.jl index 2c84d8623..c92e21328 100644 --- a/lib/OptimizationManopt/test/runtests.jl +++ b/lib/OptimizationManopt/test/runtests.jl @@ -33,7 +33,7 @@ end x0 = zeros(2) p = [1.0, 100.0] - stepsize = Manopt.ArmijoLinesearch(R2) + stepsize = Manopt.ArmijoLinesearch() opt = OptimizationManopt.GradientDescentOptimizer() optprob_forwarddiff = OptimizationFunction(rosenbrock, Optimization.AutoEnzyme()) From daa0b2ed47844d49aabc194f7b8798cd1bc24463 Mon Sep 17 00:00:00 2001 From: Vaibhav Dixit Date: Tue, 29 Apr 2025 16:39:40 -0400 Subject: [PATCH 2/2] Update stepsize kwargs to use the default constructor --- lib/OptimizationManopt/src/OptimizationManopt.jl | 6 +++--- lib/OptimizationManopt/test/runtests.jl | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/OptimizationManopt/src/OptimizationManopt.jl b/lib/OptimizationManopt/src/OptimizationManopt.jl index 0522bfddd..d0590b3bb 100644 --- a/lib/OptimizationManopt/src/OptimizationManopt.jl +++ b/lib/OptimizationManopt/src/OptimizationManopt.jl @@ -67,7 +67,7 @@ function call_manopt_optimizer( x0; stopping_criterion::Union{Manopt.StoppingCriterion, Manopt.StoppingCriterionSet}, evaluation::AbstractEvaluationType = Manopt.AllocatingEvaluation(), - stepsize::Stepsize = ArmijoLinesearchStepsize(M), + stepsize::Stepsize = default_stepsize(M, GradientDescentState), kwargs...) opts = gradient_descent(M, loss, @@ -111,7 +111,7 @@ function call_manopt_optimizer(M::ManifoldsBase.AbstractManifold, x0; stopping_criterion::Union{Manopt.StoppingCriterion, Manopt.StoppingCriterionSet}, evaluation::AbstractEvaluationType = InplaceEvaluation(), - stepsize::Stepsize = ArmijoLinesearch(M), + stepsize::Stepsize = default_stepsize(M, ConjugateGradientDescentState), kwargs...) opts = conjugate_gradient_descent(M, loss, @@ -308,7 +308,7 @@ function call_manopt_optimizer(M::ManifoldsBase.AbstractManifold, stopping_criterion::Union{Manopt.StoppingCriterion, Manopt.StoppingCriterionSet}, evaluation::AbstractEvaluationType = InplaceEvaluation(), retraction_method::AbstractRetractionMethod = default_retraction_method(M), - stepsize::Stepsize = DecreasingLength(; length = 2.0, shift = 2), + stepsize::Stepsize = default_stepsize(M, FrankWolfeState), kwargs...) opt = Frank_Wolfe_method(M, loss, diff --git a/lib/OptimizationManopt/test/runtests.jl b/lib/OptimizationManopt/test/runtests.jl index c92e21328..f1ea1918c 100644 --- a/lib/OptimizationManopt/test/runtests.jl +++ b/lib/OptimizationManopt/test/runtests.jl @@ -33,7 +33,9 @@ end x0 = zeros(2) p = [1.0, 100.0] - stepsize = Manopt.ArmijoLinesearch() + stepsize = default_stepsize( + R2, GradientDescentState + ) opt = OptimizationManopt.GradientDescentOptimizer() optprob_forwarddiff = OptimizationFunction(rosenbrock, Optimization.AutoEnzyme()) @@ -65,13 +67,12 @@ end x0 = zeros(2) p = [1.0, 100.0] - stepsize = Manopt.ArmijoLinesearch(R2) opt = OptimizationManopt.ConjugateGradientDescentOptimizer() optprob = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff()) prob = OptimizationProblem(optprob, x0, p; manifold = R2) - sol = Optimization.solve(prob, opt, stepsize = stepsize) + sol = Optimization.solve(prob, opt) @test sol.minimum < 0.5 end