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