私はscipy.optimize
関数を使用して、複数の引数を持つ複雑な関数の大域最小値を求めようとしています。 scipy.optimize.minimize
は、「Nelder-Mead」という方法の中で最も優れているようです。しかし、引数の範囲外の領域に行く傾向があり(負の値を肯定的な引数に割り当てるため)、そのような場合にはエラーが返されます。引数の境界をのscipy.optimize.minimize
ファンクション内に制限する方法はありますか?他のscipy.optimize
の機能内にあるのでしょうか? (嵌合するデータから遠い) Scipy.optimize:引数の値を制限する方法
パラメータが許容範囲から外れる
は、乱暴に膨大な数を返す:私は次のようなアドバイスを見つけました。これは、うまくいけば、このパラメータの選択肢に罰金を科すので、
curve_fit
は、他の受け入れ可能なパラメータのセットを最適として解決します。
given in this previous answerしかし、私の場合、手順には多くの計算時間がかかります。
入力が許容範囲外のときにコスト関数を返すことは、非常に悪い考えです。なぜなら、検索機能は無限大のスペースを無限大の領域で検索するためです。'scipy.minimize'の' constraint'引数を使用して、アルゴリズムのどこに検索を限定するかを指定するメソッドを指定します。ここで「制約」を検索してください:http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize –