私はモデルの最適化されたパラメータを見つけることに興味があります(モデルの出力を既知の値で最小化することによって)。私が探しているパラメータには限界があり、1 - sum(x_par) >= 0
のような不等式によっても制約されています。ここで、x_par
は、合計パラメータリストのうちいくつかのパラメータのリストです。私はscipy.optimize.minimize
を使用して、さまざまな方法(たとえばCOBYLA
およびSLSQP
など)でこの問題を最小限に抑えましたが、この機能によるフィッティングのパフォーマンスは非常に悪く、エラーは一般に50%を超えています。制約のある最適化をscipy.optimize.minimizeに変える?
私は、scipy.optimize.curve_fit
とscipy.optimize.differential_evolution
が与えられた値のフィッティングに関して非常にうまく動作することに気付きましたが、これらの関数はパラメータに制約を与えません。私は、パラメータを制約することを可能にし、与えられた曲線/値をフィッティングするより良い仕事をscipy.optimize.minimize
よりも行うことができる、私の問題を最適化するためのpythonの代替案を探しています。
(オブジェクトを使用して)ウェイのパラメータが定義されていると、多数のパラメータを最適化する必要がある問題に対してこのパッケージが不適切になるのではないかと思いますか?たとえば、問題を最適化するために必要なパラメータの数は事前にわかっていますが、多数のパラメータの点で複雑なため、オブジェクトを介して各パラメータの定義を指定することはできません。その意味で、 'scipy.optimize.minimize'は入力パラメータが' x1、..xn = x [0]、... x [n] 'として展開できるので柔軟です。 – Pupil
lmfitはscipy.optimizeをラップするので、同じような複雑な問題も処理できるはずです。 Lmfitは、順序付けされた辞書にパラメータを保持するので、インデックスに意味を割り当てる必要はありません。これはわずかなメリットのように思えるかもしれませんが、目的関数を書き直すことなく、パラメータを変化から固定に簡単に切り替えることができます。しかし、あなたが望むなら、あなたはパラメータ "1"、 "2"、.....)の名前をつけることができます –
こんにちは...どのように制約を実装することができます1合計(x_par)> = 0'?あなたが提供したリンクに示唆されている不平等制約の一般的な会計方法である、式を通じてどのように総額関数を会計処理できるかはわかりません。ありがとう。 – Pupil