@@ -325,6 +325,8 @@ $(_kwargs(:sub_problem; default = "`[`DefaultManoptProblem`](@ref)`(M, sub_objec
325325$(_kwargs (:sub_state ; default = " `[`QuasiNewtonState`](@ref)` " )) , where more precisely
326326 as quasi newton method, the [`QuasiNewtonLimitedMemoryDirectionUpdate`](@ref) with [`InverseBFGS`](@ref) is used.
327327* `sub_stopping_criterion::StoppingCriterion=`[`StopAfterIteration`](@ref)`(300)`$(_sc (:Any )) [`StopWhenGradientNormLess`](@ref)`(ϵ)`$(_sc (:Any )) [`StopWhenStepsizeLess`](@ref)`(1e-8)`,
328+ * `sub_direction_update::AbstractQuasiNewtonDirectionUpdate=`[`QuasiNewtonLimitedMemoryDirectionUpdate`](@ref)`(M, copy(M, p), InverseBFGS(), min(manifold_dimension(M), 30))`:
329+ the direction update rule for the sub solver, where by default a limited memory quasi-Newton method with inverse BFGS update is used.
328330
329331
330332For the `range`s of the constraints' gradient, other power manifold tangent space representations,
@@ -452,6 +454,9 @@ function augmented_Lagrangian_method!(
452454 sub_cost = AugmentedLagrangianCost (cmo, ρ, μ, λ),
453455 sub_grad = AugmentedLagrangianGrad (cmo, ρ, μ, λ),
454456 sub_kwargs = (;),
457+ sub_direction_update:: AbstractQuasiNewtonDirectionUpdate = QuasiNewtonLimitedMemoryDirectionUpdate (
458+ M, copy (M, p), InverseBFGS (), min (manifold_dimension (M), 30 )
459+ ),
455460 sub_stopping_criterion:: StoppingCriterion = StopAfterIteration (300 ) |
456461 StopWhenGradientNormLess (ϵ) |
457462 StopWhenStepsizeLess (1.0e-8 ),
@@ -460,9 +465,7 @@ function augmented_Lagrangian_method!(
460465 M;
461466 p = copy (M, p),
462467 X = zero_vector (M, p),
463- direction_update = QuasiNewtonLimitedMemoryDirectionUpdate (
464- M, copy (M, p), InverseBFGS (), min (manifold_dimension (M), 30 )
465- ),
468+ direction_update = sub_direction_update,
466469 stopping_criterion = sub_stopping_criterion,
467470 stepsize = default_stepsize (M, QuasiNewtonState),
468471 sub_kwargs... ,
0 commit comments