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.
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
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.