Main Content

反復と関数カウント

Optimization Toolbox™ のソルバーは通常、繰り返し検索を行って最適解を求めます。ソルバーは開始値 x0 から開始して中間の計算を実行し、新しい点 x1 に到達します。その後、処理を繰り返し、局所的最小値の近似値 x2、x3、... を連続的に求めます。処理は一定の k 回の反復の後、停止します。

optimoptions を使用して MaxIterations オプションまたは MaxFunctionEvaluations オプションを設定することで、反復回数や関数カウントを制限できます。いずれかの制限に到達した後にもソルバーを継続させたい場合、これらのオプションの値を引き上げます。詳細については、最適化オプションの設定と変更を参照してください。

どのステップでも、中間の計算は、現在の反復 xi の近くの点で目的関数と制約の評価を行います。たとえば、ソルバーは有限差分法による勾配推定を行うことがあります。各近傍点で、関数カウント (F-count) が 1 ずつ増加します。図3 次元空間での一般的な反復は、サイズがデルタの前進有限差分を使用した 3 次元空間では、1 反復は通常、関数カウントの 4 増加に対応することを示しています。この図で、ei は、i 番目の座標方向の単位ベクトルを表します。

3 次元空間での一般的な反復

  • 問題に制約がない場合、F-count は目的関数評価の合計数を示します。

  • 問題に制約がある場合、F-count は制約関数評価の合計数ではなく関数評価される点の数のみを示します。したがって、問題に制約が多数ある場合、F-count は関数評価の合計数より大幅に小さくなります。

時には、ソルバーはステップを試み、その試みを拒否します。trust-regiontrust-region-reflectivetrust-region-dogleg のアルゴリズムは、この失敗した試みを反復として数え、反復表示でその結果 (変化のない) を報告します。interior-pointactive-setlevenberg-marquardt のアルゴリズムは、失敗した試みを反復として数えず、反復表示でその試みを報告しません。試行されたすべてのステップにより、アルゴリズムに関係なく F-count が増加します。

F-count は、多くのソルバーの反復表示のヘッダーにあります。例については、結果の解釈を参照してください。

F-count は、出力構造体の output.funcCount に現れます。これにより、プログラムから計算回数にアクセスすることができます。詳細については、出力構造体を参照してください。

参考

関連するトピック