jenn_samp: Jennrich and Sampson Function

View source: R/06_jenn_samp.R

jenn_sampR Documentation

Jennrich and Sampson Function

Description

Test function 6 from the More', Garbow and Hillstrom paper.

Usage

jenn_samp(m = 10)

Arguments

m

Number of summand functions in the objective function. Should be equal to or greater than 2.

Details

The objective function is the sum of m functions, each of n parameters.

  • Dimensions: Number of parameters n = 2, number of summand functions m >= n.

  • Minima: f = 124.362... at (x1 = x2 = 0.2578) for m = 10,

Value

A list containing:

  • fn Objective function which calculates the value given input parameter vector.

  • gr Gradient function which calculates the gradient vector given input parameter vector.

  • he If available, the hessian matrix (second derivatives) of the function w.r.t. the parameters at the given values.

  • fg A function which, given the parameter vector, calculates both the objective value and gradient, returning a list with members fn and gr, respectively.

  • x0 Standard starting point.

  • fmin reported minimum

  • xmin parameters at reported minimum

Note

This test problem isn't really unconstrained. x1 must take a value between (-1, 1). Included for the sake of completeness.

References

More', J. J., Garbow, B. S., & Hillstrom, K. E. (1981). Testing unconstrained optimization software. ACM Transactions on Mathematical Software (TOMS), 7(1), 17-41. \Sexpr[results=rd]{tools:::Rd_expr_doi("doi.org/10.1145/355934.355936")}

Jennrich, R. I., & Sampson, P. F. (1968). Application of stepwise regression to non-linear estimation. Technometrics, 10(1), 63-72.

Examples

# Use m = 10 summand functions
fun <- jenn_samp(m = 10)
# Optimize using the standard starting point
# Set 'lower' and 'upper' parameter to constrain par[1]. Only works with
# L-BFGS-B.
x0 <- fun$x0
res_x0 <- stats::optim(par = x0, fn = fun$fn, gr = fun$gr, method =
"L-BFGS-B", lower = -1, upper = 1)
# Use your own starting point
res <- stats::optim(c(0.1, 0.2), fun$fn, fun$gr, method = "L-BFGS-B",
lower = -1, upper = 1)

# Use 20 summand functions
fun20 <- jenn_samp(m = 20)
res <- stats::optim(fun20$x0, fun20$fn, fun20$gr, method = "L-BFGS-B",
lower = -1, upper = 1)

jlmelville/funconstrain documentation built on April 17, 2024, 7:47 p.m.