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

Description Usage Arguments Value Author(s) References Examples

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
gradsamp(fn, gr, nvar, x0, 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.

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)

Abhirup Mallik, Hans Werner 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

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
27
28
29
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)
tmp <- gradsamp(fr,grr,2,x0)
tmp

#using Nesterov's function
# This example needs numDeriv
# 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))
#}
#library(numDeriv) #using for numerical differentiation
#grNest <-function(x){
#  grad(fnNesterov1,x)}

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

rnso documentation built on May 2, 2019, 6:12 p.m.