BAKER_OPTIMIZATION
Function
Baker_Optimization contains a procedure for locating the stationary points of a multidimensional function. The code
in this module is based on the work of Jon Baker, J. Comput. Chem., 7, 385-395, 1985.
Dependencies
Module | Variables |
DEFINITIONS | DP |
IO_UNITS | OUTPUT |
DIAGONALIZATION | SYMMETRIC_UPPER |
Public Variables
None.
Public Procedures
There is a single public subroutine in this module.
Subroutine | Purpose |
BAKER_SEARCH | Find a stationary point of a multidimensional function. |
BAKER_SEARCH
Argument | Type | Intent | Optional | Purpose |
FCALC | Subroutine | N/A | No | A user supplied subroutine. |
X | Real(:) | InOut | No | A guess at the stationary point on input and the point found
by the subroutine on output. |
STATUS | Integer | Out | Yes | A status flag. |
FOLLOW_MODE | Integer | In | Yes | The mode to follow during the search procedure. |
PRINT_FREQUENCY | Integer | In | Yes | The print frequency. |
STEP_NUMBER | Integer | In | Yes | The maximum number of iterations. |
LOCATE_SADDLE | Logical | In | Yes | The saddle point location flag. |
USE_NR_STEP | Logical | In | Yes | The Newton-Raphson step flag. |
GRADIENT_TOLERANCE | Real | In | Yes | The gradient tolerance convergence criterion. |
MAXIMUM_STEP | Real | In | Yes | The maximum step size allowed. |
FCALC
Argument | Type | Intent | Optional | Purpose |
X | Real(:) | In | No | The point at the which the function is to be evaluated. |
F | Real | Out | No | The function value. |
G | Real(:) | Out | No | The first derivative vector. |
H | Real(:) | Out | No | The second derivative vector packed in upper triangular form. |
- BAKER_SEARCH finds stationary points of a multidimensional function. A subroutine that calculates the value of the
function and both its first and second derivatives is required. Its calling sequence is given above.
- The array X should contain a guess at a stationary point on input and will contain the best approximation to a
stationary point on output.
- The STATUS argument, if present, will indicate the status of the calculation on output. A value of zero indicates
that the search procedure was successful. Values other than zero indicate a problem.
- FOLLOW_MODE indicates the mode that the search procedure will follow during the search. The default is to follow
the lowest mode (i.e. mode 1).
- PRINT_FREQUENCY indicates the step frequency at which information about the search is to be printed. The default
is to do no printing.
- STEP_NUMBER indicates the number of search steps to perform. The default is to do no steps.
- LOCATE_SADDLE indicates whether the search is to be for a minimum or a saddle point. The default is to search for
a minimum.
- USE_NR_STEP forces the search procedure to use a pure Newton-Raphson step. The default is to use a modified
Newton-Raphson step which will take the search into regions of the surface with different curvature.
- GRADIENT_TOLERANCE gives the value of the RMS gradient tolerance below which the optimization will have been
deemed to have converged. The default value is 0.001. Note that the current point must also be of the correct
curvature as well as have satisfied the gradient tolerance criterion for the search to stop.
- MAXIMUM_STEP sets the maximum allowable step size at each iteration. The default is 0.3.
Stability
Stable although Hessian updating techniques may be added at a later date.