Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  MIP incumbent solution not generated with improved Best Integer

    Posted 09/18/17 02:31 PM

    Originally posted by: agent337


    Hello, I think I have a mis-understanding of the cplex log from my c++ program using cplex 12.7.1 on Red Hat Enterprise Linux Server release 7.3 (Maipo)

    Can someone please help me understand? 

     

    Here is the main question, (also repeated below with a more detailed context):

     

    In my cplex log, I see what appear to be new integer solutions in my minimization (due to the improved best integer column) along gap reductions w/o changing the lower bound, but they do not produce incumbents (presumably due to nonzero integer infeasibilties counts)  How can I get a new / improved integer solution with a reduction in gap, but not get a new incumbent?

     

    Thank you in advance, Lee

     

    --- Details below here---

     

    This is all from a single program run (instance), and a single call to IloCplex::solve(),  but,  I have also seen this same behavior with several runs of my program using different input data instances.

     

    I am using the  CPXPARAM_Output_IntSolFilePrefix parameter, but what I think are new integer solutions are not recognized as new incumbents, and no sol file is written.

     

     

    From the log/output

    =======

    CPXPARAM_ClockType                               1
    CPXPARAM_Preprocessing_Reduce                    1
    CPXPARAM_WorkMem                                 102400
    CPXPARAM_Parallel                                -1
    CPXPARAM_MIP_Tolerances_MIPGap                   0.01
    CPXPARAM_MIP_Interval                            1
    CPXPARAM_MIP_Strategy_File                       3
    CPXPARAM_MIP_Limits_Nodes                        30000000
    CPXPARAM_MIP_Tolerances_ObjDifference            10000
    CPXPARAM_MIP_Strategy_CallbackReducedLP          0
    CPXPARAM_MIP_Strategy_RINSHeur                   25
    CPXPARAM_Output_IntSolFilePrefix                 "FinalMipSoln"
    Tried aggregator 2 times.
    MIP Presolve eliminated 751 rows and 25419 columns.
    MIP Presolve added 64 rows and 0 columns.
    MIP Presolve modified 150396 coefficients.
    Aggregator did 47 substitutions.
    Reduced MIP has 39765 rows, 271502 columns, and 4735876 nonzeros.
    Reduced MIP has 128970 binaries, 104768 generals, 0 SOSs, and 0 indicators.
    Presolve time = 4.40 sec. (2108.26 ticks)
    Tried aggregator 2 times.
    Aggregator did 1 substitutions.
    Reduced MIP has 39764 rows, 271501 columns, and 4735877 nonzeros.
    Reduced MIP has 133842 binaries, 104768 generals, 0 SOSs, and 0 indicators.
    Presolve time = 2.63 sec. (1149.17 ticks)
    Probing time = 2.40 sec. (157.01 ticks)
    Clique table members: 20090.
    MIP emphasis: balance optimality and feasibility.
    MIP search method: dynamic search.
    Parallel mode: opportunistic, using up to 24 threads.
    Root relaxation solution time = 2116.24 sec. (149145.06 ticks)

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

    *     0+    0                       6.65257e+09   375234.6000            99.99%
    New incumbent written to file 'FinalMipSoln-00001.sol'.

     

    =========

    egrep '^\*|New incumbent' output
    *     0+    0                       6.65257e+09   375234.6000            99.99%
    New incumbent written to file 'FinalMipSoln-00001.sol'.
    *  1752+ 1680                      7418551.9335   626430.0063            91.56%
    New incumbent written to file 'FinalMipSoln-00002.sol'.
    *  2047+ 1576                      6110214.9236   626430.0063            89.75%
    New incumbent written to file 'FinalMipSoln-00003.sol'.
    *  2483+ 2088                      5620612.6321   626430.0063            88.85%
    New incumbent written to file 'FinalMipSoln-00004.sol'.
    *  4132+ 3915                      2591082.3631   626430.0063            75.82%
    New incumbent written to file 'FinalMipSoln-00005.sol'.
    *  4138+ 3915                      2534476.5101   626430.0063            75.28%
    New incumbent written to file 'FinalMipSoln-00006.sol'.
    *  4138+ 3915                      2490811.7965   626430.0063            74.85%
    New incumbent written to file 'FinalMipSoln-00007.sol'.
    *  5186+ 3955                      2229854.4558   626430.0063            71.91%
    New incumbent written to file 'FinalMipSoln-00008.sol'.
    *  5507+ 4333                      2143678.0621   626430.0063            70.78%
    New incumbent written to file 'FinalMipSoln-00009.sol'.
    *  5706+ 4610                      1921127.3641   626430.0063            67.39%
    New incumbent written to file 'FinalMipSoln-00010.sol'.
    *  7312+ 1141                      1821005.1641   633652.0756            65.20%
    New incumbent written to file 'FinalMipSoln-00011.sol'.

     

    ==============

    But later in my output I see what appear to be new integer solutions (due to the improved best integer column, underlined values below), but these integer solutions do not produce new incumbents (presumably due to nonzero integer infeasible counts)  But, how can I get a new / improved integer solution with a reduction in gap, and no change in the lower bound, but not get a new incumbent? 

     

       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

    *     0+    0                       6.65257e+09   375234.6000            99.99%
    New incumbent written to file 'FinalMipSoln-00001.sol'.

    ---snip---

      17378  8480   912764.1742  1954  1197125.6303   633652.0756 42006539   47.07%
      17379 10907   765161.2316  3003  1197125.6303   633652.0756 46208917   47.07%
      17380 15917   701381.1227  5137  1093147.3852   633652.0756 53893755   42.03%  << new solution here? No *?, no incumbent file? 
    Elapsed time = 2310920.22 sec. (37390558.19 ticks, tree = 8750.23 MB, solutions = 111)
      17381  9182   752675.8242  4108  1093147.3852   633652.0756 43341234   42.03%
      17382  9183   752617.2620  4084  1093147.3852   633652.0756 43341245   42.03%
      17383 14510   758907.3094  3382  1093147.3852   633652.0756 51885652   42.03%

     

    ---snip---

      28805 17086   639692.2328  7129  1083025.6507   633653.7203 56004618   41.49%

      28806 16335   758322.8183  3295  1083025.6507   633653.7203 54525978   41.49%
      28807 27210   900817.9856  2355  1054336.6034   633653.7203 74310472   39.90%  << new solution here? No *?, no incumbent file? 
      28808 18506  1048384.3287   762  1054336.6034   633653.7203 58103600   39.90%

     

     

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: MIP incumbent solution not generated with improved Best Integer

    Posted 09/19/17 02:07 AM

    I think this is only an issue with CPLEX log output (CPLEX fails to report a "*"). If you use a callback or stop CPLEX you should see that the current incumbent matches the best integer solution displayed in the log.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: MIP incumbent solution not generated with improved Best Integer

    Posted 09/19/17 06:30 AM

    Originally posted by: agent337


    It is more than an issue with the print/formating of the cplex log.  This would be a bug since cplex stops writing the new incumbent  *.sol files, as specified via the parameter CPXPARAM_Output_IntSolFilePrefix.

     

     

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: MIP incumbent solution not generated with improved Best Integer

    Posted 09/20/17 02:02 AM

    You are right. Do you happen to have a small code to reproduce this problem that you can share? We have fixed similar things but would like to double check that your particular instance is fixed as well.

     


    #CPLEXOptimizers
    #DecisionOptimization