Z Mathematica 7 i 8 odkryliśmy, że Mathematica nie jest w stanie prawidłowo zapisać i uzyskać wynik dopasowanej procedury. Mam nadzieję, że ktoś tutaj wie: Jaki jest najlepszy sposób obejścia tego błędu?Zapisywanie FittedModel jest buggy
Naszym zadaniem jest dopasowanie wielu zestawów danych za pomocą NonlinearModelFit, który zwraca FittedModel dla każdego zestawu danych. Te dopasowania trochę potrwają i próbowaliśmy użyć Save i DumpSave do zapamiętania wyników do pliku. Późniejsza analiza wykorzystuje Get, aby pobrać FittedModel (y) z powrotem.
Mathematica wykonuje Save & Otrzymuj bez ostrzeżenia, ale FittedModel, który wraca, jest błędny. Nazywamy Get i ładujemy FittedModel z dysku, wywołaj wynik "foo". Próba foo [10] ocenia dopasowany model za pomocą wejścia 10. Błąd, który widzimy, polega na tym, że foo ["BestFitParameters"] powinien zwrócić listę reguł, ale zamiast tego dodaje łańcuch do funkcji, ponieważ był to numer podobny do 10. Próba foo [{"BestFitParameters", "BestFitParameters"}] powinien dawać reguły dwa razy na liście, ale pozostaje nieoceniony z buggy foo.
Jest to dziwne i mylące zachowanie na górze to, w zależności od tego, czy mamy Usuń/Usuń foo lub opuścić jądra:
- Oblicz FittedModel jak foo
- Zapisz lub DumpSave foo na dysku
- Wyjąć i/lub Wyczyść foo
- Get foo z dysku
- foo działa dobrze
Ale jeśli ponownie uruchomić jądro to nie
- obliczyć FittedModel jak foo
- Zapisz lub DumpSave foo na dysku
- zabić i ponownie uruchomić jądro
- Get foo z dysku
- Foo jest buggy
Czy ktoś wcześniej widział takie zachowanie?
Czy istnieje dobre wytłumaczenie tego błędu?
Czy istnieje dobre obejście tego problemu?
Czy możesz dodać krótki przykład kodu? –