在MATLAB中增加内存使用量

时间:2014-09-05 09:03:01

标签: matlab memory

我使用MATLAB编写一些元启发式算法。最近,我一直致力于解决工业工程问题的算法。我的MATLAB问题是“内存不足”错误。现在我正在尝试Mathworks和Stackoverflow的一些建议(希望它们能够工作)。但是,有一件事我不明白。

在MATLAB中运行算法期间(对于中等大小的问题需要4000-5000 cpu秒),即使我预先分配变量,代码也不要求动态数组调整大小并且不添加新变量,我观察到算法的内存使用量不断增长。 main函数调用我编写的其他函数。可能是内存使用量增加的原因是什么?

我用于运行算法的计算机有8GB的内存和win8 64bit。

2 个答案:

答案 0 :(得分:0)

解决这个问题的唯一方法是查看内存的去向。 我认为您可能会意外地存储您不需要的结果,或者您低估了输出/中间变量的大小。

以下是我将如何继续:

  1. 开启dbstop if error
  2. 运行代码,直到出现内存不足错误
  3. 查看正在使用的内存量(确保检查所有工作空间)
  4. 可能你现在知道额外的内存在哪里。如果找不到太多内存,请继续:

    1. 检查memory命令以查看仍有多少内存
    2. 仔细查看正在执行的行,或许你实际上需要大量的内存
    3. 如果所有其他方法都失败了,请在此处分享您的发现,其他人可以帮助您寻找它。

答案 1 :(得分:0)

内存使用增长的原因是CPlex。我尝试了很多替代方案,但除了将虚拟内存增加到几百GB之外,我找不到任何其他有用的解决方案。如果您没有特殊理由坚持使用CPlex(商业用途,许可等),我建议任何遇到此问题的人使用GUROBI。它是免费的,无限制用于学术用途,完全可与MATLAB集成。这是我为Cplex问题找到的解决方案。我希望这个解决方案适用于所有人。