OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
cv::DownhillSolver クラス abstract

This class is used to perform the non-linear non-constrained minimization of a function, [詳解]

#include <optim.hpp>

cv::MinProblemSolverを継承しています。

公開メンバ関数

virtual void getInitStep (OutputArray step) const =0
ダウンヒルシンプレックスアルゴリズムで使用される初期ステップを返します。[【詳解】(英語]
virtual void setInitStep (InputArray step)=0
下り坂シンプレックス・アルゴリズムで使用される初期ステップを設定します。[【詳解】(英語]
- 基底クラス cv::MinProblemSolver に属する継承公開メンバ関数
virtual Ptr< Function > getFunction () const =0
最適化された関数のゲッター。[【詳解】(英語]
virtual void setFunction (const Ptr< Function > &f)=0
最適化された関数のセッター。[【詳解】(英語]
virtual TermCriteria getTermCriteria () const =0
このアルゴリズムに以前に設定された最終基準のゲッター。[【詳解】(英語]
virtual void setTermCriteria (const TermCriteria &termcrit)=0
ソルバーの最終基準を設定する。[【詳解】(英語]
virtual double minimize (InputOutputArray x)=0
実際にアルゴリズムを実行し、最小化を行います。[【詳解】(英語]
- 基底クラス cv::Algorithm に属する継承公開メンバ関数
virtual CV_WRAP void clear ()
アルゴリズムの状態をクリアする[【詳解】(英語]
virtual void write (FileStorage &fs) const
アルゴリズムのパラメーターをファイルストレージに格納[【詳解】(英語]
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
virtual CV_WRAP void read (const FileNode &fn)
アルゴリズム・パラメータをファイル・ストレージから読み込みます。[【詳解】(英語]
virtual CV_WRAP bool empty () const
が空の場合はtrueを返します。Algorithmが空の場合は真を返します。[【詳解】(英語]
virtual CV_WRAP void save (const String &filename) const
virtual CV_WRAP String getDefaultName () const

静的公開メンバ関数

static Ptr< DownhillSolver > create (const Ptr< MinProblemSolver::Function > &f=Ptr< MinProblemSolver::Function >(), InputArray initStep=Mat_< double >(1, 1, 0.0), TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5000, 0.000001))
この関数は,すぐに使用可能なDownhillSolverオブジェクトを作成します。[【詳解】(英語]
- 基底クラス cv::Algorithm に属する継承静的公開メンバ関数
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
ファイル・ノードからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
ファイルからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
文字列からアルゴリズムを読み込む[【詳解】(英語]

その他の継承メンバ

- 基底クラス cv::Algorithm に属する継承限定公開メンバ関数
void writeFormat (FileStorage &fs) const

詳解

このクラスは、関数の非線形非制約最小化を実行するために使用されます。

で定義されたn-次元ユークリッド空間上で定義された、勾配が既知の関数の非線形非制約最小化を行うために使用します。Nelder-Mead法, ダウンヒルシンプレックス法**としても知られています。この方法の基本的な考え方は、以下のサイトから得ることができます。http://en.wikipedia.org/wiki/Nelder-Mead_method.

この方法は、決定論的ではありますが、どちらかというとヒューリスティックであり、したがって、グローバルなものではなく、ローカルなミニマムに収束する可能性があることに注意する必要があります。この手法は反復最適化手法であり、各ステップではn+1点でのみ評価される関数の値に関する情報を用いてシンプレックスを使用します。n-次元空間として配置された点でのみ評価される関数の値に関する情報を各ステップで使用する反復最適化手法です(このため、手法の2番目の名前が付けられました)。各ステップでは、関数を評価するために新しい点が選択され、得られた値は以前のものと比較され、この情報に基づいてシンプレックスはその形を変え、ローカル・ミニマムにゆっくりと移動していきます。したがって、この方法はのみを使用しています。非線形共役勾配法(optimにも実装されている)とは逆に、関数の値だけを使って判断しています。

Algorithmは、正の整数 termcrit.maxCount と正の非整数 termcrit.epsilon で定義されたいくつかの条件で、行われた関数評価の数が termcrit.maxCount を超えたとき、シンプレックスの頂点での関数値が termcrit.epsilon の範囲内になったとき、またはシンプレックスが termcrit.epsilon の辺を持つボックスで囲むことができるほど小さくなったとき、いずれの場合でも最初に停止します。

覚え書き
DownhillSolverは,抽象インターフェースcv::MinProblemSolverインターフェースから派生したものでありAlgorithmインターフェイスから派生したもので,optimモジュールのすべての非線形最適化アルゴリズムに共通する機能をカプセル化するために使用されます。
用語の基準は以下の条件を満たす必要があります。
termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0
@ MAX_ITER
ditto
Definition: core/types.hpp:861
@ EPS
the desired accuracy or change in parameters at which the iterative algorithm stops
Definition: core/types.hpp:862
int type
Definition: core/types_c.h:919

関数詳解

create()

static Ptr< DownhillSolver > cv::DownhillSolver::create ( const Ptr< MinProblemSolver::Function > & f = Ptr<MinProblemSolver::Function >(),
InputArray initStep = Mat_< double >(1, 1, 0.0),
TermCriteria termcrit = TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5000, 0.000001)
)
static

この関数は,すぐに使用可能なDownhillSolverオブジェクトを作成します。

すべてのパラメータはオプションであるため、パラメータがまったくない場合でもこの手続きを呼び出すことができます。この場合は、デフォルト値が使用されます。ターミナル基準のデフォルト値は、唯一の賢明なものであるためです。MinProblemSolver::setFunction()およびDownhillSolver::setInitStep()にそれぞれのパラメータが与えられていない場合は,得られたオブジェクトに対してcreate(). そうでない場合は,2つの方法(createDownhillSolver() にパラメータを与えるか,パラメータを与えずに .DownhillSolver() を呼び出すか)があります.MinProblemSolver::setFunction()およびDownhillSolver::setInitStep()を呼び出す)は,全く同等です(無効な入力が検出された場合には,同じようにエラーが発生します)。

引数
f で送信したものと同様に,最小化される関数へのポインタを指定します.MinProblemSolver::setFunction.
initStep MinProblemSolver::setInitStepで送信したものと同様に、初期シンプレックスを構築するために使用される初期ステップです。
termcrit アルゴリズムへの末端の基準は、以下の方法で提出したものと同様です。MinProblemSolver::setTermCriteria.

getInitStep()

virtual void cv::DownhillSolver::getInitStep ( OutputArray step ) const
pure virtual

ダウンヒルシンプレックスアルゴリズムで使用される初期ステップを返します。

引数
step アルゴリズムで使用される初期ステップです。対応するセッターは行ベクトルと同様に列ベクトルも受け入れますが、このメソッドは行ベクトルを返すことに注意してください。
参照
DownhillSolver::setInitStep

setInitStep()

virtual void cv::DownhillSolver::setInitStep ( InputArray step )
pure virtual

下り坂シンプレックス・アルゴリズムで使用される初期ステップを設定します。

ステップは、初期点 (で指定) と共にDownhillSolver::minimizeで与えられる)は2n-次元のベクトルで、初期シンプレックスの形状を決定するために使用されます。大雑把に言うと、初期点は単純交点の位置(単純交点のセントロイドになる)を決定し、ステップは単純交点の広がり(各次元でのサイズ)を決定します。より正確には、もし$s,x_0\in\mathbb{R}^n$をそれぞれ初期ステップ、初期点とすると、単純十字の頂点は次のようになります。$v_0:=x_0-\frac{1}{2} s$および$v_i:=x_0+s_i$のためのものです。$i=1,2,\dots,n$ここで$s_i$の初期ステップの投影を表します。n-番目の座標(射影の結果は次式で与えられるベクトルとして扱われる)。$s_i:=e_i\cdot\left<e_i\cdot s\right>$ここで$e_i$は正準基底を形成する)。

引数
step アルゴリズムで使用される初期ステップ。大雑把に言うと、初期シンプレックスの広がり(各次元での大きさ)を決めるものです。

このクラス詳解は次のファイルから抽出されました: