FORTRAN Software for Optimization
J. P. Chandler (firstname.lastname@example.org)
Computer Science Department
Oklahoma State University
Stillwater, Oklahoma 74078, U.S.A.
Files of FORTRAN software for certain restricted types of
optimization problems are available for downloading by anonymous ftp:
(Optimization software can be used to solve nonlinear least squares
problems, maximum likelihood problems, and many other kinds of problems
in engineering and the physical and social sciences.)
This software may be distributed and used freely.
The only restriction is that if any of this software is included in a
package that is sold or leased, a royalty arrangement must be made
with the author.
This software is written in A.N.S.I. Standard FORTRAN 77.
It is portable and robust.
It will be maintained by the author for the foreseeable future:
any errors found will be fixed expeditiously, and a "bug bounty"
of $10 U.S. will be paid for the first notification of each error.
The software is in the form of subroutine packages.
The subroutines contain output statements of the form WRITE(KW,10)AA.
KW is currently set to 6 in subroutine STSET.
This software uses COMMON for communication of most parameters.
Advantage : short CALL statements
Disadvantages: arrays do not have adjustable dimensions;
COMMON is an obsolescent feature of FORTRAN
A short main program (test driver) and test data are included in each file.
Users may need to add an OPEN statement to each main program.
STEPIT (file: stepit.f)
Searches for a local minimum of a smooth function of one or more
parameters, (X(J), J=1,NV).
Parameters may be subject to constant constraints of equality
(X(J) is held fixed if MASK(J) is nonzero) or inequality
(X(J) will lie between XMIN(J) and XMAX(J), except for possible
small violations during computation of errors).
STEPIT uses a direct search method devised by the author
(Ph.D. dissertation, Department of Physics, Indiana University, 1967).
STEPIT can be configured to use storage proportional only to NV
rather than to NV**2, so that it can be used on large problems.
It has been used with NV=10000 with reasonably good results.
The rate of convergence is only linear, and the method does not
exhibit finite termination on a quadratic function.
STEPIT is considerably faster than the simplex method of Nelder and Mead
if NV is at all large, but may be slower than the method of Powell.
(Powell's method uses storage proportional to NV**2 and
does not allow constraints of inequality.)
At the end of the minimization, STEPIT can compute approximations to
the parameter errors and correlations, for least squares or maximum
likelihood problems, but these approximations to the errors can be
considerably too small in some cases.
SIMPLEX (file: simplex.f)
Searches for a local minimum of a smooth function of several variables.
Uses the simplex method of Nelder and Mead
(Computer Journal 7 (1965) 308-313), with minor modifications.
The original algorithm sometimes discarded the best known point;
this is an option in SIMPLEX, but it is not recommended.
The computations in SIMPLEX are arranged to limit roundoff errors.
The parameters of SIMPLEX are compatible with STEPIT,
allowing for the easy interchange of the two routines.
The method of SIMPLEX is not guaranteed to work in all cases
with constraints of inequality (XMIN(J) and XMAX(J)),
but in practice there are few problems with this.
This method will also find local minima of nonsmooth functions
in some problems, but examples can be constructed where it will fail,
terminating "normally" at a point that is not a local minimum.
MARQ (file: marq.f)
Solves nonlinear least squares problems.
Offers the following methods as options:
modified Gauss-Newton method
modified Marquardt's method
Constant constraints of equality or inequality may be imposed.
MARQ allows the use of either analytic derivatives or finite
difference approximations to the derivatives.
At the end of the fit, MARQ computes parameter errors, correlations, etc.
The usage of MARQ is almost entirely compatible with STEPIT
and SIMPLEX, to allow for interchange among the three packages.
On nonlinear least squares problems, MARQ is usually faster than
STEPIT or SIMPLEX, and often much faster.
(STEPIT and SIMPLEX will solve a wider class of problems than MARQ.)
The above files also contain two other routines of general applicability.
Used in conjunction with STEPIT, SIMPLEX, or MARQ to compute
nonsymmetric confidence intervals for the final parameter values
in nonlinear fitting problems.
The method of support planes is used (see references in FIDO).
Prints a line plot of data, fit, and normalized residuals.
J. P. Chandler