私は複数のデータセットに同時に適合できるアルゴリズムを実装しました。 multi fitscipy leastsq fit - 特定のソリューションにペナルティをかける
ターゲット関数は、ここでは(LaFortune散乱モデル)を表示するためには複雑すぎるので、私は説明のために、溶液から目的の機能を使用します:それは、このソリューションに基づいています
def lor_func(x,c,par):
a,b,d=par
return a/((x-c)**2+b**2)
どのようにすることができますフィッティングアルゴリズムがpar
で、結果がlor_func < 0
のパラメータセットを選択した場合、フィッティングアルゴリズムを罰する。
ターゲット関数の負の値は、数学的な観点から有効です。したがって、この負のターゲット関数をもたらすパラメータセットpar
は、最小誤差を有する解であり得る。しかし、私はそれらが物理的にも有効であるように、そのような解決策を除外したい。以下のような
機能:それはあまりにも0値を最適化してフィット感が間違ったデータを返すよう
def lor_func(x,c,par):
a,b,d=par
value = a/((x-c)**2+b**
return max(0, value)
は動作しません。その結果は正しい結果とは異なります。
境界はオプションではありません。これは 'power(a、b)'という用語を持つ関数targeの問題です。場合によっては 'a <0'で、' b'が壊れた番号であれば 'nan'を返します。これは、「ナノ」が発生したときに負の数を返すことで解決しました。だから私は彼が目的関数が負になる解を見つけるのを妨げなければならない。 – RaJa
このアプローチが唯一の方法だと思われます。それは縛られているが動作している必要があります。 – RaJa