UNCMIN, a FORTRAN77 code which seeks a solution of the unconstrained minimization problem.
The code is a package which seeks to minimize a scalar function of N variables. There cannot be any side conditions or constraints, such as requiring that the variables be positive. Only a local minimizer is sought. There may be other, better minimizers which are not found. This depends on the starting point and tolerances.
The code may also be used to seek the solution of N nonlinear equations, by constructing the function to minimize as the sum of squares of the residuals. Again, because only a local minimizer is sought, it is not guaranteed that the answer returned will be a solution to the equations.
The code requires values of the gradient and the hessian. These may be computed in subroutines that the user supplies, or else the program may be requested to approximate these quantities using finite differences.
Given a scalar function F(X1 ,X2 ,...,XN ), the gradient is the N-vector
(DF/DX1 ,DF/DX2 ,...,DF/DXN ).The hessian is the N by N matrix of second partial derivatives, whose I,J-th entry is D2 F/DXI DXJ. Note that this means the hessian is symmetric.
Three global strategies have been implemented in this package:
The relative performance of these methods will vary from problem to problem. There are no a priori means of knowing which method will perform better in a given case. Consequently, if the user is solving a class of problems, it may pay to sample each method in turn and choose the one which works best.
The program has three levels of output, and can direct that output to the terminal or log file, or to a disk file. The three levels are:
There are both a simple called OPTIF0 and a sophisticated interface call OPTIF9.
The simple interface OPTIF0 requires that the user supply only:
The sophisticated interface OPTIF9 requires all the above, plus:
If the user is only interested in a few of the arguments to OPTIF9, subroutine DFAULT may be called first, which sets all variables to default values, and then reset only a few of those variables before calling OPTIF9.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
uncmin is available in a FORTRAN77 version.
ASA047, a FORTRAN77 library which minimizes a scalar function of several variables using the Nelder-Mead algorithm.
COMPASS_SEARCH, a FORTRAN90 library which seeks the minimizer of a scalar function of several variables using compass search, a direct search algorithm that does not use derivatives.
DQED, a FORTRAN90 library which solves constrained least squares problems.
ENTRUST, a MATLAB program which solves problems in scalar optimization or nonlinear least squares.
MINPACK, a FORTRAN90 library which solves systems of nonlinear equations, or the least squares minimization of the residual of a set of linear or nonlinear equations.
NELDER_MEAD, a MATLAB program which minimizes a scalar function of several variables using the Nelder-Mead algorithm.
NL2SOL, a FORTRAN90 library which implements an adaptive nonlinear least-squares algorithm.
PRAXIS, a FORTRAN90 routine which minimizes a scalar function of several variables.
TEST_OPT, a FORTRAN90 library which defines test problems in scalar optimization.
TOMS178, a FORTRAN77 library which optimizes a scalar functional of multiple variables using the Hooke-Jeeves method.
TOMS611, a FORTRAN77 library which solves problems in unconstrained minimization.
Robert Schnabel, John Koontz, Barry Weiss