Provided by: libmath-amoeba-perl_0.05-2_all bug

NAME

           Math::Amoeba - Multidimensional Function Minimisation

SYNOPSIS

           use Math::Amoeba qw(ConstructVertices EvaluateVertices Amoeba MinimiseND);
           my ($vertice,$y)=MinimiseND(\@guess,\@scales,\&func,$tol,$itmax,$verbose);
           my @vertices=ConstructVertices(\@vector,\@offsets);
           my @y=EvaluateVertices(\@vertices,\&func);
           my ($vertice,$y)=Amoeba(\@vertices,\@y,\&func,$tol,$itmax,$verbose);

DESCRIPTION

       This is an implimenation of the Downhill Simpex Method in Multidimensions (Nelder and Mead) for finding
       the (local) minimum of a function. Doing this in Perl makes it easy for that function to actually be the
       output of another program such as a simulator.

       Arrays and the function are passed by reference to the routines.

       "MinimiseND"
           The  simplest  use is the MinimiseND function. This takes a reference to an array of guess values for
           the parameters at the function minimum, a reference to  an  array  of  scales  for  these  parameters
           (sensible  ranges  around  the  guess  in  which to look), a reference to the function, a convergence
           tolerence for the minimum, the maximum number of iterations to be taken and the verbose flag (default
           ON).  It returns an array consisting of a reference to the function parameters at the minimum and the
           value there.

       "Amoeba"
           The Amoeba function is the actual implimentation of the Downhill Simpex Method in Multidimensions. It
           takes a reference to an array of references to arrays which are the initial n+1 vertices (where n  is
           the  number  of  function  parameters),  a  reference  to the function valuation at these vertices, a
           reference to the function, a convergence tolerence for the minimum, the maximum number of  iterations
           to  be taken and the verbose flag (default ON).  It returns an array consisting of a reference to the
           function parameters at the minimum and the value there.

       "ConstructVertices"
           The ConstructVertices is used by MinimiseND to construct the  initial  vertices  for  Amoeba  as  the
           initial guess plus the parameter scale parameters as vectors along the parameter axis.

       "EvaluateVertices"
           The EvaluateVertices takes these set of vertices, calling the function for each one and returning the
           vector of results.

EXAMPLE

           use Math::Amoeba qw(MinimiseND);
           sub afunc {
             my ($a,$b)=@_;
             print "$a\t$b\n";
             return ($a-7)**2+($b+3)**2;
           }
           my @guess=(1,1);
           my @scale=(1,1);
           ($p,$y)=MinimiseND(\@guess,\@scale,\&afunc,1e-7,100);
           print "(",join(',',@{$p}),")=$y\n";

       produces the output

       (6.99978191653352,-2.99981241563247)=1.00000008274829

LICENSE

       PERL

HISTORY

       See "REAME".

BUGS

       Let me know.

AUTHOR

       John A.R. Williams <J.A.R.Williams@aston.ac.uk>

       Tom Chau <tom@cpan.org>

SEE ALSO

       "Numerical  Recipies:  The  Art  of Scientific Computing" W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T.
       Vetterling.  Cambridge University Press. ISBN 0 521 30811 9.

COPYRIGHT

       Copyright (c) 1995 John A.R. Williams. All rights reserved.  This  program  is  free  software;  you  can
       redistribute it and/or modify it under the same terms as Perl itself.

       Since 2005, this module was co-developed with Tom.

perl v5.36.0                                       2023-01-03                                  Math::Amoeba(3pm)