Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Branching on same variable twice

    Posted 02/19/15 07:16 PM

    Originally posted by: AbdelhalimHiassat


    Hello,

    I am using CPLEX 12.6 Callable Library.

    I have a branch callback, and I let CPLEX choose the variable to branch on (as it does by default), except I add a priority list for some variables using CPXcopyorder.  I have the following settings to guarantee I'm working on the original model.

    // Let MIP callbacks work on the original model /

    status = CPXsetintparam (env, CPX_PARAM_MIPCBREDLP, CPX_OFF);

    // Assure linear mappings between the presolved and original models

    status = CPXsetintparam (env, CPX_PARAM_PRELINEAR, CPX_OFF);

    // Only primal reductions are perfomed (as suggested by 'CPXsetbranchcallbackfunc' description)

    status = CPXsetintparam (env, CPX_PARAM_REDUCE, 1);

     

     

    I traced the tree from the root node, and I realized that it branches on the same variable (x2 for example) twice in the same tree. I.e., seq0 (root node) branches to seq1 and seq2 by branching on the binary x2. Then, seq1 branches to seq5 and seq6 by branching on the binary x21. After that, seq6 branches to seq7 and seq8 by branching on x2 again. (I neglected the branching that seq2 makes).

     

    Any idea why this happens?


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Branching on same variable twice

    Posted 02/20/15 03:52 PM

    Just double-checking: x2 is binary, not general integer?


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Branching on same variable twice

    Posted 02/20/15 03:54 PM

    Originally posted by: AbdelhalimHiassat


    Yes.


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Branching on same variable twice

    Posted 02/21/15 05:12 PM

    Branching on x2 twice does not seem to make much sense. Can you tell what bounds are assigned to x2 in each branch? I'm curious whether, if x2 is bounded between 0 and 0 in seq1, is it then between 0 and 0 in seq7 and also between 0 and 0 in seq8? That would seem pointless, but on the other hand letting x2 become 1 in seq8 after fixing it at 0 in seq1 would be incorrect.


    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Branching on same variable twice

    Posted 02/21/15 05:19 PM

    Originally posted by: AbdelhalimHiassat


    Hi Paul,

    seq1 gets x2=0, while seq2 gets x2=1. Seq6 branches to seq7 with x2=0 and seq8 with x2=1. 

    I know it's strange, and that's why I was baffled. 


    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Branching on same variable twice

    Posted 02/24/15 01:45 AM

    Just to be sure: how exactly do you track the branching decisions?

    Also, what are the bounds (CPXgetcallbacknodelb and CPXgetcallbacknodeub) of x2 at seq6 _before_ the branches seq7 and seq8 are created? According to the branching at seq1 they should be 0, right? Are they both zero at seq6?


    #CPLEXOptimizers
    #DecisionOptimization