PDA_SUBPLX

Subspace-searching simplex method for unconstrained optimization

Origin

Module SUBPLEX from OPT / NETLIB

Description:

Subplex is a subspace-searching simplex method for the unconstrained optimization of general multivariate functions. Like the Nelder-Mead simplex method it generalizes, the subplex method is well suited for optimizing noisy objective functions. The number of function evaluations required for convergence typically increases only linearly with the problem size, so for most applications the subplex method is much more efficient than the simplex method.

Author

Tom Rowan, Oak Ridge National Laboratory, Mathematical Sciences Section, P.O. Box 2008, Bldg. 6012, Oak Ridge, TN 37831-6367, Phone: (615) 574-3131, Fax : (615) 574-0680, Email: na.rowan@na-net.ornl.gov

Reference

T. Rowan, "Functional Stability Analysis of Numerical Algorithms", Ph.D. thesis, Department of Computer Sciences, University of Texas at Austin, 1990.
subroutine pda_subplx (f,n,tol,maxnfe,mode,scale,x,fx,nfe,
*                   work,iwork,iflag)

Coded by Tom Rowan
Department of Computer Sciences
University of Texas at Austin

pda_subplx uses the subplex method to solve unconstrained
optimization problems.  The method is well suited for
optimizing objective functions that are noisy or are
discontinuous at the solution.

pda_subplx sets default optimization options by calling the
subroutine pda_subopt.  The user can override these defaults
by calling pda_subopt prior to calling pda_subplx, changing the
appropriate common variables, and setting the value of
mode as indicated below.

By default, pda_subplx performs minimization.

input

f      - user supplied function f(n,x) to be optimized,
declared external in calling routine

n      - problem dimension

tol    - relative error tolerance for x (tol .ge. 0.)

maxnfe - maximum number of function evaluations

mode   - integer mode switch with binary expansion
(bit 1) (bit 0) :
bit 0 = 0 : first call to pda_subplx
= 1 : continuation of previous call
bit 1 = 0 : use default options
= 1 : user set options

scale  - scale and initial step sizes for corresponding
components of x
(If scale(1) .lt. 0.,
abs(scale(1)) is used for all components of x,
and scale(2),...,scale(n) are not referenced.)

x      - starting guess for optimum

work   - double precision work array of dimension .ge.
2*n + nsmax*(nsmax+4) + 1
(nsmax is set in subroutine pda_subopt.
default: nsmax = min(5,n))

iwork  - integer work array of dimension .ge.
n + int(n/nsmin)
(nsmin is set in subroutine pda_subopt.
default: nsmin = min(2,n))

output

x      - computed optimum

fx     - value of f at x

nfe    - number of function evaluations

iflag  - error flag
= -2 : invalid input
= -1 : maxnfe exceeded
=  0 : tol satisfied
=  1 : limit of machine precision
=  2 : fstop reached (fstop usage is determined
by values of options minf, nfstop, and
irepl. default: f(x) not tested against
fstop)
iflag should not be reset between calls to
pda_subplx.