С помощью Mathematica 7 и 8 мы обнаружили, что Mathematica не может должным образом сохранить и получить результат соответствующей процедуры. Я надеюсь, что кто-то здесь знает: Как лучше всего обойти эту ошибку?
Наша задача состоит в том, чтобы мы подгоняли множество наборов данных с помощью NonlinearModelFit, который возвращает FittedModel для каждого набора данных. Эти подгонки занимают некоторое время, и мы попытались использовать Save и DumpSave, чтобы запомнить результаты в файл. Последующий анализ использует Get, чтобы вернуть FittedModel (s) обратно.
Mathematica выполняет Save & Get без предупреждений, но возвращаемая 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 с диска
- Фу глючит
Кто-нибудь видел такое поведение раньше?
Есть ли хорошее объяснение этой ошибке?
Есть хороший обходной путь?