FMIN_SLSQP

Utility/Data Access SubroutineSLSQP最適化エンジンは、非線形の制約付き勾配ベースの最適化のための逐次最小二乗プログラミングアルゴリズムです。不等式制約と等式制約の両方をサポートします。

定義

注: FMIN_SLQPは、Python関数としてのみ使用可能です。

この関数については、Scipyのscipy.optimize.fmin_slsqpにも記載されています。

使用

このユーティリティは、Pythonで作成された任意のユーザー定義のサブルーチンから呼び出すことができます。

フォーマット

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によって呼び出すことが可能な関数。
タイプ:という形式の呼び出し可能な関数。 f(x, *args)
X0
独立変数の初期推定値。
タイプ:浮動小数点数の1D配列。ここで、 N = len(x0)
eqcons
FMIN_SLSQPで維持する必要のあるすべての等式制約を指定する長さNの関数のリスト。適切に最適化された問題では、FMIN_SLSQPeqcons[i](x,*args) == 0, i=1…Mが保証されます。ここで、 M=len(eqcons)
タイプ:リスト
f_eqcons
f_eqconsは、Pythonから呼び出し可能な関数です。この関数は、浮動小数点数の1-D配列を返します。これは、適切に最適化された問題では0.0になる必要があります。f_eqconsは次の形式を取ります: f(x, *args)
eqconsを指定した場合、f_eqconsは無視されます。

タイプ:という形式の呼び出し可能な関数。 f(x, *args)

ieqcons
FMIN_SLSQPで満たす必要のあるすべての不等式制約を指定する長さNの関数のリスト。適切に最適化された問題では、FMIN_SLSQPieqcons[i](x,*args) >= 0, i=1…M'が保証されます。ここで、 M'=len(ieqcons)
タイプ:リスト
f_ieqcons
f_ieqconsは、Pythonから呼び出し可能な関数です。この関数は、浮動小数点数の1-D配列を返します。これは、適切に最適化された問題では0.0以上になる必要があります。
f_eqconsは次の形式を取ります: f(x, *args)
ieqconsを指定した場合、f_ieqconsは無視されます。
タイプ:という形式の呼び出し可能な関数。 f(x, *args)
bounds
各独立変数の下限と上限を指定するタイプのリスト。次の形式を取ります:[ (xl0,xu0), (xl1,xu1), ...(xlN,xuN)]
タイプ:という形式の呼び出し可能な関数。 f(x, *args)
fprime
独立変数に対するfuncの偏導関数を評価する関数。
タイプ:長さがNの1-D配列を返すf(x, *args)という形式の呼び出し可能な関数。
fprime_eqcons
Pythonから呼び出し可能な関数。この関数は、浮動小数点数のMxN配列で等式制約のヤコビアンマトリクスを返します。
fprime_eqconsを指定しない場合、ヤコビアンマトリクスは有限差分を介して取得されます。有限差分は、計算コストが高く、精度が低い場合があることが知られています。
タイプ:MxN配列を返すf(x, *args)という形式の呼び出し可能な関数。
fprime_ieqcons
Pythonから呼び出し可能な関数。この関数は、浮動小数点数のMxN配列で等式制約のヤコビアンマトリクスを返します。
fprime_ieqconsを指定しない場合、ヤコビアンマトリクスは有限差分を介して取得されます。有限差分は、計算コストが高く、精度が低い場合があることが知られています。
タイプ:M'xN配列を返すf(x, *args)という形式の呼び出し可能な関数。
args
これらは、funcfprimefprime_eqcons、およびfprime_ieqconsに渡される追加の引数です。
タイプ:数列
iter
これは、FMIN_SLSQPで最小値を取得するために使用可能な反復計算の最大数を指定します。
タイプ:整数
acc
これは、解に必要な精度です。
タイプ:浮動小数点数
iprint
これは、FMIN_SLSQPによって生成される診断の冗長性を定義します。
  • iprint <= 0 :出力なし。
  • iprint == 1 : 完了時にサマリーを出力します(デフォルト)。
  • iprint >= 2 : 反復ごとのステータスとサマリーを出力します。
タイプ: 整数
disp
これは、FMIN_SLSQPによって生成される診断の冗長性を定義します。指定した場合、dispiprintインターフェースより優先されます。
タイプ: 整数
full_output
falseの場合は、funcの最小点のみを返します(デフォルト)。そうでない場合は、出力の最終的な目的関数とサマリー情報を返します。

タイプ: ブール

epsilon
有限差分導関数評価のステップサイズ。
タイプ: 浮動小数点数

出力

out
funcの最終的な最小点。
タイプ:1D浮動小数点数配列
fx
full_outputtrueの場合、fxには目的関数の最終値が含まれます。
タイプ:1D浮動小数点数配列
its
full_outputtrueの場合は、実行された反復計算の回数が含まれます。
タイプ: 整数
imode
full_outputtrueの場合は、最適化エンジンからの終了モードが含まれます。imodeの値は、以下の意味を持ちます:
-1
勾配評価が必要。
0
最適化が正常に終了。
1
関数評価が必要。
2
独立変数より多くの等式制約。
3
LSQ部分問題内の3*nを超える反復計算。
4
不等式制約に適合性がない。
5
LSQ部分問題内の非正則マトリクスE。
6
LSQ部分問題内の非正則マトリクスC。
7
階数不足の等式制約部分問題HFTI。
8
直線探索用の正方向導関数。
9
反復計算の制限を超えている。
タイプ: 整数
smode
full_outputtrueの場合は、最適化エンジンからの終了モードに関するメッセージが含まれます。
タイプ: 文字列

コメント

  1. FMIN_SLSQPは、元々はDieter Kraftによって実装されたSLSQP最適化関数のインターフェース関数です。SLSQPは、逐次最小二乗プログラミングアルゴリズムです。
  2. 最適化は、MotionSolveで、CONSUBユーザーサブルーチンをFMIN_SLSQPと共に使用することで実行できます。これは、モデル同定やメカニズム最適化に使用できます。CONSUBは、Fortran/C/C++またはPython/MATLABスクリプトで記述できます。