2011-07-06 9 views
11

Mathematica 7と8ではMathematicaがフィットルーチンの結果を適切に保存して取得できないことがわかった。私はここに誰かが知っていることを望んでいます:このバグのベストプラクティスの回避策は何ですか?FittedModelを保存するとバグが発生する

私たちの仕事は、各データセットに対してFittedModelを返すNonlinearModelFitで多くのデータセットをフィットさせることです。これらのフィットにはしばらく時間がかかり、SaveとDumpSaveを使用して結果をファイルに記憶しようとしました。その後の解析でFittedModelを取り込みます。

MathematicaはSaveを実行します。&警告なしで取得しますが返されるFittedModelはバグです。 Get関数を呼び出し、ディスクからFittedModelをロードし、結果を "foo"と呼ぶ。 foo ["BestFitParameters"]は規則のリストを返すが、その代わりに文字列を関数のように10のように入れなければならないというバグがある。fooを試す[{"" BestFitParameters "、" BestFitParameters "}]はリスト内で規則を2回与えなければなりませんが、バグのあるfooでは評価されません。

このの上に奇妙なと誤解を招くような行動は、我々は/クリアFOOを削除するか、カーネルを終了するかどうかに応じて、あります:

  • 計算が保存またはDumpSave FOO FOO
  • としてFittedModelディスクへ
  • 削除および/またはクリアfooの
  • はfooが細かい
01作品
  • ディスクからのfooを取得します

    しかし、我々は、カーネルを再起動するかどうかは

  • fooは、ディスクからのfooで取得カーネルをディスク
  • キルに

    • 計算fooのようFittedModel
    • 保存またはDumpSave FOOに失敗し、再起動しますバグ

    誰もこの種の動作を見たことがありますか?

    このバグの背景には説明がありますか?

    回避策はありますか?

  • +3

    短いコードサンプルを追加できますか? –

    答えて

    10

    これは既知のバグです。幸いなことに、簡単な回避策があります。 Getを保存してFittedModelを読み取る前に、ダミーフィットモデルコードを評価してください。この最初の評価はスキップされている場合は、自動的に起因する機能を実装するすべての依存のコードをロードするために失敗に伝え述べたように

    In[1]:= NonlinearModelFit[Range[5], a x, x, a]; 
    
    In[2]:= Get[FileNameJoin[{$HomeDirectory, "Desktop", "bignlm.mx"}]]; 
    
    In[3]:= AbsoluteTiming[nlm["BestFitParameters"]] 
    
    Out[3]= {17.6010000, {a -> 1.45015, b -> 2.33999}} 
    

    、フィットモデルが正しく機能するためには表示されません。 In[1]の評価は基本的に負荷を強制します。

    +0

    午前中に試してみましょう(英国時間)! –

    関連する問題