OptStiefelGBB: Optimization on Stiefel manifold (GBB)

Description Usage Arguments Value References Examples

Description

Curvilinear search algorithm for optimization on Stiefel manifold based on Wen and Yin (2013). Used for estimating the envelope subspace.

Usage

1
OptStiefelGBB(X, opts=NULL, fun, ...)

Arguments

X

n by k matrix such that X'X = I

opts

Option structure with fields:
"record = 0" – no print out.
"mxitr" – max number of iterations.
"xtol" – stop control for ||X_k - X_{k-1}||.
"gtol" – stop control for the projected gradient.
"ftol" – stop control for \frac{|F_k - F_{k-1}|}{(1+|F_{k-1}|)} usually with max{xtol, gtol} > ftol.

The default values are: "xtol"=1e-08; "gtol"=1e-08; "ftol"=1e-12; "mxitr"=500.

fun

Objective function and its gradient:
fun(X, data1, data2)
data1, data2 are addtional data.

...

Additional input for fun, Calling syntax:
OptStiefelGBB(X0, fun, opts, data1, data2).

Value

X

Solution

Out

Output information, inclusde estimation error, function value, iteration times etc.

References

Wen, Z., & Yin, W. (2013). A feasible method for optimization with orthogonality constraints. Mathematical Programming, 142(1-2), 397-434.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
fun <- function(X,  A) {
      G = -2*(A %*% X)
      F = sum(diag(t(X) %*% A %*% X))
      return(list(F = F, G = G))
}
n = 1000; k = 6;
A = matrix(rnorm(n^2), n, n); A = t(A) %*% A

opts=c()
opts$record = 0;
opts$mxitr  = 1000;
opts$xtol = 1e-5;
opts$gtol = 1e-5;
opts$ftol = 1e-8;

X0 = matrix(rnorm(n*k), n, k);
X0 = qr.Q(qr(X0));

eva <- OptStiefelGBB(X0, opts, fun, A)
X <- eva$X
out <- eva$out
out$fval = -2*out$fval;

kusakehan/TEReg documentation built on May 30, 2019, 7:17 a.m.