Decision Optimization

Decision Optimization

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

 View Only
  • 1.  FeasPump in Interactive Optimizer

    Posted Wed July 06, 2011 06:32 PM

    Originally posted by: SystemAdmin


    Dear all,

    in my recent experiments I observed a strange behaviour within the solution process of a MIP. I construct a model via the C++ Concert API.
    Among other parameters, I use the barrier solver to solve the root problem (rootalg = 4) and activate the feasibility pump heuristic (fpHeur = 1).
    This works quite well. See the following log snippet:

    MIP emphasis: balance optimality and feasibility.
    MIP search method: dynamic search.
    Parallel mode: deterministic, using up to 2 threads.
    Root relaxation solution time =   48.27 sec.
     
            Nodes                                         Cuts/ 
       Node  Left     Objective  IInf  Best Integer     Best Node    ItCnt     Gap
     
          0     0   253221.8813   639                 253221.8813       38         
    *     0+    0                      2097092.5595   253221.8813       38   87.93%
          0     0   253245.5482   667  2097092.5595      Cuts: 11      166   87.92%
          0     0   253317.8037   726  2097092.5595      Fract: 2      399   87.92%
          0     0   253333.5589   687  2097092.5595      Fract: 1      440   87.92%
    Heuristic still looking.
    Heuristic still looking.
    *     0+    0                       257115.9235   253333.5589      440    1.47%
    *     0+    0                       256980.4048   253333.5589      440    1.42%
    *     0+    0                       256666.8882   253333.5589      440    1.30%
    *     0+    0                       256430.5748   253333.5589      440    1.21%
    *     0+    0                       256047.9709   253333.5589      440    1.06%
          0     2   253333.5589   687   256047.9709   253333.5589      440    1.06%
    Elapsed real time = 214.70 sec. (tree size =  0.01 MB, solutions = 6)
          1     3   253520.0311   635   256047.9709   253333.5589     3424    1.06%
          2     4   253534.8535   631   256047.9709   253333.5878     4422    1.06%
    *     3+    3                       255995.2409   253333.5878     4835    1.04%
    *     3+    3                       255673.0742   253333.5878     4835    0.92%
    


    I saved the model as sav-File and the parameter-file as prm-file in order to use both of them in the interactive optimizer.
    To my suprise, this does not work as expected; it seems that the feasibility pump is not used (despite being activated).
    Here are some lines from the log:

    MIP emphasis: balance optimality and feasibility.
    MIP search method: dynamic search.
    Parallel mode: deterministic, using up to 2 threads.
    Root relaxation solution time =   39.97 sec.
     
            Nodes                                         Cuts/ 
       Node  Left     Objective  IInf  Best Integer     Best Node    ItCnt     Gap
     
          0     0   253221.8813   637                 253221.8813       68         
    Heuristic still looking.
    Heuristic still looking.
    Heuristic still looking.
          0     2   253221.8813   637                 253221.8813       68         
    Elapsed real time = 216.20 sec. (tree size =  0.01 MB, solutions = 0)
          1     3   253278.2412   641                 253221.8813     1332         
          2     4   253347.0616   546                 253221.8813     2239         
          3     5   253395.2901   511                 253278.2912     3137         
          5     7   253410.3133   509                 253278.7901     5652         
          7     9   253441.3781   516                 253278.7901     8613         
          9    11   268571.6532   488                 253278.7901    10797         
         10    12   253423.1443   523                 253278.7901    12338         
         12    14   253477.7069   439                 253278.7901    14134         
         13    15   256957.9939   483                 253278.7901    16803         
         14    16   253493.4709   448                 253278.7901    17488         
    Elapsed real time = 419.36 sec. (tree size =  0.86 MB, solutions = 0)
         15    17   256966.8990   469                 253278.7901    18930         
         16    18   253687.2093   411                 253278.7901    21744         
         19    21   257180.1164   454                 253278.7901    24568         
         22    24   253790.2670   398                 253278.7901    27204         
         25    27   253799.0317   433                 253278.7901    28740         
         27    29   253863.1352   376                 253278.7901    32278         
         36    38   253872.7401   381                 253278.7901    37602         
         37    39   257352.4549   460                 253278.7901    38993         
         38    40   254340.2262   393                 253278.7901    41876         
         40    42   253876.1862   414                 253278.7901    43101
    


    Is there any reasonable explanation for this? Interestingly, when I change the subproblem algorithm to barrier, the feasibility pump works as expected also in the interactive optimizer.

    Thank you in advance, kind regards,

    Michael
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: FeasPump in Interactive Optimizer

    Posted Wed July 06, 2011 07:26 PM

    Originally posted by: SystemAdmin


    As you can see in the logs, for some reason the initial root LP solve is already different: 38 iterations in the first log, 68 iterations in the second log. Maybe you should set the MIPDISPLAY parameter to 4 to find out what is going on...

    In principle, the .sav file should give exactly the same results as the Concert API call to cplex.solve().
    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: FeasPump in Interactive Optimizer

    Posted Thu July 07, 2011 04:42 AM

    Originally posted by: SystemAdmin


    Tobias,

    thanks for your reply. Actually, you are right: In the C++ code, the MIP is solved after having carried out an iterative fixing procedure on the LP relaxation. After converting the LP relaxation to MIP, the model is written to the .sav file (containing information from the last LP run). Then, before solving the MIP model, the cplex-object is ended and the model object is connected to a new cplex-object. Thus, in concert, the model is solved without basis and in the interactive optimizer, the basis is used. Setting the parameter advance to 0 results in abandoning the basis and the results are exactly the same.

    Michael
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: FeasPump in Interactive Optimizer

    Posted Thu July 07, 2011 05:07 AM

    Originally posted by: SystemAdmin


    Just to make it clear: Setting the parameter advance to 0 results in abandoning the basis and then, the results and logs are identical to those from the concert-call (Just as it would be expected).
    #CPLEXOptimizers
    #DecisionOptimization