我使用建模库 YALMIP 在 Matlab 中编写了一个线性程序,我想用 Cplex 解决它。该程序构造良好,然后调用 cplexlp 来解决问题,但 Cplex 内存不足,我收到此错误:
Parallel mode: deterministic, using up to 2 threads for concurrent optimization.
Aggregator has done 101 substitutions...
Tried aggregator 1 time.
LP Presolve eliminated 720048 rows and 176294 columns.
Aggregator did 52806 substitutions.
Reduced LP has 383867 rows, 454203 columns, and 1324735 nonzeros.
Error using cplexlp (line 254)
CPLEX Error 1001: Out of memory.
当我将问题导出到 lp 文件时,Cplex 会读取 lp 文件并很好地解决问题。
我的第一个想法是,Matlab 无法分配更多内存,但它分配的内存不超过 1.3 GB,而有超过 1 GB 的可用 RAM。我尝试将 SWAP 增加到 5 GB,但没有成功。
我还尝试更改 Cplex 参数。我为 workMem 参数 (2000.0) 输入了一个更大的值,但它不起作用。然后我尝试将内存重点参数设置为 1,它已将矩阵从 58 MB 压缩到 17 MB,但仅在 50% 的情况下解决了问题。
如果有人有解决此问题的想法,我将非常感谢您的帮助。谢谢
计算机特性:Windows 7 32 位 Intel celeron 2.5 Ghz with 4 GB RAM