- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

- ネームスペース一覧
- ネームスペースメンバ

関数
ネームスペース mist::condor
関数の最小化

CONDOR法（多変数関数の極小値の探索） [詳細]

## 関数
template<class Matrix , class Functor >
size_t | generate_first_point_set (const Matrix &xbase, std::vector< Matrix > &x, Matrix &f, Functor func, double rho)
| CONDOR アルゴリズムの初期パラメータ群を求める関数
template<class Matrix >
bool | compute_polynomial_basis (std::vector< Matrix > &x, Matrix &f, std::vector< __condor_utility__::polynomial > &poly_bases, __condor_utility__::polynomial &poly)
| 指定したパラメータと評価値からラグランジェ多項式を構成する
template<class Matrix >
double | compute_lambda_function1 (const Matrix &H)
| Trust Region を求める際のλの上下限の計算に用いる補助関数
template<class Matrix >
double | compute_lambda_function2 (const Matrix &H, double alpha=1.0)
| Trust Region を求める際のλの上下限の計算に用いる補助関数
template<class Matrix >
double | compute_lambda_lower_bound (const Matrix &H, double dg_delta)
| Trust Region を求める際のλの下限の初期値
template<class Matrix >
double | compute_lambda_upper_bound (const Matrix &H, double dg_delta)
| Trust Region を求める際のλの上限の初期値
template<class Matrix >
void | compute_trust_region_step (const Matrix &xbest, Matrix &s, __condor_utility__::polynomial &poly, double delta, size_t max_loop=1000)
| CONDOR アルゴリズム内で使用する Trust Region 内の最小値を与える方向を求める関数
template<class T , class Allocator , class Functor >
double | minimization (matrix< T, Allocator > &p, Functor func, double rho, double rho_end, double tolerance, size_t &iterations, size_t max_iterations=1000)
| CONDOR アルゴリズムを用いて評価関数の最小値を探索する
template<class T , class Allocator , class Functor >
double | minimization (matrix< T, Allocator > &p, Functor f, double rho, double rho_end, size_t max_iterations)
| CONDOR アルゴリズムを用いて評価関数の最小値を探索する
template<class T , class Allocator , class Functor >
double | minimization (matrix< T, Allocator > &p, Functor f, double tolerance, size_t max_iterations)
| CONDOR アルゴリズムを用いて評価関数の最小値を探索する

## 説明

CONDOR法（多変数関数の極小値の探索）

- 参考文献
  - F. V. Berghen, H. Bersini, ``CONDOR, a new parallel, constrained extension of Powell's UOBYQA algorithm: Experimental results and comparison with the DFO algorithm,'' Journal of Computational and Applied Mathematics, Elsevier, Volume 181, Issue 1, September 2005, pp. 157–175

## 関数

template<class Matrix >

double mist::condor::compute_lambda_function1 | ( | const Matrix & | H | ) |
| inline

Trust Region を求める際のλの上下限の計算に用いる補助関数

引数

  [in] | H | … ラグランジェ多項式から求めたヘッセ行列

戻り値

参照元 compute_lambda_lower_bound().

template<class Matrix >

double mist::condor::compute_lambda_function2 | ( | const Matrix & | H,
|  | double | alpha = `1.0`
| ) |  |
| inline

Trust Region を求める際のλの上下限の計算に用いる補助関数

引数

  [in] | H | … ラグランジェ多項式から求めたヘッセ行列
  [in] | alpha | … H( i, i ) の符号

戻り値

参照元 compute_lambda_lower_bound(), compute_lambda_upper_bound(), と minimization().

template<class Matrix >

double mist::condor::compute_lambda_lower_bound | ( | const Matrix & | H,
|  | double | dg_delta
| ) |  |
| inline

Trust Region を求める際のλの下限の初期値

引数

  [in] | H | … ラグランジェ多項式から求めたヘッセ行列
  [in] | dg_delta | … ||g|| / delta

戻り値
  λの下限の初期値

参照先 compute_lambda_function1(), と compute_lambda_function2().

参照元 compute_trust_region_step().

template<class Matrix >

double mist::condor::compute_lambda_upper_bound | ( | const Matrix & | H,
|  | double | dg_delta
| ) |  |
| inline

Trust Region を求める際のλの上限の初期値

引数

  [in] | H | … ラグランジェ多項式から求めたヘッセ行列
  [in] | dg_delta | … ||g|| / delta

戻り値
  λの上限の初期値

参照先 compute_lambda_function2().

参照元 compute_trust_region_step().

template<class Matrix >

bool mist::condor::compute_polynomial_basis | ( | std::vector< Matrix > & | x,
|  | Matrix & | f,
|  | std::vector< __condor_utility__::polynomial > & | poly_bases,
|  | __condor_utility__::polynomial & | poly
| ) |  |

指定したパラメータと評価値からラグランジェ多項式を構成する

引数

  [in] | x | … 評価値を計算したパラメータ群
  [in] | f | … パラメータに対応した評価値
  [in,out] | poly_bases | … Trust Region を構成するラグランジェ多項式の基底
  [out] | poly | … Trust Region を構成するラグランジェ多項式

戻り値
  ラグランジェ多項式が正しくもとまったかどうか

参照元 minimization().

template<class Matrix >

void mist::condor::compute_trust_region_step | ( | const Matrix & | xbest,
|  | Matrix & | s,
|  | __condor_utility__::polynomial & | poly,
|  | double | delta,
|  | size_t | max_loop = `1000`
| ) |  |

CONDOR アルゴリズム内で使用する Trust Region 内の最小値を与える方向を求める関数

