Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  CPLEX, java, memory problems, IP

    Posted 07/01/13 06:14 PM

    Originally posted by: Chris122334441324134


    I have an integer problem and cplex consistently runs out of memory. Its a suproblem in a Dantzig-Wolfe decomposition and cannot be reduced.

    How can the settings be improved? I dont have much experience with fine-tuning CPLEX. An optimal solution is not required. Instead the solution is abborted in a callback as soon as a suffuciently good solution is obtained.

     

    The set up is as follows:

    Machine: 8GB RAM

    -Xmx7g

     

    setParam(IloCplex.DoubleParam.CutUp, 0.0);
    setParam(IloCplex.IntParam.PPriInd, IloCplex.PrimalPricing.Steep);
    setParam(IloCplex.IntParam.MIPEmphasis, 1); // focus on feasibility
    setParam(IloCplex.DoubleParam.WorkMem, 4000); // in MB
    setParam(IloCplex.IntParam.NodeFileInd, 3); // nodes compressed on disk
    setParam(IloCplex.DoubleParam.TreLim, 7000);
    setParam(IloCplex.BooleanParam.MemoryEmphasis, true); // reduce storage where possible

     

    And here is an extract of the cplex output

     

     

    Elapsed real time = 1283.90 sec. (tree size = 1435.44 MB, solutions = 50)
     1119858 160883       -9.9142     2       -9.6567      -11.5856  2188006   19.97% x_976_2_(95,95) D 1119858 1119857    163
     1123040 161286      -11.3617    21       -9.6567      -11.5856  2195875   19.97% x_300_2_(79,89) U 1123040 832973    231
     1125976 161412        cutoff             -9.6567      -11.5821  2200796   19.94% x_300_2_(79,88) U 1125976 1125975    184
     1128830 161456      -10.0281    23       -9.6567      -11.5821  2203564   19.94% x_171_2_(60,66) D 1128830 1128829    105
     1131716 161471       -9.8630    14       -9.6567      -11.5821  2206458   19.94% x_300_3_(81,91) D 1131716 1131714    117
     1134757 162184      -11.0191    12       -9.6567      -11.5799  2210816   19.92% x_300_2_(79,94) U 1134757 1134756    184
     1138347 162766      -11.5721    26       -9.6567      -11.5721  2218312   19.84% x_300_1_(75,81) D 1138347 1138345    278
     1141010 163160       -9.8440    17       -9.6567      -11.5715  2227864   19.83%            y_65 U 1141010 1141009    189
     1143962 163374        cutoff             -9.6567      -11.5712  2237085   19.83% x_300_1_(76,78) U 1143962 1143961    220
     1147780 163922      -10.9885     5       -9.6567      -11.5676  2245083   19.79% x_300_3_(77,79) U 1147780 1147779    101
    Elapsed real time = 1320.52 sec. (tree size = 1463.82 MB, solutions = 50)
     1151245 164419      -10.1465     1       -9.6567      -11.5676  2252444   19.79% x_976_2_(95,95) D 1151245 1151242    149
     1154379 164594      -10.1465     1       -9.6567      -11.5622  2259496   19.73% x_976_2_(95,95) D 1154379 1154376    144
     1158171 165547      -10.4799     3       -9.6567      -11.5622  2266473   19.73% x_205_2_(72,77) U 1158171 1158170    143
     1161559 166083      -10.4799     3       -9.6567      -11.5622  2273302   19.73% x_205_2_(72,78) U 1161559 1161558    134
     1164821 166398       -9.7460    12       -9.6567      -11.5561  2280471   19.67% x_300_1_(76,83) D 1164821 1164820    211
     1167670 166476      -10.8358    17       -9.6567      -11.5558  2287292   19.67%            y_65 U 1167670 1167669    257
     1170766 166652      -11.2122     8       -9.6567      -11.5552  2293591   19.66% x_300_3_(83,91) D 1170766 1170765    139
     1173870 166633      -10.1092     6       -9.6567      -11.5552  2300161   19.66% x_976_1_(95,99) U 1173870 1173869    126
     1176901 166611       -9.9425     5       -9.6567      -11.5552  2306784   19.66%            y_92 U 1176901 1176900    131
     1180461 166880      -10.6552     4       -9.6567      -11.5552  2313923   19.66%            y_89 U 1180461 1180460    188
    Elapsed real time = 1358.27 sec. (tree size = 1490.12 MB, solutions = 50)
     1183863 166991      -10.1465     1       -9.6567      -11.5552  2320648   19.66% x_976_2_(95,95) D 1183863 1183860    125
     1187136 167106      -10.9885     5       -9.6567      -11.5552  2327525   19.66% x_300_3_(84,93) U 1187136 1146777    131
     1190378 167605      -11.5530    20       -9.6567      -11.5530  2335086   19.64% x_300_3_(86,93) D 1190378 1190376    205
     1193268 169168      -10.3218     2       -9.6567      -11.5530  2344875   19.64% x_205_2_(72,77) D 1193268 1193261    134
    Compressing row and column files.
     
    GUB cover cuts applied:  5
    Cover cuts applied:  513
    Zero-half cuts applied:  1
    Warning: MIP starts not constructed because of out-of-memory status.
    Exception in thread "main" ilog.cplex.CpxException: CPLEX Error  1001: Out of memory.
     
    at ilog.cplex.CplexI.CALL(CplexI.java:3773)
     

    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: CPLEX, java, memory problems, IP

    Posted 07/02/13 12:36 AM

    From the log it looks like CPLEX hits the memory limit before reaching the 4GB WorkMem limit you set. So it will never try to swap out nodes to disk (NodeFileInd=3). Try setting the WorkMem limit to 1 GB.

    To save memory you can also set the Threads parameter to 1 but that will of course slow down the solution process.

    Since you are using a callback anyway: You can read out the incumbent solution within the callback, store it in a "global" place and access it when an OutOfMemory occurs.

    Also, even after solve() throws OutOfMemory you should still be able to get the best feasible solution via IloCplex.getValues(). Just use IloCplex.getStatus() first to make sure you have a feasible solution to query.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: CPLEX, java, memory problems, IP

    Posted 07/10/13 05:49 AM

    Originally posted by: Chris122334441324134


    Thanks. Eventually, I solved the problem by returning to the default values of WorkMem and NodeFileInd and setting a time limit on the optimization process, such that a subproblem aborts before it has the change to reach the memory limit. This is definetly not perfect, but it works for now. 


    #CPLEXOptimizers
    #DecisionOptimization