Page 184 - Compact Numerical Methods For Computers
P. 184
Direct search methods 173
be chosen are unfortunately difficult to state. Quite obviously any starting step
should appreciably alter the function. In many ways this is an (n+1)-fold
repetition of the necessity of good initial estimates for the parameters as in §12.2.
More recently other workers have tried to improve upon the Nelder-Mead
strategies, for example Craig et al (1980). A parallel computer version reported by
Virginia Torczon seems to hold promise for the solution of problems in relatively
large numbers of parameters. Here we have been content to stay close to the original
Nelder-Mead procedure, though we have simplified the method for ranking the
vertices of the polytope, in particular the selection of the point b .
N
Algorithm 19. A Nelder-Mead minimisation procedure
procedure nmmin(n: integer; {the number of parameters in the
function to be minimised}
var Bvec,X: rvector; {the parameter values on
input (Bvec) and output (X) from minmeth}
var Fmin: real; {‘minimum’ function value}
Workdata: probdata; {user defined data area}
var fail: boolean; {true if method has failed}
var intol: real); {user-initialized convergence
tolerance; zero on entry if it is not set yet.}
{alg19.pas == Nelder Mead minimisation of a function of n parameters.
Original method due to J. Nelder and R. Mead., Computer Journal,
vol 7, 1965 pp. 308-313.
Modification as per Nash J and Walker-Smith M, Nonlinear Parameter
Estimation: an Integrated System in BASIC, Marcel Dekker: New York,
1987.
Modifications are principally
- in the computation of the “next to highest” vertex of the current
polytope,
- in the verification that the shrink operation truly reduces the size
of the polytope, and
- in form of calculation of some of the search points.
We further recommend an axial search to verify convergence. This can
be called outside the present code. If placed in-line, the code can
be restarted at STEP3.
If space is at a premium, vector X is not needed except to return
final values of parameters.
Copyright 1988 J.C.Nash
}
const
Pcol= 27; {Maxparm + 2 == maximum number of columns in polytope}
Prow = 26; {Maxparm + 1 == maximum number of rows in polytope}
alpha = 1.0; (reflection factor)
beta = 0.5; {contraction and reduction factor}
gamma = 2.0; {extension factor}
var
action : string[15]; {description of action attempted on polytope. The
program does not inform the user of the success of
the attempt. However, the modifications to do
this are straightforward.]