在Mathematica 7和8版本中,我们发现Mathematica不能正确地保存和获取拟合程序的结果。我希望有人知道:如何解决这个bug的最佳实践方法?
我们的任务是使用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计算
- 将foo保存或DumpSave到磁盘
- 删除和/或清除foo
- 从磁盘中获取foo
- foo可以正常工作
但如果重新启动内核,它将失败
- 将FittedModel作为foo计算
- 将foo保存或DumpSave到磁盘
- 杀死并重新启动内核
- 从磁盘中获取foo
- foo存在漏洞
有人看到过这种行为吗?
是否有关于这个bug的好的解释?
是否有一个好的解决方法?