lineSearchBB: A curvilinear search on the Stiefel manifold with BB steps...

Description Usage Arguments Value Author(s) References Examples

View source: R/opt.stiefel.R

Description

A curvilinear search on the Stiefel manifold with BB steps (Wen and Yin 2013, Algo 2) This is based on the line search algorithm described in (Zhang and Hager, 2004)

Usage

1
lineSearchBB(F, X, Xprev, G_x, G_xprev, rho, C, maxIters = 20)

Arguments

F

A function V(n, p) -> R

X

an n x p semi-orthogonal matrix (the current )

Xprev

an n x p semi-orthogonal matrix (the previous)

G_x

an n x p matrix with (G_x)_ij = dF(X)/dX_ij

G_xprev

an n x p matrix with (G_xprev)_ij = dF(X_prev)/dX_prev_ij

rho

Convergence parameter, usually small (e.g. 0.1)

C

C_t+1 = (etaQ_t + F(X_t+1))/Q_t+1 See section 3.2 in Wen and Yin, 2013

maxIters

Maximum number of iterations

Value

A list containing Y: a semi-orthogonal matrix Ytau which satisfies convergence criteria (Eqn 29 in Wen & Yin '13), and tau: the stepsize satisfying these criteria

Author(s)

Alexander Franks

References

(Wen and Yin, 2013) and (Zhang and Hager, 2004)

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
N <- 10
P <- 2
M <- diag(10:1)
F <- function(V) { - sum(diag(t(V) %*% M %*% V)) }
dF <- function(V) { - 2*M %*% V }
Xprev <- rustiefel(N, P)
G_xprev <- dF(Xprev)
X <- rustiefel(N, P)
G_x <- dF(X)
Xprev <- dF(X)
res <- lineSearchBB(F, X, Xprev, G_x, G_xprev, rho=0.1, C=F(X))

rstiefel documentation built on June 12, 2018, 5:19 p.m.