|
TooN 2.0.0-beta8
|
Classes and functions to perform function optimization. More...
Classes | |
| struct | LineSearch< Size, Precision, Func > |
| Turn a multidimensional function in to a 1D function by specifying a point and direction. More... | |
| struct | ConjugateGradient< Size, Precision > |
| This class provides a nonlinear conjugate-gradient optimizer. More... | |
| class | DownhillSimplex< N, Precision > |
| This is an implementation of the Downhill Simplex (Nelder & Mead, 1965) algorithm. More... | |
Functions | |
| template<class Functor , class Precision > | |
| Vector< 2, Precision > | brent_line_search (Precision a, Precision x, Precision b, Precision fx, const Functor &func, int maxiterations, Precision tolerance=sqrt(numeric_limits< Precision >::epsilon()), Precision epsilon=numeric_limits< Precision >::epsilon()) |
| template<typename Precision , typename Func > | |
| Matrix< 3, 2, Precision > | bracket_minimum_forward (Precision a_val, const Func &func, Precision initial_lambda, Precision zeps) |
| template<class Functor , class Precision > | |
| Vector< 2, Precision > | golden_section_search (Precision a, Precision b, Precision c, Precision fb, const Functor &func, int maxiterations, Precision tol=sqrt(numeric_limits< Precision >::epsilon())) |
| template<class Functor , class Precision > | |
| Vector< 2, Precision > | golden_section_search (Precision a, Precision b, Precision c, const Functor &func, int maxiterations, Precision tol=sqrt(numeric_limits< Precision >::epsilon())) |
Classes and functions to perform function optimization.
The following functions find the minimum of a 1-D function:
The following classes perform multidimensional function minimization:
The mode of operation is to set up a mutable class, then repeatedly call an iterate function. This allows different sub algorithms (such as termination conditions) to be substituted in if need be.
| Vector<2, Precision> TooN::brent_line_search | ( | Precision | a, |
| Precision | x, | ||
| Precision | b, | ||
| Precision | fx, | ||
| const Functor & | func, | ||
| int | maxiterations, | ||
| Precision | tolerance = sqrt(numeric_limits<Precision>::epsilon()), |
||
| Precision | epsilon = numeric_limits<Precision>::epsilon() |
||
| ) |
brent_line_search performs Brent's golden section/quadratic interpolation search on the functor provided.
The inputs a, x, b must bracket the minimum, and must be in order, so that
and
.
| a | The most negative point along the line. |
| x | The central point. |
| fx | The value of the function at the central point ( ). |
| b | The most positive point along the line. |
| func | The functor to minimize |
| maxiterations | Maximum number of iterations |
| tolerance | Tolerance at which the search should be stopped (defults to sqrt machine precision) |
| epsilon | Minimum bracket width (defaults to machine precision) |
References TooN::sqrt().
Referenced by ConjugateGradient< Size, Precision >::find_next_point().
| Matrix<3,2,Precision> TooN::Internal::bracket_minimum_forward | ( | Precision | a_val, |
| const Func & | func, | ||
| Precision | initial_lambda, | ||
| Precision | zeps | ||
| ) |
Bracket a 1D function by searching forward from zero.
The assumption is that a minima exists in
, and this function searches for a bracket using exponentially growning or shrinking steps.
| a_val | The value of the function at zero. |
| func | Function to bracket |
| initial_lambda | Initial stepsize |
| zeps | Minimum bracket size. |
m[i][0] contains the values of
for the bracket, in increasing order, and m[i][1] contains the corresponding values of
. If the bracket drops below the minimum bracket size, all zeros are returned. References TooN::isnan(), and TooN::Zeros.
Referenced by ConjugateGradient< Size, Precision >::find_next_point().
| Vector<2, Precision> TooN::golden_section_search | ( | Precision | a, |
| Precision | b, | ||
| Precision | c, | ||
| Precision | fb, | ||
| const Functor & | func, | ||
| int | maxiterations, | ||
| Precision | tol = sqrt(numeric_limits<Precision>::epsilon()) |
||
| ) |
golden_section_search performs a golden section search line minimization on the functor provided.
The inputs a, b, c must bracket the minimum, and must be in order, so that
and
.
| a | The most negative point along the line. |
| b | The central point. |
| fb | The value of the function at the central point ( ). |
| c | The most positive point along the line. |
| func | The functor to minimize |
| maxiterations | Maximum number of iterations |
| tol | Tolerance at which the search should be stopped. |
References TooN::sqrt().
Referenced by TooN::golden_section_search().
| Vector<2, Precision> TooN::golden_section_search | ( | Precision | a, |
| Precision | b, | ||
| Precision | c, | ||
| const Functor & | func, | ||
| int | maxiterations, | ||
| Precision | tol = sqrt(numeric_limits<Precision>::epsilon()) |
||
| ) |
golden_section_search performs a golden section search line minimization on the functor provided.
The inputs a, b, c must bracket the minimum, and must be in order, so that
and
.
| a | The most negative point along the line. |
| b | The central point. |
| c | The most positive point along the line. |
| func | The functor to minimize |
| maxiterations | Maximum number of iterations |
| tol | Tolerance at which the search should be stopped. |
References TooN::golden_section_search().
1.7.4