Matlab 在将一个非常大的矩阵加载到解算器时,如何避免同时有两个实例?

Matlab 在将一个非常大的矩阵加载到解算器时,如何避免同时有两个实例?,matlab,matrix,space,linear-programming,Matlab,Matrix,Space,Linear Programming,我将Cplex和Gurobi用于一个LP程序,它的不等式约束矩阵A可以变得非常大——大约5到10GB。当我想使用其中一个解算器时,我必须创建一个包含所有问题约束的独立结构。这意味着我的工作区中有矩阵A,同时解算器结构中有矩阵A。即使我尽可能快地在我的工作区中清除它,仍然有一段时间它们都存在并且我的RAM过载 我想问的是,是否有一些聪明的方法可以将矩阵A传递到模型中,而不同时存在两者。我现在唯一能想到的就是将它分小块交付…MATLAB使用写时复制或延迟复制。这意味着,只要不修改其中一个副本,矩阵的

我将Cplex和Gurobi用于一个LP程序,它的不等式约束矩阵A可以变得非常大——大约5到10GB。当我想使用其中一个解算器时,我必须创建一个包含所有问题约束的独立结构。这意味着我的工作区中有矩阵A,同时解算器结构中有矩阵A。即使我尽可能快地在我的工作区中清除它,仍然有一段时间它们都存在并且我的RAM过载


我想问的是,是否有一些聪明的方法可以将矩阵A传递到模型中,而不同时存在两者。我现在唯一能想到的就是将它分小块交付…

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.

有关参考信息,请参见和上的示例。

取决于代码,但您需要显示代码。