From 3291ec3cc076fab80a107f9998dc3ccf476a2b55 Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Mon, 24 Aug 2026 18:17:05 +0200 Subject: [PATCH 1/7] Fix penalty parameter setting in augmented Lagrangian method --- Changelog.md | 7 +++++++ Project.toml | 2 +- src/solvers/augmented_Lagrangian_method.jl | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Changelog.md b/Changelog.md index 61774e1efb..cb6f71ad4f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,13 @@ The file was started with Version `0.4`. 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.6.6] unreleased + +### Fixed + +* `augmented_Lagrangian_method` set the penalty parameter `ρ` of the sub problem's cost to the + constant `1/3` instead of the current `alms.ρ`, while its gradient did receive `alms.ρ`. (#TODO) + ## [0.6.5] August 22, 2026 ### Added diff --git a/Project.toml b/Project.toml index aebbeb8b0c..11f0d70373 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "Manopt" uuid = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" -version = "0.6.5" +version = "0.6.6" [workspace] projects = ["test", "docs", "tutorials"] diff --git a/src/solvers/augmented_Lagrangian_method.jl b/src/solvers/augmented_Lagrangian_method.jl index c94615c4b2..8bcfdc127f 100644 --- a/src/solvers/augmented_Lagrangian_method.jl +++ b/src/solvers/augmented_Lagrangian_method.jl @@ -480,7 +480,7 @@ end function step_solver!(mp::AbstractManoptProblem, alms::AugmentedLagrangianMethodState, iter) M = get_manifold(mp) # use subsolver to minimize the augmented Lagrangian - set_parameter!(alms.sub_problem, Val(:Objective), Val(:Cost), Val(:ρ), 1 / 3) + set_parameter!(alms.sub_problem, Val(:Objective), Val(:Cost), Val(:ρ), alms.ρ) set_parameter!(alms.sub_problem, Val(:Objective), Val(:Cost), Val(:μ), alms.μ) set_parameter!(alms.sub_problem, Val(:Objective), Val(:Cost), Val(:λ), alms.λ) set_parameter!(alms.sub_problem, Val(:Objective), Val(:Gradient), Val(:ρ), alms.ρ) From 43725365b37cda2809009f1a91ccf28d31e85ea4 Mon Sep 17 00:00:00 2001 From: Joshua Lampert <51029046+JoshuaLampert@users.noreply.github.com> Date: Mon, 24 Aug 2026 18:32:19 +0200 Subject: [PATCH 2/7] update PR number --- Changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index cb6f71ad4f..898a5a82fb 100644 --- a/Changelog.md +++ b/Changelog.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed * `augmented_Lagrangian_method` set the penalty parameter `ρ` of the sub problem's cost to the - constant `1/3` instead of the current `alms.ρ`, while its gradient did receive `alms.ρ`. (#TODO) + constant `1/3` instead of the current `alms.ρ`, while its gradient did receive `alms.ρ`. (#637) ## [0.6.5] August 22, 2026 From 1dd84fab2607d45d1be65a6723835e6d57698e30 Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Mon, 24 Aug 2026 19:45:03 +0200 Subject: [PATCH 3/7] add a test and fix type parameter in AugmentedLagrangianCost --- Changelog.md | 5 +++++ src/commons/sub_objectives.jl | 2 +- test/solvers/test_augmented_lagrangian.jl | 24 +++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 898a5a82fb..fdeadb937f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -12,6 +12,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * `augmented_Lagrangian_method` set the penalty parameter `ρ` of the sub problem's cost to the constant `1/3` instead of the current `alms.ρ`, while its gradient did receive `alms.ρ`. (#637) +* `AugmentedLagrangianCost` declared its supertype as `AbstractConstrainedFunction{CO}` with the + objective type `CO` instead of the type `T` of the dual variables, as `AugmentedLagrangianGrad` + does. The methods `set_parameter!(::AbstractConstrainedFunction{T}, ::Val{:μ}, ::T)` and the one + for `:λ` hence never applied to the cost, and since `set_parameter!` falls back to a no-op, its + `μ` and `λ` silently kept their initial values for the whole solver run. (#637) ## [0.6.5] August 22, 2026 diff --git a/src/commons/sub_objectives.jl b/src/commons/sub_objectives.jl index 31e9b9c9d8..fabc69a491 100644 --- a/src/commons/sub_objectives.jl +++ b/src/commons/sub_objectives.jl @@ -41,7 +41,7 @@ $_doc_AL_Cost_long AugmentedLagrangianCost(co, ρ, μ, λ) """ -mutable struct AugmentedLagrangianCost{CO, R, T} <: AbstractConstrainedFunction{CO} +mutable struct AugmentedLagrangianCost{CO, R, T} <: AbstractConstrainedFunction{T} co::CO ρ::R μ::T diff --git a/test/solvers/test_augmented_lagrangian.jl b/test/solvers/test_augmented_lagrangian.jl index ba10a4cd4e..a64eb5b07f 100644 --- a/test/solvers/test_augmented_lagrangian.jl +++ b/test/solvers/test_augmented_lagrangian.jl @@ -79,4 +79,28 @@ using LinearAlgebra: I, tr @test q isa Real @test f(M, q) < f(M, 4) end + @testset "Sub problem penalty parameters" begin + # The cost and the gradient of the sub problem have to be set up with the same penalty + # parameter ρ. If they disagree, the sub solver minimises a different function than the + # one it computes gradients for, and since ρ grows geometrically the two drift apart. + M = Euclidean(2) + f(M, p) = p[1] + grad_f(M, p) = [1.0, 0.0] + h(M, p) = [p[1]^2 + p[2]^2 - 1.0] + grad_h(M, p) = [[2 * p[1], 2 * p[2]]] + s = augmented_Lagrangian_method( + M, f, grad_f, [0.5, 0.5]; + h = h, grad_h = grad_h, equality_constraints = 1, + stopping_criterion = StopAfterIteration(20), return_state = true, + ) + sub_objective = Manopt.get_objective(s.sub_problem) + sub_cost = Manopt.get_cost_function(sub_objective) + # the gradient is wrapped for the in-place dispatch, so it needs one more unwrap + sub_gradient = sub_objective.functions.gradient.f + @test sub_cost.ρ == sub_gradient.ρ + @test sub_cost.μ == sub_gradient.μ + @test sub_cost.λ == sub_gradient.λ + # with matching parameters the solver reaches the minimiser (-1, 0) + @test distance(M, get_solver_result(s), [-1.0, 0.0]) < 1.0e-3 + end end From 14cb7d9cf0d2db755647346052eb53cde07d978e Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Mon, 24 Aug 2026 19:45:29 +0200 Subject: [PATCH 4/7] add date to release --- Changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index fdeadb937f..e070ef8f3c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,7 +6,7 @@ The file was started with Version `0.4`. 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.6.6] unreleased +## [0.6.6] August 24, 2026 ### Fixed From c6a013ac71c2f5de9b6ace005001a022512df68f Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Mon, 24 Aug 2026 21:41:19 +0200 Subject: [PATCH 5/7] remove type parameter from signature in set_parameter! --- Changelog.md | 8 +++----- src/base/function/constrained.jl | 4 ++-- src/commons/sub_objectives.jl | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Changelog.md b/Changelog.md index e070ef8f3c..1a98ed48c2 100644 --- a/Changelog.md +++ b/Changelog.md @@ -12,11 +12,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * `augmented_Lagrangian_method` set the penalty parameter `ρ` of the sub problem's cost to the constant `1/3` instead of the current `alms.ρ`, while its gradient did receive `alms.ρ`. (#637) -* `AugmentedLagrangianCost` declared its supertype as `AbstractConstrainedFunction{CO}` with the - objective type `CO` instead of the type `T` of the dual variables, as `AugmentedLagrangianGrad` - does. The methods `set_parameter!(::AbstractConstrainedFunction{T}, ::Val{:μ}, ::T)` and the one - for `:λ` hence never applied to the cost, and since `set_parameter!` falls back to a no-op, its - `μ` and `λ` silently kept their initial values for the whole solver run. (#637) +* `set_parameter!` for `:μ` and `:λ` tied the dual variable's type to the type parameter of + `AbstractConstrainedFunction`. It hence never applied to `AugmentedLagrangianCost` and, falling + back to a no-op, silently left its `μ` and `λ` at their initial values. (#637) ## [0.6.5] August 22, 2026 diff --git a/src/base/function/constrained.jl b/src/base/function/constrained.jl index cec00bf082..87038675b5 100644 --- a/src/base/function/constrained.jl +++ b/src/base/function/constrained.jl @@ -8,12 +8,12 @@ constraints of type `T`. """ abstract type AbstractConstrainedFunction{T} <: AbstractManifoldFunction end -function set_parameter!(acf::AbstractConstrainedFunction{T}, ::Val{:μ}, μ::T) where {T} +function set_parameter!(acf::AbstractConstrainedFunction, ::Val{:μ}, μ) acf.μ = μ return acf end get_parameter(acf::AbstractConstrainedFunction, ::Val{:μ}) = acf.μ -function set_parameter!(acf::AbstractConstrainedFunction{T}, ::Val{:λ}, λ::T) where {T} +function set_parameter!(acf::AbstractConstrainedFunction, ::Val{:λ}, λ) acf.λ = λ return acf end diff --git a/src/commons/sub_objectives.jl b/src/commons/sub_objectives.jl index fabc69a491..31e9b9c9d8 100644 --- a/src/commons/sub_objectives.jl +++ b/src/commons/sub_objectives.jl @@ -41,7 +41,7 @@ $_doc_AL_Cost_long AugmentedLagrangianCost(co, ρ, μ, λ) """ -mutable struct AugmentedLagrangianCost{CO, R, T} <: AbstractConstrainedFunction{T} +mutable struct AugmentedLagrangianCost{CO, R, T} <: AbstractConstrainedFunction{CO} co::CO ρ::R μ::T From 03fd9b1a9febf8fafb2282b5586fb43102639574 Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Tue, 25 Aug 2026 09:20:31 +0200 Subject: [PATCH 6/7] adjust release date --- Changelog.md | 4 +- run/Manifest-v.1.12.toml | 313 +++++++++++++++++++++++++++++++++++++++ run/Project.toml | 6 + run/debug_debug.jl | 21 +++ 4 files changed, 342 insertions(+), 2 deletions(-) create mode 100644 run/Manifest-v.1.12.toml create mode 100644 run/Project.toml create mode 100644 run/debug_debug.jl diff --git a/Changelog.md b/Changelog.md index 1a98ed48c2..7f71db88da 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,7 +6,7 @@ The file was started with Version `0.4`. 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.6.6] August 24, 2026 +## [0.6.6] August 25, 2026 ### Fixed @@ -1477,4 +1477,4 @@ This is the first version with an actual Changelog entry First public release, first registered and [announced version](https://discourse.julialang.org/t/ann-manopt-jl/24906) of `Manopt.jl`. This version still also included what is now `Manifolds.jl`. -The first commit that started `Manopt.jl` was done on November 25, 2016. \ No newline at end of file +The first commit that started `Manopt.jl` was done on November 25, 2016. diff --git a/run/Manifest-v.1.12.toml b/run/Manifest-v.1.12.toml new file mode 100644 index 0000000000..62b87a9af2 --- /dev/null +++ b/run/Manifest-v.1.12.toml @@ -0,0 +1,313 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.12.4" +manifest_format = "2.0" +project_hash = "4b801e82b4f3e023f40f44128a02ee761eac1dd3" + +[[deps.ADTypes]] +git-tree-sha1 = "f7304359109c768cf32dc5fa2d371565bb63b68a" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "1.21.0" + + [deps.ADTypes.extensions] + ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" + ADTypesEnzymeCoreExt = "EnzymeCore" + + [deps.ADTypes.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "b0fd3f56fa442f81e0a47815c92245acfaaa4e34" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.31.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.12.1" +weakdeps = ["StyledStrings"] + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.11.0" + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + + [deps.ColorVectorSpace.weakdeps] + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.13.1" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.3.0+1" + +[[deps.DataStructures]] +deps = ["OrderedCollections"] +git-tree-sha1 = "e357641bb3e0638d353c4b29ea0e40ea644066a6" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.19.3" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" + +[[deps.DifferentiationInterface]] +deps = ["ADTypes", "LinearAlgebra"] +git-tree-sha1 = "44d9321761ed99e1d444b5081b3166d3259adcf0" +uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +version = "0.7.14" + + [deps.DifferentiationInterface.extensions] + DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" + DifferentiationInterfaceDiffractorExt = "Diffractor" + DifferentiationInterfaceEnzymeExt = ["EnzymeCore", "Enzyme"] + DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" + DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" + DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" + DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] + DifferentiationInterfaceGPUArraysCoreExt = "GPUArraysCore" + DifferentiationInterfaceGTPSAExt = "GTPSA" + DifferentiationInterfaceMooncakeExt = "Mooncake" + DifferentiationInterfacePolyesterForwardDiffExt = ["PolyesterForwardDiff", "ForwardDiff", "DiffResults"] + DifferentiationInterfaceReverseDiffExt = ["ReverseDiff", "DiffResults"] + DifferentiationInterfaceSparseArraysExt = "SparseArrays" + DifferentiationInterfaceSparseConnectivityTracerExt = "SparseConnectivityTracer" + DifferentiationInterfaceSparseMatrixColoringsExt = "SparseMatrixColorings" + DifferentiationInterfaceStaticArraysExt = "StaticArrays" + DifferentiationInterfaceSymbolicsExt = "Symbolics" + DifferentiationInterfaceTrackerExt = "Tracker" + DifferentiationInterfaceZygoteExt = ["Zygote", "ForwardDiff"] + + [deps.DifferentiationInterface.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" + Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" + FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" + FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" + SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.5" + +[[deps.Glossaries]] +git-tree-sha1 = "fef2e50ffd6ffa22804aafef1099ea37633b1969" +uuid = "8f48dd54-e453-4cdc-9500-53b96149560b" +version = "0.1.0" + +[[deps.JuliaSyntaxHighlighting]] +deps = ["StyledStrings"] +uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" +version = "1.12.0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.12.0" + +[[deps.ManifoldDiff]] +deps = ["ADTypes", "DifferentiationInterface", "LinearAlgebra", "ManifoldsBase", "Markdown", "Random", "Requires"] +git-tree-sha1 = "28c69b401c75dd3f3b34a39bb7cb7948a2aeb61d" +uuid = "af67fdf4-a580-4b9f-bbec-742ef357defd" +version = "0.4.5" + + [deps.ManifoldDiff.weakdeps] + FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" + FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.ManifoldsBase]] +deps = ["LinearAlgebra", "Markdown", "Printf", "Random"] +git-tree-sha1 = "b44090cd3c5bf1b1a290110470b95cc0e1f67d11" +uuid = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" +version = "2.3.0" + + [deps.ManifoldsBase.extensions] + ManifoldsBasePlotsExt = "Plots" + ManifoldsBaseQuaternionsExt = "Quaternions" + ManifoldsBaseRecursiveArrayToolsExt = "RecursiveArrayTools" + ManifoldsBaseStatisticsExt = "Statistics" + + [deps.ManifoldsBase.weakdeps] + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + Quaternions = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" + RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.Manopt]] +deps = ["ColorSchemes", "ColorTypes", "Colors", "DataStructures", "Dates", "Glossaries", "LinearAlgebra", "ManifoldDiff", "ManifoldsBase", "Markdown", "Preferences", "Printf", "Random", "SparseArrays", "Statistics"] +path = ".." +uuid = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" +version = "0.5.31" + + [deps.Manopt.extensions] + ManoptJuMPExt = "JuMP" + ManoptLRUCacheExt = "LRUCache" + ManoptLineSearchesExt = "LineSearches" + ManoptManifoldsExt = "Manifolds" + ManoptRecursiveArrayToolsExt = "RecursiveArrayTools" + ManoptRipQPQuadraticModelsExt = ["RipQP", "QuadraticModels"] + + [deps.Manopt.weakdeps] + JuMP = "4076af6c-e467-56ae-b986-b466b2749572" + LRUCache = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" + 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" + +[[deps.Markdown]] +deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.29+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.8.1" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "07a921781cab75691315adc645096ed5e370cb77" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.3.3" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "522f093a29b31a93e34eaea17ba055d850edea28" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.5.1" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.1" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.12.0" + +[[deps.Statistics]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.8.3+2" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.15.0+0" diff --git a/run/Project.toml b/run/Project.toml new file mode 100644 index 0000000000..648dbb6457 --- /dev/null +++ b/run/Project.toml @@ -0,0 +1,6 @@ +[deps] +Glossaries = "8f48dd54-e453-4cdc-9500-53b96149560b" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e" +Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" diff --git a/run/debug_debug.jl b/run/debug_debug.jl new file mode 100644 index 0000000000..23ae7f0b94 --- /dev/null +++ b/run/debug_debug.jl @@ -0,0 +1,21 @@ +using Manopt, Manifolds, Random, LinearAlgebra +Random.seed!(42) +d = 4 +M = Sphere(d - 1) +v0 = project(M, [ones(2)..., zeros(d - 2)...]) +Z = v0 * v0' +#Cost and gradient +f(M, p) = -tr(transpose(p) * Z * p) / 2 +grad_f(M, p) = project(M, p, -transpose.(Z) * p / 2 - Z * p / 2) +# Constraints +g(M, p) = -p # now p ≥ 0 +mI = -Matrix{Float64}(I, d, d) +# Vector of gradients of the constraint components +grad_g(M, p) = [project(M, p, mI[:, i]) for i in 1:d] +p0 = project(M, [ones(2)..., zeros(d - 3)..., 0.1]) + +debug = [:Iteration, :Time, ", ", :Cost, " | ", (:ϵ,"ϵ: %.8f"), 25, "\n", :Stop] +p1 = exact_penalty_method( + M, f, grad_f, p0; g=g, grad_g=grad_g, + debug = debug +); From 107743ec6ac12860295c8599e4140485ec081690 Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Tue, 25 Aug 2026 09:22:20 +0200 Subject: [PATCH 7/7] remove accidentally committed files --- run/Manifest-v.1.12.toml | 313 --------------------------------------- run/Project.toml | 6 - run/debug_debug.jl | 21 --- 3 files changed, 340 deletions(-) delete mode 100644 run/Manifest-v.1.12.toml delete mode 100644 run/Project.toml delete mode 100644 run/debug_debug.jl diff --git a/run/Manifest-v.1.12.toml b/run/Manifest-v.1.12.toml deleted file mode 100644 index 62b87a9af2..0000000000 --- a/run/Manifest-v.1.12.toml +++ /dev/null @@ -1,313 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.12.4" -manifest_format = "2.0" -project_hash = "4b801e82b4f3e023f40f44128a02ee761eac1dd3" - -[[deps.ADTypes]] -git-tree-sha1 = "f7304359109c768cf32dc5fa2d371565bb63b68a" -uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.21.0" - - [deps.ADTypes.extensions] - ADTypesChainRulesCoreExt = "ChainRulesCore" - ADTypesConstructionBaseExt = "ConstructionBase" - ADTypesEnzymeCoreExt = "EnzymeCore" - - [deps.ADTypes.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "b0fd3f56fa442f81e0a47815c92245acfaaa4e34" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.31.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.12.1" -weakdeps = ["StyledStrings"] - - [deps.ColorTypes.extensions] - StyledStringsExt = "StyledStrings" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.11.0" - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - - [deps.ColorVectorSpace.weakdeps] - SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.13.1" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.3.0+1" - -[[deps.DataStructures]] -deps = ["OrderedCollections"] -git-tree-sha1 = "e357641bb3e0638d353c4b29ea0e40ea644066a6" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.19.3" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" - -[[deps.DifferentiationInterface]] -deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "44d9321761ed99e1d444b5081b3166d3259adcf0" -uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.7.14" - - [deps.DifferentiationInterface.extensions] - DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" - DifferentiationInterfaceDiffractorExt = "Diffractor" - DifferentiationInterfaceEnzymeExt = ["EnzymeCore", "Enzyme"] - DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" - DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" - DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" - DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] - DifferentiationInterfaceGPUArraysCoreExt = "GPUArraysCore" - DifferentiationInterfaceGTPSAExt = "GTPSA" - DifferentiationInterfaceMooncakeExt = "Mooncake" - DifferentiationInterfacePolyesterForwardDiffExt = ["PolyesterForwardDiff", "ForwardDiff", "DiffResults"] - DifferentiationInterfaceReverseDiffExt = ["ReverseDiff", "DiffResults"] - DifferentiationInterfaceSparseArraysExt = "SparseArrays" - DifferentiationInterfaceSparseConnectivityTracerExt = "SparseConnectivityTracer" - DifferentiationInterfaceSparseMatrixColoringsExt = "SparseMatrixColorings" - DifferentiationInterfaceStaticArraysExt = "StaticArrays" - DifferentiationInterfaceSymbolicsExt = "Symbolics" - DifferentiationInterfaceTrackerExt = "Tracker" - DifferentiationInterfaceZygoteExt = ["Zygote", "ForwardDiff"] - - [deps.DifferentiationInterface.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" - Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" - FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" - FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" - Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" - PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" - SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Glossaries]] -git-tree-sha1 = "fef2e50ffd6ffa22804aafef1099ea37633b1969" -uuid = "8f48dd54-e453-4cdc-9500-53b96149560b" -version = "0.1.0" - -[[deps.JuliaSyntaxHighlighting]] -deps = ["StyledStrings"] -uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" -version = "1.12.0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.12.0" - -[[deps.ManifoldDiff]] -deps = ["ADTypes", "DifferentiationInterface", "LinearAlgebra", "ManifoldsBase", "Markdown", "Random", "Requires"] -git-tree-sha1 = "28c69b401c75dd3f3b34a39bb7cb7948a2aeb61d" -uuid = "af67fdf4-a580-4b9f-bbec-742ef357defd" -version = "0.4.5" - - [deps.ManifoldDiff.weakdeps] - FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" - FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.ManifoldsBase]] -deps = ["LinearAlgebra", "Markdown", "Printf", "Random"] -git-tree-sha1 = "b44090cd3c5bf1b1a290110470b95cc0e1f67d11" -uuid = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" -version = "2.3.0" - - [deps.ManifoldsBase.extensions] - ManifoldsBasePlotsExt = "Plots" - ManifoldsBaseQuaternionsExt = "Quaternions" - ManifoldsBaseRecursiveArrayToolsExt = "RecursiveArrayTools" - ManifoldsBaseStatisticsExt = "Statistics" - - [deps.ManifoldsBase.weakdeps] - Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" - Quaternions = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" - RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" - Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.Manopt]] -deps = ["ColorSchemes", "ColorTypes", "Colors", "DataStructures", "Dates", "Glossaries", "LinearAlgebra", "ManifoldDiff", "ManifoldsBase", "Markdown", "Preferences", "Printf", "Random", "SparseArrays", "Statistics"] -path = ".." -uuid = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" -version = "0.5.31" - - [deps.Manopt.extensions] - ManoptJuMPExt = "JuMP" - ManoptLRUCacheExt = "LRUCache" - ManoptLineSearchesExt = "LineSearches" - ManoptManifoldsExt = "Manifolds" - ManoptRecursiveArrayToolsExt = "RecursiveArrayTools" - ManoptRipQPQuadraticModelsExt = ["RipQP", "QuadraticModels"] - - [deps.Manopt.weakdeps] - JuMP = "4076af6c-e467-56ae-b986-b466b2749572" - LRUCache = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" - 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" - -[[deps.Markdown]] -deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -version = "1.11.0" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.29+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.8.1" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "07a921781cab75691315adc645096ed5e370cb77" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.3.3" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "522f093a29b31a93e34eaea17ba055d850edea28" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.5.1" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -version = "1.11.0" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.1" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.12.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.Statistics.extensions] - SparseArraysExt = ["SparseArrays"] - -[[deps.StyledStrings]] -uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" -version = "1.11.0" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.8.3+2" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.15.0+0" diff --git a/run/Project.toml b/run/Project.toml deleted file mode 100644 index 648dbb6457..0000000000 --- a/run/Project.toml +++ /dev/null @@ -1,6 +0,0 @@ -[deps] -Glossaries = "8f48dd54-e453-4cdc-9500-53b96149560b" -LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e" -Manopt = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5" -Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" diff --git a/run/debug_debug.jl b/run/debug_debug.jl deleted file mode 100644 index 23ae7f0b94..0000000000 --- a/run/debug_debug.jl +++ /dev/null @@ -1,21 +0,0 @@ -using Manopt, Manifolds, Random, LinearAlgebra -Random.seed!(42) -d = 4 -M = Sphere(d - 1) -v0 = project(M, [ones(2)..., zeros(d - 2)...]) -Z = v0 * v0' -#Cost and gradient -f(M, p) = -tr(transpose(p) * Z * p) / 2 -grad_f(M, p) = project(M, p, -transpose.(Z) * p / 2 - Z * p / 2) -# Constraints -g(M, p) = -p # now p ≥ 0 -mI = -Matrix{Float64}(I, d, d) -# Vector of gradients of the constraint components -grad_g(M, p) = [project(M, p, mI[:, i]) for i in 1:d] -p0 = project(M, [ones(2)..., zeros(d - 3)..., 0.1]) - -debug = [:Iteration, :Time, ", ", :Cost, " | ", (:ϵ,"ϵ: %.8f"), 25, "\n", :Stop] -p1 = exact_penalty_method( - M, f, grad_f, p0; g=g, grad_g=grad_g, - debug = debug -);