From aa1ad9b029064b8a0a6f19fc8f9d69ee4d30ef6a Mon Sep 17 00:00:00 2001 From: Tobias Wood Date: Tue, 16 May 2023 10:53:08 +0100 Subject: [PATCH] =?UTF-8?q?=CF=81=20scaling=20check=20from=202nd=20iterati?= =?UTF-8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/algo/admm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/algo/admm.cpp b/src/algo/admm.cpp index f74a82ab..f7eaabe5 100644 --- a/src/algo/admm.cpp +++ b/src/algo/admm.cpp @@ -78,7 +78,7 @@ auto ADMM::run(Cx *bdata, float ρ) const -> Vector float pNorm = 0.f, dNorm = 0.f, normz = 0.f, normu = 0.f; for (Index ir = 0; ir < R; ir++) { Fx[ir] = reg_ops[ir]->forward(x); - Fxpu[ir] = Fx[ir] * α + z[ir] * (1.f - α) + u[ir]; + Fxpu[ir] = Fx[ir] * α - z[ir] * (α - 1.f) + u[ir]; zold[ir] = z[ir]; prox[ir]->apply(1.f / ρ, Fxpu[ir], z[ir]); u[ir] = Fxpu[ir] - z[ir]; @@ -111,7 +111,7 @@ auto ADMM::run(Cx *bdata, float ρ) const -> Vector Log::Print("All primal and dual tolerances achieved, stopping"); break; } - if (io > 1) { // z_0 is zero, so perfectly reasonable dual residuals can trigger this + if (io > 0) { // z_0 is zero, so perfectly reasonable dual residuals can trigger this if (pNorm > μ * dNorm) { ρ *= τ; for (Index ir = 0; ir < R; ir++) {