gradsamp: Gradient sampling algorithm for Non-Smooth Non-Convex...

Description Usage Arguments Value Author(s) References See Also Examples

View source: R/gradsamp.R

Description

Intended for nonconvex functions that are continuous everywhere and for which the gradient can be computed at most points, but which are known to be nondifferentiable at some points, typically including minimizers.

Usage

1
2
3
4
5
6
gradsamp(fn, gr, nvar, x0,upper = 1, lower = 0, 
        f0 = fn(x0), g0 = gr(x0), 
        samprad = c(1e-04, 1e-05, 1e-06), 
        maxit = 1000, normtol = 1e-06, 
        ngrad = min(100, 2 * nvar, nvar + 10),
        fvalquit = -Inf, prtlevel = 1)

Arguments

fn

A function to be minimized. fn(x) takes input as a vector of parameters over which minimization is to take place. fn() returns a scaler.

gr

A function to return the gradient for fn(x).

nvar

Number of parameters that fn() takes.

x0

Initial guess of x.

upper

upper bound for the initial value

lower

lower bound for the initial value

f0

fn(x0). Optional, is taken as input to reduce computation.

g0

gr(x0). Optional, is taken as input to reduce computation.

samprad

vector of sampling radii.

maxit

number of maximum iterations

normtol

stopping tolerance for norm(d)

ngrad

number of sampled gradients per iterate.

fvalquit

quit, if f reaches this value.

prtlevel

prints messages if this is 1

Value

Returns a list containing the following fields:

x

a matrix with k'th column containing final value of x obtained from k'th column of x0.

f

a vector of final obtained minimum values of fn() at the initial points.

g

matrix with k'th column as the gradient of fn at x[,k]

dnorm

dnorm(k) is the norm of a vector in the convex hull of gradients of the function evaluated at points near x(:,k)

X

a list containing points where gradients were evalueated

G

a list with gradients of correspoding elements from X

w

vectors of weights needed for dnorm

message

any warnings / use it to know about termination condition

Author(s)

Copyright (c) 2010 Michael Overton for Matlab code and documentation, with permission converted to R by Abhirup Mallik (and Hans W Borchers).

References

J.V. Burke, A.S. Lewis and M.L. Overton, A Robust Gradient Sampling Algorithm for Nonsmooth, Nonconvex Optimization SIAM J. Optimization, 2005

See Also

hanso, bfgs, nlcg, shor

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
fr <- function(x) {   ## Rosenbrock Banana function
  x1 <- x[1]
  x2 <- x[2]
  100 * (x2 - x1 * x1)^2 + (1 - x1)^2
}
grr <- function(x) { ## Gradient of 'fr'
  x1 <- x[1]
  x2 <- x[2]
  c(-400 * x1 * (x2 - x1 * x1) - 2 * (1 - x1),
    200 *      (x2 - x1 * x1))
}
#x0 <- matrix(rnorm(12),2,6)
x0 <- c(1.2,1)
tmp <- gradsamp(fr,grr,x0=x0,maxit=100)
tmp

#using Nesterov's function
# example not run
#fnNesterov1 <- function(x) {
#  n <- length(x)
#  x2 <- x[2:n]; x1 <- x[1:(n-1)]
#  1/4*(x[1]-1)^2 + sum(abs(x2-2*x1^2+1))
#}

#res=gradsamp(fnNesterov1,nvar=2,rep(1,2),maxit=10)
#res

rHanso documentation built on May 2, 2019, 5:26 p.m.