ネームスペース | 関数
minimization.h

関数の最小化を扱うためのライブラリ [詳細]

#include "config/mist_conf.h"
#include "matrix.h"
#include "limits.h"
#include <cmath>
#include <vector>
#include <algorithm>

ソースコードを見る。

ネームスペース

namespace  mist
namespace  mist::gold
 黄金分割を用いた極小値の1次元探索(1次収束)
namespace  mist::brent
 Brent の放物線補間を用いた極小値の1次元探索(2次収束)
namespace  mist::Armijo
 Armijoの基準を用いた極小値の一次元探索
namespace  mist::gradient_with_vector
 勾配関数をユーザーが定義する最急降下法(勾配を用いた多変数関数の極小値の探索)
namespace  mist::gradient
 最急降下法(勾配を用いた多変数関数の極小値の探索)
namespace  mist::conjugate_gradient
 共役勾配法(勾配を用いた多変数関数の極小値の探索)
namespace  mist::powell
 Powell法(方向集合を用いた多変数関数の極小値の探索)
namespace  mist::lucidi
 Lucidi法(方向集合を用いた多変数関数の極小値の探索)
namespace  mist::condor
 CONDOR法(多変数関数の極小値の探索)

関数

template<class Functor >
bool mist::enclose (double &a, double &b, double &c, double &fa, double &fb, double &fc, Functor f, size_t max_iterations=100)
 f(x)の一次元探索において,極小値を与える x を囲む区間を決定する
template<class Functor >
double mist::gold::minimization (double a, double b, double &x, Functor f, double tolerance, size_t &iterations, size_t max_iterations, bool use_enclose=true)
 黄金分割を利用して,f(x)の極小値の一次元探索を行う(1次収束)
template<class Functor >
double mist::gold::minimization (double a, double b, double &x, Functor f, double tolerance, size_t max_iterations=1000, bool use_enclose=true)
 黄金分割を利用して,f(x)の極小値の一次元探索を行う(1次収束)
template<class Functor >
double mist::brent::minimization (double a, double b, double &x, Functor f, double tolerance, size_t &iterations, size_t max_iterations, bool use_enclose=true)
 Brent の放物線補間を用いて,指定された区間内の f(x) の極小値の一次元探索を行う(2次収束)
template<class Functor >
double mist::brent::minimization (double a, double b, double &x, Functor f, double tolerance, size_t max_iterations=1000, bool use_enclose=true)
 Brent の放物線補間を用いて,f(x)の極小値の一次元探索を行う(2次収束)
template<class T , class Allocator , class Functor , class T2 >
double mist::Armijo::minimization (array2< T, Allocator > &p, Functor f, const array2< T, Allocator > &grad, const array2< T, Allocator > &d, T2 &data, const double rho=0.7, const double c=0.1, const size_t max_iterations=10)
 Armijoの基準を用いて,f(x)の極小値の一次元探索を行う
template<class T , class Allocator , class Functor >
double mist::Armijo::minimization (array2< T, Allocator > &p, Functor f, const array2< T, Allocator > &grad, const array2< T, Allocator > &d, const double rho=0.7, const double c=0.1, const size_t max_iterations=10)
 Armijoの基準を用いて,f(x)の極小値の一次元探索を行う
template<class T , class Allocator , class Functor1 , class Functor2 >
double mist::gradient_with_vector::minimization (matrix< T, Allocator > &p, Functor1 f, Functor2 g, double tolerance, size_t &iterations, size_t max_iterations=1000)
 探索の開始点を指定し,ユーザーが指定した勾配計算関数を用いて最小値を探索する
template<class T , class Allocator , class Functor1 , class Functor2 >
double mist::gradient_with_vector::minimization (matrix< T, Allocator > &p, const matrix< T, Allocator > &bound, Functor1 f, Functor2 g, double tolerance, size_t &iterations, size_t max_iterations=1000)
 探索の開始点を指定し,ユーザーが指定した勾配計算関数を用いて最小値を探索する
template<class T , class Allocator , class Functor1 , class Functor2 >
double mist::gradient_with_vector::minimization (matrix< T, Allocator > &p, const matrix< T, Allocator > &bound, Functor1 f, Functor2 g, double tolerance, size_t max_iterations=1000)
 探索の開始点を指定し,ユーザーが指定した勾配計算関数を用いて最小値を探索する
template<class T , class Allocator , class Functor1 , class Functor2 >
double mist::gradient_with_vector::minimization (matrix< T, Allocator > &p, Functor1 f, Functor2 g, double tolerance, size_t max_iterations=1000)
 探索の開始点を指定し,ユーザーが指定した勾配計算関数を用いて最小値を探索する
template<class T , class Allocator , class Functor >
double mist::gradient::minimization (matrix< T, Allocator > &p, Functor f, double tolerance, double distance, size_t &iterations, size_t max_iterations=1000)
 探索の開始点を指定し,勾配を計算しながら最小値を探索する
