PDA_UNCMND

Minimise smooth non-linear function of n variables, function values only.

Origin

NMS / TIBER

Implementation Status:

The warning messages are no longer printed. The same information is returned in the argument INFO.
        SUBROUTINE PDA_UNCMND (N,X0,FCN,X,F,INFO,W,LW)
  
  
  ***BEGIN PROLOGUE  PDA_UNCMND
  ***DATE WRITTEN   870923    (YYMMDD)
  ***REVISION DATE  871222    (YYMMDD)
  ***CATEGORY NO.  G1B1A1
  ***KEYWORDS  UNCONSTRAINED MINIMIZATION
  ***AUTHOR  NASH, S.G., (GEORGE MASON UNIVERSITY)
  ***PURPOSE  PDA_UNCMND minimizes a smooth nonlinear function of n variables.
              A subroutine that computes the function value at any point
              must be supplied, but derivative values are not required.
              PDA_UNCMND provides a simple interface to more flexible lower
              level routines.  User has no control over options.
  
  ***DESCRIPTION
       From the book, "Numerical Methods and Software" by
                  D. Kahaner, C. Moler, S. Nash
                  Prentice Hall, 1988
  
       This routine uses a quasi-Newton algorithm with line search
       to minimize the function represented by the subroutine FCN.
       At each iteration, the nonlinear function is approximated
       by a quadratic function derived from a Taylor series.
       The quadratic function is minimized to obtain a search direction,
       and an approximate minimum of the nonlinear function along
       the search direction is found using a line search.  The
       algorithm computes an approximation to the second derivative
       matrix of the nonlinear function using quasi-Newton techniques.
  
       The PDA_UNCMND package is quite general, and provides many options
       for the user.  However, this subroutine is designed to be
       easy to use, with few choices allowed.  For example:
  
       1.  Only function values need be computed.  First derivative
       values are obtained by finite-differencing.  This can be
       very costly when the number of variables is large.
  
       2.  It is assumed that the function values can be obtained
       accurately (to an accuracy comparable to the precision of
       the computer arithmetic).
  
       3.  At most 150 iterations are allowed.
  
       4.  It is assumed that the function values are well-scaled,
       that is, that the optimal function value is not pathologically
       large or small.
  
       For more information, see the reference listed below.
  
   PARAMETERS
   ----------
   N            --> INTEGER
                    Dimension of problem
   X0(N)        --> DOUBLE PRECISION
                    Initial estimate of minimum
   FCN          --> Name of routine to evaluate minimization function.
                    Must be declared EXTERNAL in calling routine, and
                    have calling sequence
                        SUBROUTINE FCN(N, X, F)
                    with N and X as here, F the computed function value.
   X(N)        <--  DOUBLE PRECISION
                    Local minimum
   F           <--  DOUBLE PRECISION
                    Function value at local minimum X
   INFO        <--  INTEGER
                    Termination code
                        INFO =  0:  Optimal solution found
                        INFO =  1:  Terminated with gradient small,
                                    X is probably optimal
                        INFO =  2:  Terminated with step size small,
                                    X is probably optimal
                        INFO =  3:  Lower point cannot be found,
                                    X is probably optimal
                        INFO =  4:  Iteration limit (150) exceeded
                        INFO =  5:  Too many large steps,
                                    function may be unbounded
                        INFO = -1:  Insufficient workspace
   W(LW)        --> DOUBLE PRECISION
                    Workspace
   LW           --> INTEGER
                    Size of workspace, at least N*(N+10)
  
  ***REFERENCES  R.B. SCHNABEL, J.E. KOONTZ, AND BE.E. WEISS, A MODULAR
                   SYSTEM OF ALGORITHMS FOR UNCONSTRAINED MINIMIZATION,
                   REPORT CU-CS-240-82, COMP. SCI. DEPT., UNIV. OF
                   COLORADO AT BOULDER, 1982.
  ***MODIFICATION
     950404 Remove calls to XERROR, which are only level-0 messages that
            duplicate information in the INFO argument.  (HME).
  ***ROUTINES CALLED  PDA_OPTDRD, XERROR
  ***END PROLOGUE  PDA_UNCMND