我使用MATLAB编写一些元启发式算法。最近,我一直致力于解决工业工程问题的算法。我的MATLAB问题是“内存不足”错误。现在我正在尝试Mathworks和Stackoverflow的一些建议(希望它们能够工作)。但是,有一件事我不明白。
在MATLAB中运行算法期间(对于中等大小的问题需要4000-5000 cpu秒),即使我预先分配变量,代码也不要求动态数组调整大小并且不添加新变量,我观察到算法的内存使用量不断增长。 main函数调用我编写的其他函数。可能是内存使用量增加的原因是什么?
我用于运行算法的计算机有8GB的内存和win8 64bit。
答案 0 :(得分:0)
解决这个问题的唯一方法是查看内存的去向。 我认为您可能会意外地存储您不需要的结果,或者您低估了输出/中间变量的大小。
以下是我将如何继续:
dbstop if error
可能你现在知道额外的内存在哪里。如果找不到太多内存,请继续:
memory
命令以查看仍有多少内存如果所有其他方法都失败了,请在此处分享您的发现,其他人可以帮助您寻找它。
答案 1 :(得分:0)
内存使用增长的原因是CPlex。我尝试了很多替代方案,但除了将虚拟内存增加到几百GB之外,我找不到任何其他有用的解决方案。如果您没有特殊理由坚持使用CPlex(商业用途,许可等),我建议任何遇到此问题的人使用GUROBI。它是免费的,无限制用于学术用途,完全可与MATLAB集成。这是我为Cplex问题找到的解决方案。我希望这个解决方案适用于所有人。