Page 196 - Compact Numerical Methods For Computers
P. 196

Direct search methods                      185

                      Algorithm 27. Hooke and Jeeves minimiser (cont.)
                                   if samepoint then
                                   begin {STEP HJ8}
                                      stepsize := stepsize*stepredn; {to reduce stepsize. The reduction
                                        factor (0.2) should be chosen to reduce the stepsize
                                        reasonably rapidly when the initial point is close to
                                        the solution, but not so small that progress cannot
                                        still be made towards a solution point which is not
                                        nearby.}
                                      {writeln;} {Needed if indicator output ON}
                                      write(‘stepsize now ‘,stepsize:10,’ Best fn value=‘,Fmin);
                                      writeln(‘ after ‘,ifn);
                                      for i := l to n do
                                      begin
                                        write(B[i]:10:5,’’);
                                        if (7 * (i div 7) = i) and (i<n) then writeln;
                                      end;
                                      writeln;
                                   end
                                   else {not the same point -- return to old basepoint}
                                   begin {STEP HJ7}
                                      for i := 1 to n do B[i] := X[i];
                                      {writeln;} {Needed if indicator output ON}
                                      writeln(‘Return to old base point’);
                                   end; { reset basepoint}
                                end; {if Fmin<fold}
                             end; {while stepsize>intol} {STEP HJ10}
                             writeln(‘Converged to Fmin=’ ,Fmin,’ after ‘,ifn,’ evaluations’);
                             {Fmin has lowest function value, X[] has parameters.}
                          end; {if notcomp on first function evaluation}
                       end; {alg27.pas == hjmin}

                        In the next two chapters, considerable attention is paid to calculating sets of
                      mutually conjugate directions. Direct search techniques parallelling these develop-
                      ments have been attempted. The most successful is probably that of M J D Powell.
                      This is discussed at length by Brent (1973). These algorithms are more elaborate than
                      any in this monograph, though it is possible they could be simplified. Alternatively,
                      numerical approximation of derivatives ($18.2) can be used in algorithms 21 or 22.
                        Out of this range of methods I have chosen to present the Nelder-Mead procedure
                      and Hooke and Jeeves method because I feel they are the most easily understood.
                      There is no calculus or linear algebra to explain and for two-dimensional problems
                      the progress of algorithm 19 can be clearly visualised.
                        The software diskette includes driver programs DR1920.PAS to allow the Nelder-
                      Mead minimiser to be used in conjunction with algorithm 20. Driver DR27.PAS will
                      allow the Hooke and Jeeves minimiser to be used, but this driver does not invoke
                      algorithm 20 since a major part of the minimiser is an axial search.
   191   192   193   194   195   196   197   198   199   200   201