2013-12-17 19 views
1

我正在用C++解決一大羣使用CPLEX Concert的MIP實例。我爲每個實例(通過設置參數TiLim)對CPLEX施加了時間限制,但有些實例在內存不足時終止。下面是輸出的最後幾行從這樣的實例:CPLEX內存不足,但報告的樹大小超過RAM;如何設置TreLim?

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就可以繼續進行下一個實例。

回答

0

根據CPLEX用戶手冊的說法,「[使用節點文件]只會導致運行時增加很少」。

您可以使用節點文件並對您的實例施加時間限制。除非硬盤空間不足,否則在得到內存錯誤之前應該達到您的時間限制。