Decision Optimization

Decision Optimization

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

 View Only
Expand all | Collapse all

MIP starts not constructed because of out-of-memory status

  • 1.  MIP starts not constructed because of out-of-memory status

    Posted Mon July 25, 2011 11:38 AM

    Originally posted by: SXBG_pablo_ibacache


    Hello

    I recently used Java to call cplex 12.2 MIP solver, using my pc (i5 2.80 Ghz, 4G of RAM running Windows 7).

    After running the model, I get the following log:

    Tried aggregator 2 times.
    MIP Presolve eliminated 2666 rows and 2812 columns.
    MIP Presolve modified 19887 coefficients.
    Aggregator did 4481 substitutions.
    Reduced MIP has 100751 rows, 81907 columns, and 4106007 nonzeros.
    Reduced MIP has 879 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Probing fixed 182 vars, tightened 2705 bounds.
    Probing time = 1.03 sec.
    Tried aggregator 2 times.
    MIP Presolve eliminated 21055 rows and 20860 columns.
    MIP Presolve modified 442 coefficients.
    Aggregator did 125 substitutions.
    Reduced MIP has 79571 rows, 60922 columns, and 2044124 nonzeros.
    Reduced MIP has 696 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Presolve time = 6.99 sec.
    Probing fixed 2 vars, tightened 10573 bounds.
    Probing time = 0.65 sec.
    Clique table members: 1664.
    MIP emphasis: balance optimality and feasibility.
    MIP search method: dynamic search.
    Parallel mode: deterministic, using up to 4 threads.
    Root relaxation solution time = 634.57 sec.

    Nodes Cuts/
    Node Left Objective IInf Best Integer Best Node ItCnt Gap

    0 0 -5.31352e+013 268 -5.31352e+013 140002
    0 0 -5.31352e+013 268 Cuts: 232 263017
    0 0 -5.31352e+013 269 Cuts: 110 369713
    Heuristic still looking.
    Heuristic still looking.
    Heuristic still looking.
    • 0+ 0 -7.30144e+010 -5.31352e+013 369713 ---
    0 2 -5.31352e+013 269 -7.30144e+010 -5.31352e+013 369713 ---
    Elapsed real time = 2961.26 sec. (tree size = 0.01 MB, solutions = 1)

    There may be further error information in the clone logs.

    GUB cover cuts applied: 4
    Clique cuts applied: 2
    Implied bound cuts applied: 132
    Flow cuts applied: 48
    Zero-half cuts applied: 1
    Gomory fractional cuts applied: 3

    Root node processing (before b&c):
    Real time = 2953.97
    Parallel b&c, 4 threads:
    Real time = 25.68
    Sync time (average) = 0.00
    Wait time (average) = 19.08

    Total (root+branch&cut) = 2979.65 sec.
    Warning: MIP starts not constructed because of out-of-memory status.
    ilog.cplex.CpxException: CPLEX Error 1001: Out of memory.

    I've already tried using the following parameters (in different combinations):

    cplex.setParam(IloCplex.IntParam.Threads, 1);
    cplex.setParam(IloCplex.IntParam.NodeFileInd, 2);
    cplex.setParam(IloCplex.StringParam.WorkDir,"tmp/");
    cplex.setParam(IloCplex.DoubleParam.WorkMem, 3000);
    cplex.setParam(IloCplex.DoubleParam.TreLim, 1000);
    cplex.setParam(IloCplex.BooleanParam.MemoryEmphasis, true);

    but they don't seem to work. I've noticed that cplex is not writing the node file (or any file) to the disk. Maybe I'm not using the parameters in the right manner. I don't have great experience on customizing cplex's parameters, maybe I'm doing it wrong.

    Thanks for any help

    Pablo
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: MIP starts not constructed because of out-of-memory status

    Posted Wed July 27, 2011 03:52 AM

    Originally posted by: SystemAdmin


    Looking at the log output it seems like the problem you are trying to solve is not that big.
    Also, after 2961 secs the tree is less than 1 MB, so you should not run out of memory.
    Your log is for 4 threads. Can you post a log for cplex.setParam(IloCplex.IntParam.Threads, 1)? And maybe also set IloCplex.IntParam.MIPInterval to 1 to get more output.
    What about the non-CPLEX part of your program? Is it possible that this consumes a lot of memory?
    What happens if you do
    cplex.exportModel("model.sav");
    cplex.writeParam("model.prm");
    

    before calling cplex.solve(), load model.sav and model.prm into the interactive optimizer and then solve the problem in the interactive? Does it also run out of memory that quickly?
    #CPLEXOptimizers
    #DecisionOptimization