Decision Optimization

Decision Optimization

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

 View Only
  • 1.  Overwriting lower bounds from linear relaxations

    Posted Sun November 02, 2014 06:15 PM

    Originally posted by: gtli


    Hi, I have a general question about B&B algorithm in CPLEX. Although I know that B&B algorithm is based on solving linear relaxations for nodes in the B&B tree, suppose I have some other way of obtaining lower bounds rather than using the linear relaxations, is there anyway to overwrite the linear relaxation lower bound under the CPLEX B&B algorithm frame? Thanks!


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Overwriting lower bounds from linear relaxations

    Posted Wed November 05, 2014 04:25 PM

     

     

    Hypothetically, you could use a branch callback to take over branching. In the callback, ask CPLEX how it would branch (there is a function for that) and create those branches, but with your bounds. The function that creates a branch takes a bounds as an argument. CPLEX will still solve the node LP at a child (unless it is pruned first). I'm not positive, but I think that if your bound is tighter than the LP bound, yours will be used.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Overwriting lower bounds from linear relaxations

    Posted Wed November 05, 2014 10:45 PM

    Originally posted by: gtli


    It seems that the bound won't completely replace the LP relaxation bound, at least in calculating relative gaps.  Thanks!


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Overwriting lower bounds from linear relaxations

    Posted Thu November 06, 2014 10:37 AM

    Well, that's rude of CPLEX! Maybe someone from IBM can comment on it.

    Meanwhile, a workaround that might work (but also might make things worse) would be to change minimize f(x) to minimize z with a constraint z = f(x). In the branch constraint, rather than (or in addition to) passing the new objective bound B as an argument, you could also add a new lower bound B for z (in addition to whatever changes are made when separating the node). That should force CPLEX to use B in gap calculations (unless it finds a bound tighter than B).

    It's often not a good idea to add a constraint like f(x) >= B to a problem where you are minimizing f(x), because it causes primal degeneracy/multiple dual solutions (or vice versa? -- still waiting for the morning coffee to kick in). I'm not sure if playing the game of minimizing z and tweaking its lower bound avoids that issue or not, but you could try and see.


    #CPLEXOptimizers
    #DecisionOptimization