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.