# test_opt

test_opt, a FORTRAN90 code which defines test problems for the scalar function optimization problem.

The scalar function optimization problem is to find a value for the N-dimensional vector X which minimizes the value of the given scalar function F(X). The function F(X) is not usually defined as the sum of squares of other functions. The minimum function value is not guaranteed to be zero.

Any system of M nonlinear functions in N unknowns can be turned into a scalar optimization problem. One way to do this is to define the functional F(X) to be the sum of the squares of the original nonlinear functions. The minimizer of F will then minimize the sum of the squares of the residuals. Since this process involves squaring, it can be less accurate than dealing directly with the original nonlinear functions: that is to say, the derived optimization problem may be more convenient to solve, but might provide less accurate results than applying a nonlinear solver to the original system.

If a function F(X) is differentiable, then at an optimum, the gradient vector must vanish. Thus, it is also possible to start with an optimization problem involving F(X) and turn it into a problem in which we seek a zero of the nonlinear functions represented by the gradient of F. Of course, the gradient must be zero at a mininum, but the converse does not hold; thus unless we know more about F, it is not safe to try to replace the optimization problem by a nonlinear function solution.

For each test problem, routines are provided to evaluate the function, gradient vector, and hessian matrix. Routines are also provided to indicate the number of variables, the problem title, a suitable starting point, and a minimizing solution, if known.

The functions defined include:

1. The Fletcher-Powell helical valley function,
N = 3.
2. The Biggs EXP6 function,
N = 6.
3. The Gaussian function,
N = 3.
4. The Powell badly scaled function,
N = 2.
5. The Box 3-dimensional function,
N = 3.
6. The variably dimensioned function,
1 <= N.
7. The Watson function,
2 <= N.
8. The penalty function #1,
1 <= N.
9. The penalty function #2,
1 <= N.
10. The Brown badly scaled function,
N = 2.
11. The Brown and Dennis function,
N = 4.
12. The Gulf R&D function,
N = 3.
13. The trigonometric function,
1 <= N.
14. The extended Rosenbrock parabolic valley function,
1 <= N.
15. The extended Powell singular quartic function,
4 <= N.
16. The Beale function,
N = 2.
17. The Wood function,
N = 4.
1 <= N.
19. Leon's cubic valley function,
N = 2.
20. Gregory and Karney's Tridiagonal Matrix Function,
1 <= N.
21. The Hilbert function,
1 <= N.
22. The De Jong Function F1,
N = 3.
23. The De Jong Function F2,
N = 2.
24. The De Jong Function F3 (discontinuous),
N = 5.
25. The De Jong Function F4 (Gaussian noise),
N = 30.
26. The De Jong Function F5,
N = 2.
27. The Schaffer Function F6,
N = 2.
28. The Schaffer Function F7,
N = 2.
29. The Goldstein Price Polynomial,
N = 2.
30. The Branin RCOS Function,
N = 2.
31. The Shekel SQRN5 Function,
N = 4.
32. The Shekel SQRN7 Function,
N = 4.
33. The Shekel SQRN10 Function,
N = 4.
34. The Six-Hump Camel-Back Polynomial,
N = 2.
35. The Shubert Function,
N = 2.
36. The Stuckman Function,
N = 2.
37. The Easom Function,
N = 2.
38. The Bohachevsky Function #1,
N = 2.
39. The Bohachevsky Function #2,
N = 2.
40. The Bohachevsky Function #3,
N = 2.
41. The Colville Polynomial,
N = 4.
42. The Powell 3D function,
N = 3.
43. The Himmelblau function,
N = 2.

### Languages:

test_opt is available in a FORTRAN90 version and a MATLAB version.

### Related Data and Programs:

ASA047, a FORTRAN90 code which minimizes a scalar function of several variables using the Nelder-Mead algorithm.

BRENT, a FORTRAN90 code which contains Richard Brent's routines for finding the zero, local minimizer, or global minimizer of a scalar function of a scalar argument, without the use of derivative information.

COMPASS_SEARCH, a FORTRAN90 code which seeks the minimizer of a scalar function of several variables using compass search, a direct search algorithm that does not use derivatives.

DQED, a FORTRAN90 code which solves constrained least squares problems.

NL2SOL, a FORTRAN90 code which implements an adaptive nonlinear least-squares algorithm.

PRAXIS, a FORTRAN90 code which minimizes a scalar function of several variables.

TEST_NLS, a FORTRAN90 code which defines a number of problems for nonlinear least squares solvers.

TEST_NONLIN, a FORTRAN90 code which defines a number of problems for nonlinear equation solvers.

TEST_OPT_CON, a FORTRAN90 code which defines test problems for the minimization of a scalar function of several variables, with the search constrained to lie within a specified hyper-rectangle.

TEST_OPTIMIZATION, a FORTRAN90 code which defines test problems for the minimization of a scalar function of several variables, as described by Molga and Smutnicki.

TOMS611, a FORTRAN90 code which minimizes a scalar functional of multiple variables.

### Reference:

1. John Dennis, Robert Schnabel,
Numerical Methods for Unconstrained Optimization and Nonlinear Equations,
SIAM, 1996,
ISBN13: 978-0-898713-64-0,
LC: QA402.5.D44.

### Source Code:

Last revised on 04 September 2020.