Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  two machines, two results

    Posted 10/31/14 05:08 AM

    Originally posted by: Falcon_G


    Hi everybody

    I am experiencing the following:

    I have a branch and cut implementation and I run in on two different machines. The algorithm generates some cuts offline and starts to add some during IloCplex::solve()  using callbacks.

    I also have a CutUp parameter set to bestheuristicobj + 1. I also inject as MIP start a dozen of initial solutions.

    One single thread has been used.

    Any constructive comment is appreciated.

    the first machine's output is the following:

    It does not call at my separator and converges to a strange value.

    4 of 5 MIP starts provided solutions.
    MIP start 'm5' defined initial solution with objective 1211.8849.
    Retaining values of one MIP start for possible repair.
    Probing time = 0.00 sec. (11.23 ticks)
    Clique table members: 486.
    MIP emphasis: best bound.
    MIP search method: traditional branch-and-cut.
    Parallel mode: none, using 1 thread.
    Root relaxation solution time = 0.02 sec. (18.88 ticks)

            Nodes                                         Cuts/
       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap         Variable B NodeID Parent  Depth

    *     0+    0                         1211.8849     1194.6156      132    1.42%
          0     0     1194.6156    60     1211.8849     1194.6156      132    1.42%
          0     0     1194.6156    48     1211.8849    MIRcuts: 6      197    1.42%
          0     0     1194.6156    54     1211.8849      Cuts: 45      283    1.42%
          0     0     1194.6156    53     1211.8849      Cuts: 42      327    1.42%
          0     0     1194.6156    53     1211.8849       User: 1      327    1.42%
    Repair heuristic found nothing.

    Repeating presolve.
    Tried aggregator 1 time.
    MIP Presolve eliminated 3 rows and 3 columns.
    MIP Presolve modified 16 coefficients.
    Reduced MIP has 4309 rows, 271 columns, and 18694 nonzeros.
    Reduced MIP has 187 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Presolve time = 0.03 sec. (10.23 ticks)
    Probing fixed 1 vars, tightened 0 bounds.
    Probing time = 0.00 sec. (12.63 ticks)
    Tried aggregator 1 time.
    MIP Presolve eliminated 1 rows and 1 columns.
    Reduced MIP has 4308 rows, 270 columns, and 18590 nonzeros.
    Reduced MIP has 186 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Presolve time = 0.02 sec. (6.73 ticks)
    Represolve time = 0.06 sec. (33.99 ticks)
    Probing time = 0.00 sec. (12.58 ticks)
    Probing added 3594 nonzeros.
    Clique table members: 649.
    MIP emphasis: best bound.
    MIP search method: traditional branch-and-cut.
    Parallel mode: none, using 1 thread.
    Root relaxation solution time = 0.01 sec. (22.42 ticks)

            Nodes                                         Cuts/
       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap         Variable B NodeID Parent  Depth

    *     0+    0                         1211.8849     1194.6156      457    1.42%
          0     0     1194.6156    60     1211.8849     1194.6156      457    1.42%
          0     0     1194.6156    54     1211.8849    MIRcuts: 4      509    1.42%
          0     0     1194.6156    50     1211.8849      Cuts: 41      551    1.42%
          0     0     1194.6156    49     1211.8849      Cuts: 39      605    1.42%
          0     0     1194.6156    54     1211.8849      Cuts: 35      666    1.42%
    Repair heuristic found nothing.
          0     2     1194.6156    53     1211.8849     1194.6156      666    1.42%                        0             0
    Elapsed time = 3.31 sec. (4037.46 ticks, tree = 0.01 MB, solutions = 1)
          1     2     1194.6156    53     1211.8849     1194.6156      987    1.42%         z(9)(9) N      1      0      1
          2     3     1194.6156    59     1211.8849     1194.6156     1337    1.42%         z(9)(9) N      2      0      1
          3     3     1195.7182    66     1211.8849     1194.6156     1979    1.42%         z(0)(6) N      3      1      2
          6     6     1200.3791    50     1211.8849     1194.6156     2538    1.42%         z(0)(2) N      6      5      3
          9     7     1194.6156    50     1211.8849     1194.6156     3017    1.42%         r(1)(5) N      9      7      4
         11     8     1194.6156    56     1211.8849     1194.6156     3674    1.42%         r(0)(8) N     11      9      5
         17    12     1194.6156    47     1211.8849     1194.6156     4857    1.42%         z(8)(2) N     17     15      8
         20    13     1195.4513    49     1211.8849     1194.6156     5197    1.42%         r(5)(9) N     20     19     10
         21    14     1194.6159    61     1211.8849     1194.6157     5699    1.42%         r(5)(9) N     21     19     10
         60    42     1206.1800    36     1211.8849     1195.0824     8474    1.39%         r(7)(6) N     60     24     12
    Elapsed time = 7.14 sec. (9583.54 ticks, tree = 0.24 MB, solutions = 1)
         74    47     1197.2393    60     1211.8849     1195.8672     9693    1.32%         z(0)(5) N     74      3      3
        114    54     1210.7803    35     1211.8849     1198.0642    13660    1.14%         z(8)(8) N    114     76     20
        146    61     1203.5417    53     1211.8849     1200.8637    18126    0.91%         z(0)(5) N    146     68     21
        199    67     1205.8349    57     1211.8849     1203.2273    21141    0.71%         r(0)(9) N    199    192     17

    GUB cover cuts applied:  2
    Clique cuts applied:  18
    Cover cuts applied:  2
    Flow cuts applied:  2
    Mixed integer rounding cuts applied:  298
    Zero-half cuts applied:  99
    User cuts applied:  1

    Root node processing (before b&c):
      Real time             =    3.32 sec. (4037.35 ticks)
    Sequential b&c:
      Real time             =    7.08 sec. (9981.92 ticks)
                              ------------
    Total (root+branch&cut) =   10.40 sec. (14019.26 ticks)


    obj 1211.88488793
    OptimalTol

    but on the second machine I have several calls to my separator and convergence to a correct optimal value:

    1 of 1 MIP starts provided solutions.
    MIP start 'm1' defined initial solution with objective 3297.0060.
    Tried aggregator 1 time.
    MIP Presolve eliminated 4322 rows and 97 columns.
    MIP Presolve modified 1134 coefficients.
    Reduced MIP has 4312 rows, 274 columns, and 18986 nonzeros.
    Reduced MIP has 190 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Presolve time = 0.06 sec. (21.12 ticks)
    Probing time = 0.00 sec. (3.01 ticks)
    Tried aggregator 1 time.
    Reduced MIP has 4312 rows, 274 columns, and 18986 nonzeros.
    Reduced MIP has 190 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Presolve time = 0.02 sec. (8.86 ticks)
    Probing time = 0.00 sec. (3.00 ticks)
    Probing added 43 nonzeros.
    Clique table members: 486.
    MIP emphasis: best bound.
    MIP search method: dynamic search.
    Parallel mode: deterministic, using up to 6 threads.
    Root relaxation solution time = 0.05 sec. (21.74 ticks)

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

    *     0+    0                         3297.0060     1194.6156      132   63.77%
          0     0     1194.6156    60     3297.0060     1194.6156      132   63.77%
    *     0+    0                         1366.7640     1194.6156      132   12.60%
          0     0     1194.6156    54     1366.7640      Cuts: 12      188   12.60%
    *     0+    0                         1350.6156     1194.6156      188   11.55%
    *     0+    0                         1214.0522     1194.6156      246    1.60%
          0     0     1194.6156    53     1214.0522      Cuts: 38      246    1.60%
          0     0     1194.6156    48     1214.0522       Cuts: 8      294    1.05%
          0     0     1194.6156    50     1214.0522      Cuts: 49      347    1.05%
          0     2     1194.6156    39     1214.0522     1202.8577      347    0.92%
    Elapsed time = 1.69 sec. (865.72 ticks, tree = 0.00 MB, solutions = 4)
         14    16     1197.9404    59     1214.0522     1202.8577     3434    0.92%
    *   107    62      integral     0     1211.8849     1202.8577    10996    0.74%

    Clique cuts applied:  1
    Implied bound cuts applied:  16
    Mixed integer rounding cuts applied:  150
    Gomory fractional cuts applied:  1

    Root node processing (before b&c):
      Real time             =    1.69 sec. (864.02 ticks)
    Parallel b&c, 6 threads:
      Real time             =    0.78 sec. (406.48 ticks)
      Sync time (average)   =    0.24 sec.
      Wait time (average)   =    0.01 sec.
                              ------------
    Total (root+branch&cut) =    2.47 sec. (1270.50 ticks)
    Warning:  Output names have been modified to conform to LP format.
    Default row names c1, c2 ... being created.
    Warning:  Output names have been modified to conform to LP format.
    Default row names c1, c2 ... being created.
    Warning: Control callbacks may disable some MIP features.
    Lazy constraint(s) or lazy constraint callback is present.
        Disabling dual reductions (CPX_PARAM_REDUCE) in presolve.
        Disabling non-linear reductions (CPX_PARAM_PRELINEAR) in presolve.
    Probing time = 0.00 sec. (11.23 ticks)
    Clique table members: 486.
    MIP emphasis: best bound.
    MIP search method: traditional branch-and-cut.
    Parallel mode: none, using 1 thread.
    Root relaxation solution time = 0.02 sec. (18.88 ticks)

    CALL TO SEPARATION ORACLE (integer)
    CALL TO SEPARATION ORACLE (integer)
    CALL TO SEPARATION ORACLE (integer)

    Delayed MIP starts found nothing.

            Nodes                                         Cuts/
       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap         Variable B NodeID Parent  Depth

          0     0     1281.6482    68                   1194.6156      132
          0     0     1288.6074    69                    Cuts: 36      217
          0     0     1296.1567    74                    Cuts: 52      312
          0     0     1303.4517    77                    Cuts: 47      474
          0     0     1307.0478    70                    Cuts: 44      563
          0     0     1308.5971    74                    Cuts: 52      707
          0     0     1309.2038    75                    Cuts: 61      799
          0     0     1309.9072    76                    Cuts: 56     1044
          0     0     1312.9508    73                    Cuts: 64     1149
          0     0     1315.6596    79                    Cuts: 47     1341
          0     0     1315.9799    78                    Cuts: 55     1457
          0     0     1316.3276    76                    Cuts: 13     1506
          0     0     1316.4330    77                    Cuts: 17     1582
          0     0     1316.5305    78                    Cuts: 14     1609
          0     0     1316.5305    85                    User: 38     1636
          0     0     1316.5305    83                     User: 4     1645
          0     0     1316.5305    83                    User: 14     1664
    CALL TO SEPARATION ORACLE (fractional)
    CALL TO SEPARATION ORACLE (fractional)
    CALL TO SEPARATION ORACLE (fractional)
    ---------------------------------
          0     0     2057.0110    75                    User: 90     2670
          0     0     2073.7307    78                    User: 18     2686
          0     0     2073.7307    79                     User: 4     2688
          0     0     2073.7307    80                     User: 2     2689
          0     0     2073.7307    81                     User: 8     2695
          0     0     2073.7307    81                     User: 2     2696

          CALL TO SEPARATION ORACLE (fractional)

    CALL TO SEPARATION ORACLE (fractional)

    CALL TO SEPARATION ORACLE (fractional)

          0     0     2923.6040    67                    User: 90     3633
    getObjValue     3216.74696565
    getIncumbentObjValue    1e+075

    CALL TO SEPARATION ORACLE (integer)
    CALL TO SEPARATION ORACLE (fractional)


          0     0     2938.8968    69                     User: 8     3647
          
    CALL TO SEPARATION ORACLE (integer)

    *     0+    0                         3297.0060     2938.8968     3647   10.86%
    Repair heuristic found nothing.
          0     0        cutoff           3297.0060     2938.8968     3647   10.86%                        0             0
    Elapsed time = 27.02 sec. (9593.81 ticks, tree = 0.00 MB, solutions = 4)

    Cover cuts applied:  2
    User cuts applied:  649

    Root node processing (before b&c):
      Real time             =   27.03 sec. (9593.85 ticks)
    Sequential b&c:
      Real time             =    0.00 sec. (0.00 ticks)
                              ------------
    Total (root+branch&cut) =   27.03 sec. (9593.85 ticks)
    3297.0060477368.65625

    Optimal

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: two machines, two results

    Posted 11/10/14 03:20 AM

    First thing I would do is to export both problems to LP/SAV files and compare those files. Just to make sure you are solving the same problem.

    The solution 1211.8849 (which you call the strange solution) comes from a MIP start. Did you check that this objective is correct for the respective MIP start?


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: two machines, two results

    Posted 11/10/14 10:40 AM

    Originally posted by: Falcon_G


    Thank you Daniel.

    In fact, I just noticed that I have been running on two different versions of CPLEX.

    the one that runs fine (the second one) is using CPLEX 12.6.1 but the other one is using 12.6.

    The second one shows numerical instability time to time but the first one is fine.

    I upgraed to the 12.6.1 now it works fine.

     

     


    #CPLEXOptimizers
    #DecisionOptimization