CPLEX内存不足,但报告的树大小超过RAM;如何设置TreLim?

时间:2013-12-17 20:54:43

标签: memory cplex

我正在使用C ++中的CPLEX Concert解决大量MIP实例。我为每个实例设置了CPLEX的时间限制(通过设置参数TiLim),但有些实例在内存不足时终止。以下是此类实例的最后几行输出:

 8734238 3080224      431.8614    36      470.0000      429.0000 3.88e+008    8.72%
 8752674 3084391        cutoff            470.0000      429.0000 3.89e+008    8.72%
Elapsed time = 59713.88 sec. (5451069.58 ticks, tree = 73513.33 MB, solutions = 6)
Nodefile size = 73384.21 MB (49191.99 MB after compression)
 8770964 3089127      429.9550    82      470.0000      429.0000 3.90e+008    8.72%
 8787928 3092972      442.7316    31      470.0000      429.0000 3.91e+008    8.72%
 8809081 3099887      429.4993    68      470.0000      429.0000 3.92e+008    8.72%
 8829373 3104804        cutoff            470.0000      429.0000 3.93e+008    8.72%

There may be further error information in the clone logs.

Cover cuts applied:  24
Implied bound cuts applied:  2
Flow cuts applied:  6
Mixed integer rounding cuts applied:  9
Zero-half cuts applied:  44
Gomory fractional cuts applied:  5

Root node processing (before b&c):
  Real time             =    7.19 sec. (744.51 ticks)
Parallel b&c, 8 threads:
  Real time             = 60536.50 sec. (5522542.15 ticks)
  Sync time (average)   =    0.00 sec.
  Wait time (average)   =    0.00 sec.
                          ------------
Total (root+branch&cut) = 60543.69 sec. (5523286.67 ticks)

计算机具有32 GB RAM,但报告的树文件大小(71 GB,压缩后48 GB)超过了该值。 CPLEX报告的树文件大小是什么意思,它与可用内存有什么关系?我想将参数TreLim设置为一个可以防止内存不足错误的值,但我不清楚实际上是什么限制了树的大小。

顺便说一下,我没有使用CPLEX Error 1001 Out of memory的答案将树存储在硬盘上。我不关心为每个实例获得最佳解决方案;我只需要一种方法在每个实例上施加统一的时间或内存限制,这样一旦实例超出其限制,CPLEX就可以继续下一个实例。

1 个答案:

答案 0 :(得分:0)

根据CPLEX用户手册,“[使用nodefiles]只需要非常小的运行时间增加”。

您可以使用节点文件并对实例施加时间限制。除非您的硬盘空间不足,否则应在达到内存错误之前达到时间限制。