#include <itpp/base/newton_search.h>
Public Member Functions | |
Line_Search () | |
~Line_Search () | |
void | set_function (double(*function)(const vec &)) |
Set function pointer. | |
void | set_gradient (vec(*gradient)(const vec &)) |
Set gradient function pointer. | |
void | set_functions (double(*function)(const vec &), vec(*gradient)(const vec &)) |
Set both function and gradient function pointers. | |
void | set_start_point (const vec &x, double F, const vec &g, const vec &h) |
Set start point for search. | |
void | get_solution (vec &xn, double &Fn, vec &gn) |
Get solution, function value and gradient at solution point. | |
bool | search () |
Do the line search. | |
bool | search (vec &xn, double &Fn, vec &gn) |
Do the line search and return solution. | |
bool | search (const vec &x, double F, const vec &g, const vec &h, vec &xn, double &Fn, vec &gn) |
Set starting point, do the line search, and return the solution. | |
double | get_alpha () |
return alpha at solution point, xn = x + alpha h | |
double | get_slope_ratio () |
return the slope ratio at solution poin, xn | |
int | get_no_function_evaluations () |
return number of function evaluations used in search | |
void | set_stop_values (double rho, double beta) |
Set stop criterion values. | |
double | get_rho () |
Return stop value rho. | |
double | get_beta () |
Return stop value beta. | |
void | set_max_iterations (int value) |
Set max number of iterations. | |
int | get_max_iterations () |
Return max number of iterations. | |
void | set_max_stepsize (double value) |
Set max stepsize. | |
double | get_max_stepsize () |
Return max number of iterations. | |
void | set_method (const Line_Search_Method &method) |
Set Line search method. | |
void | enable_trace () |
enable trace mode | |
void | disable_trace () |
disable trace | |
void | get_trace (vec &alphavalues, vec &Fvalues, vec &dFvalues) |
The line search try to minimize the objective function along the direction
from the current position
.
Hence we look at
and try to find an that minimizes
.
Two variants are used. Either the soft line search (default) or the exact line search.
The soft line search stops when a point in the acceptable region is found, i.e.
and
Default vales are and
.
The exact line search
and
where is the current interval for
. Default vales are
and
.
The exact line search can at least in theory give the exact resutl, but it may require many extra function evaluations compared to soft line search.
Definition at line 222 of file newton_search.h.
void itpp::Line_Search::set_function | ( | double(*)(const vec &) | function | ) |
Set function pointer.
Definition at line 350 of file newton_search.cpp.
Referenced by set_functions().
void itpp::Line_Search::set_gradient | ( | vec(*)(const vec &) | gradient | ) |
Set gradient function pointer.
Definition at line 356 of file newton_search.cpp.
Referenced by set_functions().
void itpp::Line_Search::set_functions | ( | double(*)(const vec &) | function, | |
vec(*)(const vec &) | gradient | |||
) | [inline] |
Set both function and gradient function pointers.
Definition at line 234 of file newton_search.h.
References set_function(), and set_gradient().
Referenced by itpp::Newton_Search::search().
void itpp::Line_Search::set_start_point | ( | const vec & | x, | |
double | F, | |||
const vec & | g, | |||
const vec & | h | |||
) |
Set start point for search.
Definition at line 371 of file newton_search.cpp.
Referenced by search(), and itpp::Newton_Search::search().
void itpp::Line_Search::get_solution | ( | vec & | xn, | |
double & | Fn, | |||
vec & | gn | |||
) |
Get solution, function value and gradient at solution point.
Definition at line 384 of file newton_search.cpp.
References it_assert.
Referenced by search().
bool itpp::Line_Search::search | ( | ) |
Do the line search.
Definition at line 393 of file newton_search.cpp.
References itpp::abs(), itpp::C, itpp::dot(), itpp::eps, itpp::Exact, it_assert, max, min, itpp::norm(), itpp::Soft, and itpp::sqr().
Referenced by search(), and itpp::Newton_Search::search().
bool itpp::Line_Search::search | ( | vec & | xn, | |
double & | Fn, | |||
vec & | gn | |||
) |
Do the line search and return solution.
Definition at line 571 of file newton_search.cpp.
References get_solution(), and search().
bool itpp::Line_Search::search | ( | const vec & | x, | |
double | F, | |||
const vec & | g, | |||
const vec & | h, | |||
vec & | xn, | |||
double & | Fn, | |||
vec & | gn | |||
) |
Set starting point, do the line search, and return the solution.
Definition at line 578 of file newton_search.cpp.
References get_solution(), search(), and set_start_point().
double itpp::Line_Search::get_alpha | ( | ) |
return alpha at solution point, xn = x + alpha h
Definition at line 588 of file newton_search.cpp.
References it_warning.
Referenced by itpp::Newton_Search::search().
double itpp::Line_Search::get_slope_ratio | ( | ) |
return the slope ratio at solution poin, xn
Definition at line 598 of file newton_search.cpp.
References it_warning.
Referenced by itpp::Newton_Search::search().
int itpp::Line_Search::get_no_function_evaluations | ( | ) |
return number of function evaluations used in search
Definition at line 608 of file newton_search.cpp.
References it_warning.
Referenced by itpp::Newton_Search::search().
void itpp::Line_Search::set_stop_values | ( | double | rho, | |
double | beta | |||
) |
Set stop criterion values.
Definition at line 363 of file newton_search.cpp.
Referenced by itpp::Newton_Search::search().
double itpp::Line_Search::get_rho | ( | ) | [inline] |
double itpp::Line_Search::get_beta | ( | ) | [inline] |
void itpp::Line_Search::set_max_iterations | ( | int | value | ) |
Set max number of iterations.
Definition at line 619 of file newton_search.cpp.
References it_assert.
Referenced by itpp::Newton_Search::search().
int itpp::Line_Search::get_max_iterations | ( | ) | [inline] |
void itpp::Line_Search::set_max_stepsize | ( | double | value | ) |
Set max stepsize.
Definition at line 625 of file newton_search.cpp.
References it_assert.
Referenced by itpp::Newton_Search::search().
double itpp::Line_Search::get_max_stepsize | ( | ) | [inline] |
void itpp::Line_Search::set_method | ( | const Line_Search_Method & | method | ) |
Set Line search method.
Definition at line 631 of file newton_search.cpp.
References itpp::Exact, and itpp::Soft.
void itpp::Line_Search::enable_trace | ( | ) | [inline] |
void itpp::Line_Search::disable_trace | ( | ) | [inline] |
void itpp::Line_Search::get_trace | ( | vec & | alphavalues, | |
vec & | Fvalues, | |||
vec & | dFvalues | |||
) |
get trace outputs alphavalues
are the solutions of every iteration Fvalues
are the function values dFvalues
Definition at line 646 of file newton_search.cpp.
References it_warning.
Generated on Sat Aug 25 23:40:07 2007 for IT++ by Doxygen 1.5.2