С Mathematica 7 и 8 мы обнаружили, что Mathematica не удалось правильно сохранить и получить результат подгонки. Я надеюсь, что кто-то здесь знает: какова наилучшая практика для этой ошибки?
Наша задача состоит в том, что мы устанавливаем множество наборов данных с помощью функции NonlinearModelFit, которая возвращает FittedModel для каждого набора данных. Эти припадки занимают некоторое время, и мы попытались использовать Save и DumpSave для запоминания результатов в файл. Последующий анализ использует Get, чтобы вернуть FittedModel обратно.
Mathematica выполняет команду "Сохранить и получать без предупреждений", но FittedModel, которая возвращается, ошибочна. Мы вызываем Get и загружаем FittedModel с диска, вызываем результат "foo". Попытка foo [10] оценивает модель с вводом 10. Ошибка, которую мы видим, состоит в том, что foo [ "BestFitParameters" ] должен возвращать список правилам, но вместо этого вставляет строку в функцию, поскольку она была числом, например 10. Попробуйте foo [{ "BestFitParameters" , "BestFitParameters" }] должен давать правила дважды в списке, но не оценивается с ошибкой foo.
Наверху есть странное и вводящее в заблуждение поведение, в зависимости от того, удалили ли мы/очистили foo или вышли из ядра:
- Вычислить FittedModel как foo
- Сохранить или DumpSave foo на диск
- Удалить и/или очистить foo
- Получить foo с диска
- foo отлично работает
Но если мы перезапустим ядро, это не сработает
- Вычислить FittedModel как foo
- Сохранить или DumpSave foo на диск
- Убейте и перезапустите ядро
- Получить foo с диска
- foo не работает
Кто-нибудь видел такое поведение раньше?
Есть ли хорошее объяснение этой ошибки?
Есть ли хороший способ обхода?