Function optimization

Classes and functions to perform function optimization. More...

Classes

struct  TooN::Internal::LineSearch< Size, Precision, Func >
 Turn a multidimensional function in to a 1D function by specifying a point and direction. More...
struct  TooN::ConjugateGradient< Size, Precision >
 This class provides a nonlinear conjugate-gradient optimizer. More...
class  TooN::DownhillSimplex< N >
 This is an implementation of the Downhill Simplex (Nelder & Mead, 1965) algorithm. More...

Functions

template<class Functor, class Precision>
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())
template<typename Precision, typename Func>
Matrix< 3, 2, Precision > TooN::Internal::bracket_minimum_forward (Precision a_val, const Func &func, Precision initial_lambda=1)
template<class Functor, class Precision>
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()))
template<class Functor, class Precision>
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()))

Detailed Description

Classes and functions to perform function optimization.

One dimensional function optimization

The following functions find the minimum of a 1-D function:

Multidimensional dimensional function optimization

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.


Function Documentation

template<class Functor, class Precision>
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 $ a < x < b $ and $ f(a) > f(x) < f(b) $.

Parameters:
a The most negative point along the line.
x The central point.
fx The value of the function at the central point ($b$).
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)
Returns:
The minima position is returned as the first element of the vector, and the minimal value as the second element.

template<typename Precision, typename Func>
Matrix<3,2,Precision> TooN::Internal::bracket_minimum_forward ( Precision  a_val,
const Func &  func,
Precision  initial_lambda = 1 
)

Bracket a 1D function by searching forward from zero.

The assumption is that a minima exists in $f(x),\ x>0$, and this function searches for a bracket using exponentially growning or shrinking steps.

Parameters:
a_val The value of the function at zero.
func Function to bracket
initial_lambda Initial stepsize
Returns:
m[i][0] contains the values of $x$ for the bracket, in increasing order, and m[i][1] contains the corresponding values of $f(x)$.

template<class Functor, class Precision>
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 $ a < b < c $ and $ f(a) > f(b) < f(c) $.

Parameters:
a The most negative point along the line.
b The central point.
fb The value of the function at the central point ($b$).
c 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.
Returns:
The minima position is returned as the first element of the vector, and the minimal value as the second element.

template<class Functor, class Precision>
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 $ a < b < c $ and $ f(a) > f(b) < f(c) $.

Parameters:
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
tolerance Tolerance at which the search should be stopped.
Returns:
The minima position is returned as the first element of the vector, and the minimal value as the second element.


Generated on Thu May 7 20:28:41 2009 for TooN by  doxygen 1.5.3