我使用模型库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 GB的空闲RAM时,它不会分配超过1.3 GB的内存。我尝试将交换空间增加到5 GB,但没有起作用。
我还尝试更改了Cplex参数。我为workMem参数输入了一个更大的值(2000.0),但它不起作用。然后我尝试将内存强调参数设置为1,它将矩阵从58MB压缩到17MB,但它只在50%的情况下解决了这个问题。
如果有人有解决这个问题的想法,我会非常感谢你的帮助。谢谢
计算机特性: Windows 7 32位英特尔赛扬2.5 Ghz,内存4 GB
发布于 2013-09-18 00:08:44
我经常发现,当我使用32位版本的Windows时,所有类型的软件都变得不可靠,或者在某个时候达到了1 1GB到1.6 1GB的内存限制。也许64位版本会工作得更好。
发布于 2014-09-09 19:24:26
内存泄漏的主要原因是CPlex。在多次尝试Cplex之后,我通过在Matlab中使用GUROBI解决了我的问题,没有遇到任何内存泄漏。此外,运行时间减少了大约%30。总之,我建议您将求解器更改为Gurobi。这是值得的。
https://stackoverflow.com/questions/18848601
复制相似问题