FORTRAN Software for Optimization J. P. Chandler (jpc@a.cs.okstate.edu) Computer Science Department Oklahoma State University Stillwater, Oklahoma 74078, U.S.A. (405) 744-5676 Files of FORTRAN software for certain restricted types of optimization problems are available for downloading by anonymous ftp: ftp.a.cs.okstate.edu /pub/jpc (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: Gauss-Newton method modified Gauss-Newton method Marquardt's 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. FIDO 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). RPLOT Prints a line plot of data, fit, and normalized residuals. J. P. Chandler jpc@a.cs.okstate.edu