FMIN_SLSQP
Utility/Data Access SubroutineSLSQP最適化エンジンは、非線形の制約付き勾配ベースの最適化のための逐次最小二乗プログラミングアルゴリズムです。不等式制約と等式制約の両方をサポートします。
定義
この関数については、Scipyのscipy.optimize.fmin_slsqpにも記載されています。
使用
このユーティリティは、Pythonで作成された任意のユーザー定義のサブルーチンから呼び出すことができます。
フォーマット
fmin_slsqp(func, x0, eqcons=[], f_eqcons=None, ieqcons=[], f_ieqcons=None, bounds=[], fprime=None, fprime_eqcons=None, fprime_ieqcons=None, args=(), iter=100, acc=1e-06, iprint=1, disp=None, full_output=0, epsilon=1.4901161193847656e-08)
属性
- func
- 最小化すべき目的関数を評価する、Pythonによって呼び出すことが可能な関数。
- X0
- 独立変数の初期推定値。
- eqcons
- FMIN_SLSQPで維持する必要のあるすべての等式制約を指定する長さNの関数のリスト。適切に最適化された問題では、FMIN_SLSQPでeqcons[i](x,*args) == 0, i=1…Mが保証されます。ここで、 M=len(eqcons)
- f_eqcons
- f_eqconsは、Pythonから呼び出し可能な関数です。この関数は、浮動小数点数の1-D配列を返します。これは、適切に最適化された問題では0.0になる必要があります。f_eqconsは次の形式を取ります: f(x, *args)
- ieqcons
- FMIN_SLSQPで満たす必要のあるすべての不等式制約を指定する長さNの関数のリスト。適切に最適化された問題では、FMIN_SLSQPでieqcons[i](x,*args) >= 0, i=1…M'が保証されます。ここで、 M'=len(ieqcons)
- f_ieqcons
- f_ieqconsは、Pythonから呼び出し可能な関数です。この関数は、浮動小数点数の1-D配列を返します。これは、適切に最適化された問題では0.0以上になる必要があります。
- bounds
- 各独立変数の下限と上限を指定するタイプのリスト。次の形式を取ります:[ (xl0,xu0), (xl1,xu1), ...(xlN,xuN)]
- fprime
- 独立変数に対するfuncの偏導関数を評価する関数。
- fprime_eqcons
- Pythonから呼び出し可能な関数。この関数は、浮動小数点数のMxN配列で等式制約のヤコビアンマトリクスを返します。
- fprime_ieqcons
- Pythonから呼び出し可能な関数。この関数は、浮動小数点数のMxN配列で等式制約のヤコビアンマトリクスを返します。
- args
- これらは、func、fprime、fprime_eqcons、およびfprime_ieqconsに渡される追加の引数です。
- iter
- これは、FMIN_SLSQPで最小値を取得するために使用可能な反復計算の最大数を指定します。
- acc
- これは、解に必要な精度です。
- iprint
- これは、FMIN_SLSQPによって生成される診断の冗長性を定義します。
- iprint <= 0 :出力なし。
- iprint == 1 : 完了時にサマリーを出力します(デフォルト)。
- iprint >= 2 : 反復ごとのステータスとサマリーを出力します。
- disp
- これは、FMIN_SLSQPによって生成される診断の冗長性を定義します。指定した場合、dispはiprintインターフェースより優先されます。
- full_output
- falseの場合は、funcの最小点のみを返します(デフォルト)。そうでない場合は、出力の最終的な目的関数とサマリー情報を返します。
- epsilon
- 有限差分導関数評価のステップサイズ。
出力
- out
- funcの最終的な最小点。
- fx
- full_outputがtrueの場合、fxには目的関数の最終値が含まれます。
- its
- full_outputがtrueの場合は、実行された反復計算の回数が含まれます。
- imode
- full_outputがtrueの場合は、最適化エンジンからの終了モードが含まれます。imodeの値は、以下の意味を持ちます:
- -1
- 勾配評価が必要。
- 0
- 最適化が正常に終了。
- 1
- 関数評価が必要。
- 2
- 独立変数より多くの等式制約。
- 3
- LSQ部分問題内の3*nを超える反復計算。
- 4
- 不等式制約に適合性がない。
- 5
- LSQ部分問題内の非正則マトリクスE。
- 6
- LSQ部分問題内の非正則マトリクスC。
- 7
- 階数不足の等式制約部分問題HFTI。
- 8
- 直線探索用の正方向導関数。
- 9
- 反復計算の制限を超えている。
- smode
- full_outputがtrueの場合は、最適化エンジンからの終了モードに関するメッセージが含まれます。
コメント
- FMIN_SLSQPは、元々はDieter Kraftによって実装されたSLSQP最適化関数のインターフェース関数です。SLSQPは、逐次最小二乗プログラミングアルゴリズムです。
- 最適化は、MotionSolveで、CONSUBユーザーサブルーチンをFMIN_SLSQPと共に使用することで実行できます。これは、モデル同定やメカニズム最適化に使用できます。CONSUBは、Fortran/C/C++またはPython/MATLABスクリプトで記述できます。