理論的予測を実験データに適合させるコードが少しあり、理論を実験に適合させるために LMA (Levenberg-Marquardt Algorithm) を実行したいと考えています。ただし、計算は簡単ではなく、各モデルは単一のプロセッサで計算するのに約 10 ~ 30 分かかります。クラスター コンピューター (この計算にはまだ 1 ~ 2 分かかります)。
現在、この送信スクリプトは Python 内の呼び出し可能な関数内に設定されています。したがって、scipy LMA (scipy.optimise.leastsq) を使用して設定するのは比較的簡単です。ただし、scipy LMA は、個々の計算を渡すと思います (私は、LMA が一度にすべての計算セットを送信してから、戻りを待つことを好みます。Python 送信スクリプトは次のようになります。
def submission_script(number_iterations,number_parameters,value_parameters):
fitness_parameter = [0]*number_iterations
<fun stuff>
return (fitness_parameter)
「value_parameters」は、モデルごとに計算される変数を含む次元 [number_iterations][number_parameters] のネストされたリストです。「number_parameters」は、適合されるパラメーターの数であり、「number_iterations」は数です。計算されるモデルの数 (したがって、各ステップで勾配を測定するために、LMA は 2*number_parameters モデルを計算します)、「fitness_parameter」は最小化する必要がある値です (次元 [反復] を持ちます)。
今、明らかに、私は自分の LMA を書くことができましたが、それは少し車輪を再発明することです - 私のニーズを満たす何かがあるかどうか (または scipy LMA をこのように使用できるかどうか) を考えていました。
開始点は最小値の近くにある必要があるため、Gauss-Newton アルゴリズムも機能するはずです。フィットを制限する機能 (つまり、フィットしたパラメーターの最大値と最小値を設定する) は便利ですが、必須ではありません。