共役勾配法(勾配を用いた多変数関数の極小値の探索) [詳細]
関数 | |
template<class T > | |
double | Polak_Ribiere_Polyak (const array2< T > &g0, const array2< T > &g1) |
共役勾配法(conjugate gradient method)のβをPolak-Ribiere-Polyakの公式で計算する | |
template<class T > | |
double | Fletcher_Reeves (const array2< T > &g0, const array2< T > &g1) |
共役勾配法(conjugate gradient method)のβをFletcher-Reevesの公式で計算する | |
template<class T , class Allocator , class Functor1 , class Functor2 > | |
double | minimization (array2< T, Allocator > &p, Functor1 f, Functor2 g, double tolerance, size_t &iterations, const size_t max_iterations=12, const double armijo_rho=0.7, const double armijo_c=0.1, const size_t armijo_max_iteration=10) |
探索の開始点を指定し,共役勾配法(conjugate gradient method)によりユーザーが指定した勾配計算関数を用いて最小値を探索する | |
template<class T , class Allocator , class Functor1 , class Functor2 , class T2 > | |
double | minimization (array2< T, Allocator > &p, Functor1 f, Functor2 g, const T2 &data, double tolerance, size_t &iterations, const size_t max_iterations=12, const double armijo_rho=0.7, const double armijo_c=0.1, const size_t armijo_max_iteration=10) |
探索の開始点を指定し,共役勾配法(conjugate gradient method)によりユーザーが指定した勾配計算関数を用いて最小値を探索する |
共役勾配法(勾配を用いた多変数関数の極小値の探索)
double mist::conjugate_gradient::Fletcher_Reeves | ( | const array2< T > & | g0, |
const array2< T > & | g1 | ||
) |
共役勾配法(conjugate gradient method)のβをFletcher-Reevesの公式で計算する
[in] | g0 | … 1回前の勾配 |
[in] | g1 | … 現在の勾配 |
参照元 minimization().
double mist::conjugate_gradient::minimization | ( | array2< T, Allocator > & | p, |
Functor1 | f, | ||
Functor2 | g, | ||
double | tolerance, | ||
size_t & | iterations, | ||
const size_t | max_iterations = 12 , |
||
const double | armijo_rho = 0.7 , |
||
const double | armijo_c = 0.1 , |
||
const size_t | armijo_max_iteration = 10 |
||
) |
探索の開始点を指定し,共役勾配法(conjugate gradient method)によりユーザーが指定した勾配計算関数を用いて最小値を探索する
探索の開始点を指定しその位置での勾配方向に向かった最小化を繰り返し,最小値を探索する
[in,out] | p | … 探索の開始ベクトル,最小値を与えるベクトル |
[in] | f | … 評価関数 |
[in] | g | … 勾配関数 |
[in] | tolerance | … 許容誤差 |
[out] | iterations | … 実際の反復回数 |
[in] | max_iterations | … 最大反復回数 |
[in] | armijo_rho | … 減少率(1次元最適化のパラメータ) |
[in] | armijo_c | … 条件数(1次元最適化のパラメータ) |
[in] | armijo_max_iteration | … 最大反復回数(1次元最適化のパラメータ) |
参照先 Fletcher_Reeves(), mist::array2< T, Allocator >::height(), mist::gold::minimization(), と mist::array2< T, Allocator >::width().
double mist::conjugate_gradient::minimization | ( | array2< T, Allocator > & | p, |
Functor1 | f, | ||
Functor2 | g, | ||
const T2 & | data, | ||
double | tolerance, | ||
size_t & | iterations, | ||
const size_t | max_iterations = 12 , |
||
const double | armijo_rho = 0.7 , |
||
const double | armijo_c = 0.1 , |
||
const size_t | armijo_max_iteration = 10 |
||
) |
探索の開始点を指定し,共役勾配法(conjugate gradient method)によりユーザーが指定した勾配計算関数を用いて最小値を探索する
探索の開始点を指定しその位置での勾配方向に向かった最小化を繰り返し,最小値を探索する
[in,out] | p | … 探索の開始ベクトル,最小値を与えるベクトル |
[in] | f | … 評価関数 |
[in] | g | … 勾配関数 |
[in] | data | … 評価関数,勾配関数の計算に必要なデータ |
[in] | tolerance | … 許容誤差 |
[out] | iterations | … 実際の反復回数 |
[in] | max_iterations | … 最大反復回数 |
[in] | armijo_rho | … 減少率(1次元最適化のパラメータ) |
[in] | armijo_c | … 条件数(1次元最適化のパラメータ) |
[in] | armijo_max_iteration | … 最大反復回数(1次元最適化のパラメータ) |
参照先 Fletcher_Reeves(), mist::array2< T, Allocator >::height(), mist::gold::minimization(), と mist::array2< T, Allocator >::width().
double mist::conjugate_gradient::Polak_Ribiere_Polyak | ( | const array2< T > & | g0, |
const array2< T > & | g1 | ||
) |
共役勾配法(conjugate gradient method)のβをPolak-Ribiere-Polyakの公式で計算する
βが負になることもありうる
[in] | g0 | … 1回前の勾配 |
[in] | g1 | … 現在の勾配 |