template<class T , class Allocator , class Functor >
double mist::gradient::minimization (matrix< T, Allocator > &p, const matrix< T, Allocator > &bound, Functor f, double tolerance, double distance, size_t &iterations, size_t max_iterations=1000)
 探索の開始点を指定し,勾配を計算しながら最小値を探索する
template<class T , class Allocator , class Functor1 , class Functor2 , class T2 >
double mist::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)
 探索の開始点を指定し,最急降下法(Steepest descent method)によりユーザーが指定した勾配計算関数を用いて最小値を探索する
template<class T , class Allocator , class Functor1 , class Functor2 >
double mist::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)
 探索の開始点を指定し,最急降下法(Steepest descent method)によりユーザーが指定した勾配計算関数を用いて最小値を探索する
template<class T , class Allocator , class Functor >
double mist::gradient::minimization (matrix< T, Allocator > &p, Functor f, double tolerance, double distance=1.0, size_t max_iterations=1000)
 探索の開始点を指定し,勾配を計算しながら最小値を探索する
template<class T , class Allocator , class Functor >
double mist::gradient::minimization (matrix< T, Allocator > &p, const matrix< T, Allocator > &bound, Functor f, double tolerance, double distance=1.0, size_t max_iterations=1000)
 探索の開始点を指定し,勾配を計算しながら最小値を探索する
template<class T >
double mist::conjugate_gradient::Polak_Ribiere_Polyak (const array2< T > &g0, const array2< T > &g1)
 共役勾配法(conjugate gradient method)のβをPolak-Ribiere-Polyakの公式で計算する
template<class T >
double mist::conjugate_gradient::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 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)によりユーザーが指定した勾配計算関数を用いて最小値を探索する
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)によりユーザーが指定した勾配計算関数を用いて最小値を探索する
template<class T , class Allocator , class Functor >
double mist::powell::minimization (matrix< T, Allocator > &p, matrix< T, Allocator > &dirs, Functor f, double tolerance, size_t &iterations, size_t max_iterations=1000)
 Powell 法による多次元変数による極小値の探索を行う
template<class T , class Allocator , class Functor >
double mist::powell::minimization (matrix< T, Allocator > &p, matrix< T, Allocator > &dirs, matrix< T, Allocator > &bound, Functor f, double tolerance, size_t &iterations, size_t max_iterations=1000)
 Powell 法による多次元変数による極小値の探索を行う
template<class T , class Allocator , class Functor >
double mist::powell::minimization (matrix< T, Allocator > &p, matrix< T, Allocator > &dirs, Functor f, double tolerance, size_t max_iterations=1000)
 Powell 法による多次元変数による極小値の探索を行う
template<class T , class Allocator , class Functor >
double mist::powell::minimization (matrix< T, Allocator > &p, matrix< T, Allocator > &dirs, matrix< T, Allocator > &bound, Functor f, double tolerance, size_t max_iterations=1000)
 Powell 法による多次元変数による極小値の探索を行う
template<class T , class Allocator , class Functor >
double mist::lucidi::minimization (matrix< T, Allocator > &p, matrix< T, Allocator > &dirs, Functor f, double tolerance, size_t &iterations, size_t max_iterations=1000)
 Lucidi 提案の多変数関数の極小値探索
template<class T , class Allocator , class Functor >
double mist::lucidi::minimization (matrix< T, Allocator > &p, matrix< T, Allocator > &dirs, Functor f, double tolerance, size_t max_iterations=1000)
 Powell 法による多次元変数による極小値の探索を行う
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 アルゴリズムの初期パラメータ群を求める関数
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)
 指定したパラメータと評価値からラグランジェ多項式を構成する
template<class Matrix >
double mist::condor::compute_lambda_function1 (const Matrix &H)
 Trust Region を求める際のλの上下限の計算に用いる補助関数
template<class Matrix >
double mist::condor::compute_lambda_function2 (const Matrix &H, double alpha=1.0)
 Trust Region を求める際のλの上下限の計算に用いる補助関数
template<class Matrix >
double mist::condor::compute_lambda_lower_bound (const Matrix &H, double dg_delta)
 Trust Region を求める際のλの下限の初期値
template<class Matrix >
double mist::condor::compute_lambda_upper_bound (const Matrix &H, double dg_delta)
 Trust Region を求める際のλの上限の初期値
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 内の最小値を与える方向を求める関数
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 アルゴリズムを用いて評価関数の最小値を探索する
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 アルゴリズムを用いて評価関数の最小値を探索する
template<class T , class Allocator , class Functor >
double mist::condor::minimization (matrix< T, Allocator > &p, Functor f, double tolerance, size_t max_iterations)
 CONDOR アルゴリズムを用いて評価関数の最小値を探索する

説明

関数の最小化を扱うためのライブラリ


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