R: Preconditioned Truncated Newton

tnewton {nloptr} | R Documentation

## Preconditioned Truncated Newton

### Description

Truncated Newton methods, also calledNewton-iterative methods, solve an approximating Newton system using a conjugate-gradient approach and are related to limited-memory BFGS.

### Usage

    tnewton(x0, fn, gr = NULL, lower = NULL, upper = NULL,
      precond = TRUE, restart = TRUE, nl.info = FALSE,
      control = list(), ...)

### Arguments

`x0` | starting point for searching the optimum.
`fn` | objective function that is to be minimized.
`gr` | gradient of function `fn`; will be calculated numerically if not specified.
`lower, upper` | lower and upper bound constraints.
`precond` | logical; preset L-BFGS with steepest descent.
`restart` | logical; restarting L-BFGS with steepest descent.
`nl.info` | logical; shall the original NLopt info been shown.
`control` | list of options, see `nl.opts` for help.
`...` | additional arguments passed to the function.

### Details

Truncated Newton methods are based on approximating the objective with a quadratic function and applying an iterative scheme such as the linear conjugate-gradient algorithm.

### Value

List with components:

`par` | the optimal solution found so far.
`value` | the function value corresponding to `par`.
`iter` | number of (outer) iterations, see `maxeval`.
`convergence` | integer code indicating successful completion (> 1) or a possible error number (< 0).
`message` | character string produced by NLopt and giving additional information.

### Note

Less reliable than Newton's method, but can handle very large problems.

### Author(s)

Hans W. Borchers

### References

R. S. Dembo and T. Steihaug, “Truncated Newton algorithms for large-scale optimization,” Math. Programming 26, p. 190-212 (1982).

### See Also

`lbfgs`

### Examples

    flb <- function(x) {
        p <- length(x)
        sum(c(1, rep(4, p-1)) * (x - c(1, x[-p])^2)^2)
    }
    # 25-dimensional box constrained: par[24] is *not* at boundary
    S <- tnewton(rep(3, 25), flb, lower=rep(2, 25), upper=rep(4, 25),
                    nl.info = TRUE, control = list(xtol_rel=1e-8))
    ## Optimal value of objective function:  368.105912874334
    ## Optimal value of controls: 2  ...  2  2.109093  4

[Package nloptr version 1.2.2.2 Index]