引数

  [in] | xbest | … 現時点での最も良い評価値を与えるパラメータ
  [in] | s | … Trust Region を探索した結果，評価値を減少させるであろう方向
  [in] | poly | … Trust Region を構成するラグランジェ多項式
  [in] | delta | … Trust Region の半径
  [in] | max_loop | … Trust Region 内の探索を行う最大反復回数

参照先 compute_lambda_lower_bound(), と compute_lambda_upper_bound().

参照元 minimization().

template<class Matrix , class Functor >

size_t mist::condor::generate_first_point_set | ( | const Matrix & | xbase,
|  | std::vector< Matrix > & | x,
|  | Matrix & | f,
|  | Functor | func,
|  | double | rho
| ) |  |

CONDOR アルゴリズムの初期パラメータ群を求める関数

引数

  [in] | xbase | … 探索開始パラメータ
  [out] | x | … 評価値を計算したパラメータ群
  [out] | f | … パラメータに対応した評価値
  [in] | func | … 評価関数
  [in] | rho | … 探索ステップ

戻り値
  最も評価値の良いパラメータのインデックスを返す

参照元 minimization().

template<class T , class Allocator , class Functor >

double mist::condor::minimization | ( | matrix< T, Allocator > & | p,
|  | Functor | func,
|  | double | rho,
|  | double | rho_end,
|  | double | tolerance,
|  | size_t & | iterations,
|  | size_t | max_iterations = `1000`
| ) |  |

CONDOR アルゴリズムを用いて評価関数の最小値を探索する

探索の開始点を指定し，その近傍点を評価しながら最小値を探索する． 関数の導関数が不要であり，値の範囲に制限が無いバージョン．

- 参考文献
  - F. V. Berghen, H. Bersini, ``CONDOR, a new parallel, constrained extension of Powell's UOBYQA algorithm: Experimental results and comparison with the DFO algorithm,'' Journal of Computational and Applied Mathematics, Elsevier, Volume 181, Issue 1, September 2005, pp. 157–175

注意
  本プログラムはMISTチームが独自に実装したCONDORアルゴリズムのため，Berghen 氏が公開されているプログラムとは同じ結果とならない可能性があります．

引数

  [in,out] | p | … 探索の開始ベクトル，探索終了後に最小値を与えるベクトルが代入される
  [in] | func | … 評価関数
  [in] | rho | … 探索初期のステップ幅
  [in] | rho_end | … 探索終了時のステップ幅
  [in] | tolerance | … 探索終了時の許容相対誤差
  [out] | iterations | … 反復回数の結果が代入される
  [in] | max_iterations | … 最大反復回数

戻り値
  極小を与える座標値における評価値

参照先 compute_lambda_function2(), compute_polynomial_basis(), compute_trust_region_step(), generate_first_point_set(), と mist::matrix< T, Allocator >::rows().

template<class T , class Allocator , class Functor >

double mist::condor::minimization | ( | matrix< T, Allocator > & | p,
|  | Functor | f,
|  | double | rho,
|  | double | rho_end,
|  | size_t | max_iterations
| ) |  |

CONDOR アルゴリズムを用いて評価関数の最小値を探索する

探索の開始点を指定し，その近傍点を評価しながら最小値を探索する． 関数の導関数が不要であり，値の範囲に制限が無いバージョン．

- 参考文献
  - F. V. Berghen, H. Bersini, ``CONDOR, a new parallel, constrained extension of Powell's UOBYQA algorithm: Experimental results and comparison with the DFO algorithm,'' Journal of Computational and Applied Mathematics, Elsevier, Volume 181, Issue 1, September 2005, pp. 157–175

注意
  本プログラムはMISTチームが独自に実装したCONDORアルゴリズムのため，Berghen 氏が公開されているプログラムとは同じ結果とならない可能性があります．

引数

  [in,out] | p | … 探索の開始ベクトル，探索終了後に最小値を与えるベクトルが代入される
  [in] | f | … 評価関数
  [in] | rho | … 探索初期のステップ幅
  [in] | rho_end | … 探索終了時のステップ幅
  [in] | max_iterations | … 最大反復回数

戻り値
  極小を与える座標値における評価値

参照先 mist::gold::minimization().

template<class T , class Allocator , class Functor >

double mist::condor::minimization | ( | matrix< T, Allocator > & | p,
|  | Functor | f,
|  | double | tolerance,
|  | size_t | max_iterations
| ) |  |

CONDOR アルゴリズムを用いて評価関数の最小値を探索する

探索の開始点を指定し，その近傍点を評価しながら最小値を探索する． 関数の導関数が不要であり，値の範囲に制限が無いバージョン． 許容相対誤差のみで終了判定を行うバージョンであり，初期探索ステップ幅は 1.0 である．

- 参考文献
  - F. V. Berghen, H. Bersini, ``CONDOR, a new parallel, constrained extension of Powell's UOBYQA algorithm: Experimental results and comparison with the DFO algorithm,'' Journal of Computational and Applied Mathematics, Elsevier, Volume 181, Issue 1, September 2005, pp. 157–175

注意
  本プログラムはMISTチームが独自に実装したCONDORアルゴリズムのため，Berghen 氏が公開されているプログラムとは同じ結果とならない可能性があります．

引数

  [in,out] | p | … 探索の開始ベクトル，探索終了後に最小値を与えるベクトルが代入される
  [in] | f | … 評価関数
  [in] | tolerance | … 探索終了時の許容相対誤差
  [in] | max_iterations | … 最大反復回数

戻り値
  極小を与える座標値における評価値

参照先 mist::gold::minimization().