関数
ネームスペース mist::conjugate_gradient

共役勾配法(勾配を用いた多変数関数の極小値の探索) [詳細]

関数

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)によりユーザーが指定した勾配計算関数を用いて最小値を探索する

説明

共役勾配法(勾配を用いた多変数関数の極小値の探索)

関数

template<class T >
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().

template<class T , class Allocator , class Functor1 , class Functor2 >
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().

template<class T , class Allocator , class Functor1 , class Functor2 , class T2 >
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().

template<class T >
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… 現在の勾配
戻り値
β

Generated on Wed Nov 12 2014 19:44:29 for MIST by doxygen 1.8.1.2