我怎样才能避免在同一时间有一个非常大的矩阵的两个实例加载到一个求解器?(How can I avoi

2019-10-29 22:50发布

我使用这两个和的Cplex为Gurobi其不等式约束矩阵A可以成为真正的大的LP计划 - 约5至10GB。 当我想用这些求解器之一,我要创建一个单独的结构与所有的问题的制约。 这意味着,我在我的求解器结构在我的工作区的矩阵A和矩阵A在同一时间。 即使我在工作区清除它尽可能地快,还有的时候都存在,我的内存过载。

我问,如果有一些提供矩阵A为模型,而不会同时包括现有巧妙方法。 我现在能想到的唯一的事情就是提供它小块...

Answer 1:

MATLAB使用写入时复制,或懒惰复制。 这意味着,只要你不修改的副本之一,矩阵共享相同的数据的所有副本:

A = randn(10000);
B = A; % does not take up extra memory
myfunc(B);

function myfunc(matrix)
   C = matrix; % does not take up extra memory.

仅供参考,请参阅例如在罗兰的博客和无证Matlab的 。



文章来源: How can I avoid having two instances of a very large matrix at the same time when loading it into a solver?