Matlab 中的大型线性程序

Large linear programs in Matlab

我有一个具有 N^4 阶变量和 N^4 阶约束的线性程序。如果我想在 AMPL 中解决这个问题,我会一个一个地定义约束,而不必担心确切的系数矩阵。不会出现内存问题。但是,在 Matlab 中使用标准 LP 求解器时,我需要明确定义矩阵。

当我有四个下标的变量时,这将导致维数阶为 N^4 x N^4 的大规模稀疏矩阵。对于非平凡的问题大小,该矩阵甚至不适合内存。

除了各种列 generation/cutting 平面技术之外,有没有办法使用 Matlab 解决这个问题?由于 AMPL 设法解决了它,我想他们要么自动进行某种分解,要么以某种方式解决 LP 而无需明确使用这个稀疏的怪物矩阵。

正在将我的评论转化为答案:

MATLAB 使用 sparse 命令支持稀疏矩阵,它允许您在不超过内存限制的情况下构建约束矩阵。

除了 m.s 提到的 sparse。您还可以对 MATLAB 使用 AMPL API。如果您已经有一个 AMPL 模型并想在 MATLAB 中使用它,它会特别有用。