Learn R Programming

vntrs (version 0.1.1)

vntrs: Variable neighborhood trust region search

Description

This function performs variable neighborhood trust region search.

Usage

vntrs(f, npar, minimize = TRUE, controls = NULL, quiet = TRUE, seed = NULL)

Value

A data frame. Each row contains information of an identified optimum. The first npar columns "p1",...,"p<npar>" store the argument values, the next column "value" has the optimal function values and the last column "global" contains TRUE for global optima and FALSE for local optima.

Arguments

f

A function that computes value, gradient, and Hessian of the function to be optimized and returns them as a named list with elements value, gradient, and hessian.

npar

The number of parameters of f.

minimize

If TRUE, f gets minimized. If FALSE, maximized.

controls

Either NULL or a named list with the following elements. Missing elements are set to the default values in parentheses.

  • init_runs (5): The number of initial searches.

  • init_min (-1): The minimum argument value for the random initialization.

  • init_max (1): The maximum argument value for the random initialization.

  • init_iterlim (20): The number of iterations for the initial searches.

  • neighborhoods (5): The number of nested neighborhoods.

  • neighbors (5): The number of neighbors in each neighborhood.

  • beta (0.05): A non-negative weight factor to account for the function's curvature in the selection of the neighbors. If beta = 0, the curvature is ignored. The higher the value, the higher the probability of selecting a neighbor in the direction of the highest function curvature.

  • iterlim (1000): The maximum number of iterations to be performed before the local search is terminated.

  • tolerance (1e-6): A positive scalar giving the tolerance for comparing different optimal arguments for equality.

  • time_limit (NULL): The time limit in seconds for the algorithm.

quiet

If TRUE, progress messages are suppressed.

seed

Set a seed for the sampling of the random starting points.

References

Bierlaire et al. (2009) "A Heuristic for Nonlinear Global Optimization" tools:::Rd_expr_doi("10.1287/ijoc.1090.0343").

Examples

Run this code
rosenbrock <- function(x) {
  stopifnot(is.numeric(x))
  stopifnot(length(x) == 2)
  f <- expression(100 * (x2 - x1^2)^2 + (1 - x1)^2)
  g1 <- D(f, "x1")
  g2 <- D(f, "x2")
  h11 <- D(g1, "x1")
  h12 <- D(g1, "x2")
  h22 <- D(g2, "x2")
  x1 <- x[1]
  x2 <- x[2]
  f <- eval(f)
  g <- c(eval(g1), eval(g2))
  h <- rbind(c(eval(h11), eval(h12)), c(eval(h12), eval(h22)))
  list(value = f, gradient = g, hessian = h)
}
vntrs(f = rosenbrock, npar = 2, seed = 1, controls = list(neighborhoods = 1))

Run the code above in your browser using DataLab