Branching on sums of binary variables

Frequently asked questions about GAMS

Moderator: aileen

Forum rules
Please ask questions in the other sub-forums
Locked
aileen
User
User
Posts: 136
Joined: 3 years ago

Branching on sums of binary variables

Post by aileen »

I have implemented a MIP-model in GAMS, which I would like to solve to proven optimality. The problem is degenerate and has a lot optimal solutions, and many solutions very close to the optimum. It is not terminating with the optimal solution, but continuing to examine nodes with a very small gap > 0.00 %. I have a good idea for a branching rule, which I believe can work around the degeneracy problems. Instead of doing binary branching on fractional binary variables, I intend to branch on the sum of some variables, i.e: sum(s, delta(s)) =l= k; or sum(s, delta(s)) =g= k+1;

How can I introduce such a branching rule in GAMS, instead of just using binary branching ?
aileen
User
User
Posts: 136
Joined: 3 years ago

Re: Branching on sums of binary variables

Post by aileen »

You could introduce another integer variable sum_delta =e= sum(s, delta(s)); Now you can use branching priorities to instruct the MIP solver to first branch on the sum_delta variable and then on the delta(s):

Code: Select all

delta.prior(s) = 100;
sum_delta.prior = 1;
mymodel.prioropt=1;
solve mymodel min obj using mip;
If the multiple close to optimal solutions come from symmetry, you might also want to try a more aggressive level for symmetry braking cuts (see e.g. cplex option symmetry). Preprocessing at the node or aggressive probing might also help (see e.g. CPLEX options preslvnd and probe).
Locked