TOMS178 Minimization by Hooke-Jeeves Direct Search

TOMS178 is a MATLAB library which uses the Hooke-Jeeves direct search algorithm to seek the minimizing point of a function F(X) of several variables, by Arthur Kaupe.

The Hooke_Jeeves algorithm does not required the function F(X) to be differentiable. It does not even require the function to be continuous, although it should probably only be "weakly discontinuous", like a step function, with finitely many well-separated jumps. In any case, the algorithm only examines function values, never derivatives, remembers the location of the best value encountered, and seeks to improve this value by a clever pattern search.

The user supplies a quantity rho, between 0 and 1, which controls how cautious or daring the search is, as well as a routine to evaluate the function, and a few input parameters.

A C version of the algorithm, as written by Mark Johnson, is available at http://www.netlib.org/opt/hooke.c

Note that fminsearch is a MATLAB built in command which minimizes a scalar function of several variables using the Nelder-Mead algorithm.

Languages:

TOMS178 is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

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

COMPASS_SEARCH, a MATLAB library 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 library which solves constrained least squares problems.

ENTRUST, a MATLAB program which minimizes a scalar function of several variables using trust region methods.

MINPACK, a FORTRAN90 library which solves systems of nonlinear equations, or the least squares minimization of the residual of a set of linear or nonlinear equations.

NELDER_MEAD, a MATLAB program which minimizes a scalar function of multiple variables using the Nelder-Mead algorithm.

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

PRAXIS, a FORTRAN90 library which minimizes a scalar function of several variables, without derivative information.

TEST_NLS, a FORTRAN90 library which defines test problems requiring the least squares minimization of a set of nonlinear functions.

TEST_OPT, a MATLAB library which defines test problems requiring the minimization of a scalar function of several variables.

TOMS611, a FORTRAN90 library which optimizes a scalar functional of multiple variables.

UNCMIN, a FORTRAN77 library which can be used to seek the minimizer of a scalar functional of multiple variables.

Author:

Original Algol version by Arthur Kaupe; MATLAB version by John Burkardt.

Reference:

• M Bell, Malcolm Pike,
Remark on Algorithm 178: Direct Search,
Communications of the ACM,
Volume 9, Number 9, September 1966, page 684.
• Robert Hooke, Terry Jeeves,
Direct Search Solution of Numerical and Statistical Problems,
Journal of the ACM,
Volume 8, Number 2, April 1961, pages 212-229.
• Arthur Kaupe,
Algorithm 178: Direct Search,
Communications of the ACM,
Volume 6, Number 6, June 1963, page 313.
• FK Tomlin, LB Smith,
Remark on Algorithm 178: Direct Search,
Communications of the ACM,
Volume 12, Number 11, November 1969, page 637-638.

Source Code:

• best_nearby.m, searches nearby points for a lower function value.
• hooke.m, seeks the minimum of a scalar function of several variables using the Hooke-Jeeves algorithm.
• timestamp.m, returns the YMDHMS date as a timestamp.

Examples and Tests:

You can go up one level to the MATLAB source codes.

Last revised on 12 February 2008.