Skip to content

Commit d443ed8

Browse files
committed
enh: use adaptive penalty term for admm
1 parent 2fc77ad commit d443ed8

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

R/graphLaplacianEstimation.R

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,10 @@ learn_laplacian_gle_admm <- function(S, A_mask = NULL, alpha = 0, rho = 1, maxit
125125
A_mask <- matrix(1, p, p) - diag(p)
126126
Sinv <- MASS::ginv(S)
127127
w <- w_init("naive", Sinv)
128-
Yk <- L(w)
129-
Theta <- Yk
130-
Ck <- Yk
131-
C <- Ck
128+
Theta <- L(w)
129+
Yk <- Theta
130+
Ck <- Theta
131+
C <- Theta
132132
# ADMM constants
133133
mu <- 2
134134
tau <- 2
@@ -142,11 +142,9 @@ learn_laplacian_gle_admm <- function(S, A_mask = NULL, alpha = 0, rho = 1, maxit
142142
if (record_objective)
143143
fun <- c(vanilla.objective(Theta, K))
144144
# ADMM loop
145-
# P <- qr.Q(qr(rep(1, p)), complete=TRUE)[, 2:p]
146-
P <- eigvec_sym(Yk)
147-
P <- P[, 2:p]
145+
P <- qr.Q(qr(rep(1, p)), complete=TRUE)[, 2:p]
148146
for (k in c(1:maxiter)) {
149-
Gamma <- t(P) %*% (K + Yk - rho * Ck) %*% P
147+
Gamma <- t(P) %*% ((K + Yk) / rho - Ck) %*% P
150148
U <- eigvec_sym(Gamma)
151149
lambda <- eigval_sym(Gamma)
152150
d <- .5 * c(sqrt(lambda ^ 2 + 4 / rho) - lambda)
@@ -159,14 +157,14 @@ learn_laplacian_gle_admm <- function(S, A_mask = NULL, alpha = 0, rho = 1, maxit
159157
Yk <- Yk + rho * Rk
160158
if (record_objective)
161159
fun <- c(fun, vanilla.objective(Thetak, K))
162-
normF_Rk <- norm(Rk, "F")
163160
has_converged <- norm(Theta - Thetak) / norm(Theta, "F") < reltol
164161
if (has_converged && k > 1) break
165-
#s <- rho * norm(C - Ck, "F")
166-
#if (normF_Rk > mu * s)
167-
# rho <- rho * tau
168-
#else if (s > mu * normF_Rk)
169-
# rho <- rho / tau
162+
s <- rho * norm(C - Ck, "F")
163+
r <- norm(Rk, "F")
164+
if (r > mu * s)
165+
rho <- rho * tau
166+
else if (s > mu * r)
167+
rho <- rho / tau
170168
Theta <- Thetak
171169
C <- Ck
172170
if (verbose)

vignettes/SpectralGraphTopology.html

Lines changed: 4 additions & 4 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)