Decision Optimization

Decision Optimization

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

 View Only
  • 1.  optimization process ending

    Posted Sat September 29, 2012 05:01 AM

    Originally posted by: Sothea


    Dear all,

    I have a question of optimization process ending. When i execute my MILP model using Cplex class Method, it finished the process after finding integer solution at 19.23% of gap between best solution and interger one as you see in the result below:
    Elapsed real time = 43738.31 sec. (tree size = 318281.02 MB, solutions = 77)
    Nodefile size = 318145.31 MB (268138.96 MB after compression)
    8259000 7739463 -0.5899 1113 -0.5199 -0.6199 2.42e+008 19.23% ir_j8t22 D 8242997 8242989 38
    8260000 7740389 -0.5887 465 -0.5199 -0.6199 2.42e+008 19.23% ir_j14t69 U 8255118 8255110 124
    Clique cuts applied: 3
    Cover cuts applied: 129
    Implied bound cuts applied: 1130
    Flow cuts applied: 1
    Mixed integer rounding cuts applied: 6
    Zero-half cuts applied: 42
    Gomory fractional cuts applied: 36

    Root node processing (before b&c):
    Real time = 31.87
    Parallel b&c, 8 threads:
    Real time = 43724.18
    Sync time (average) = 2.19
    Wait time (average) = 3.98

    Total (root+branch&cut) = 43756.05 sec.
    Default sos names s1, s2 ... being created.
    Default indicator names i1, i2 ... being created.

    Solution status = integer optimal, tolerance
    Solution value = 0.146953
    Do you know why it doesn't continue the process until tolerance gap which i set 10% (cplex.Param.mip.tolerances.absmipgap.Cur=0.1;)?

    On the other hand, I found that my model gives hardly a integer solution, which parameter i should set?
    Thanks in advance for your response.
    Sothea HONG
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: optimization process ending

    Posted Mon October 01, 2012 05:40 AM

    Originally posted by: SystemAdmin


    19.23% is just the last gap that is printed in the log. That does not mean that this is the final gap. You should use the getBestObjValue(), getObjValue(), and getMIPRelativeGap() functions of the CPLEX class to assess the gap after solve() returned (see also the reference documentation for these functions).
    If feasible solutions are hard to find it may help to play with the heuristic frequency parameter.
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: optimization process ending

    Posted Tue October 02, 2012 03:18 AM

    Originally posted by: Sothea


    Thanks you so much for your response. To be clear about heuristic frequency, i would like to ask you one question more. When heuristic value setting is bigger, it increase more calculation time? Or it depends on the own problem?

    Thanks again,
    Sothea HONG
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: optimization process ending

    Posted Tue October 02, 2012 09:50 AM

    Originally posted by: SystemAdmin


    It is the other way around. The heuristic frequency specifies how often to call heuristics:
    HeurFreq = -1: never call heuristics
    HeurFreq = 0: Let CPLEX decide when to call heuristics
    HeurFreq = 1: Call heuristics at every node
    HeurFreq = 2: Call heuristics at every second node
    HeurFreq = 3: Call heuristics at every third node
    etc.
    So the larger the value of HeurFreq is the smaller is the computation overhead introduced by heuristics (heuristics are called less frequently for larger values of HeurFreq).
    When playing with the HeurFreq parameter you should closely inspect the CPLEX log output. A line marked with '+' after the node number indicates that a heuristic was invoked at that node and found a new incumbent. This gives you an idea about how successful heuristics are.
    Another parameter you may want to consider is the RINS frequency. RINS is a powerful but expensive heuristic. If you don't get good enough solutions by playing with HeurFreq you may want to play with the RINS frequency as well.
    #CPLEXOptimizers
    #DecisionOptimization