[Coin-discuss] Solving ILP within B&B framework

Wiebe Kirsten (Stud. FdEWB) K.Wiebe at Student.Unimaas.NL
Fri Jul 14 08:04:47 EDT 2006


Hello everyone,
I'm currently writing my master thesis in operations research about rankings in tournaments using the linear ordering polytope. My idea is to find all Slater solutions for that tournament with the help of a branch and bound, where, in each node of the b&b tree, the ILP of the linear ordering polytope is solved to optimality. For that I start with solving the ILP once to optimality and then "going up" in the tree fixing all variables above the currently processed node to what they were before (in the current solution of the ILP) and the variable that is branched on in that node to its complement, i.e. to (1 - (what is was before)). I implemented a function that detects 3-cycles, i.e. infeasibility if the transitivity is not satisfied; but it seems that there is still something going wrong. For a little instance where there are 4 participants for the tournament and hence 6 variables representing the binary relations the algorithm, that until now is simply supposed to go up in the b&b tree once, is working ok. In a larger instance, with 40 participants and hence 780 binary relations, I get that error message about "Access violation reaing location ..." after 33 iterations and my output says:
 
Clp6002E 192 bad bound pairs or bad objectives were found - first at R9884
Clp0004I Stopped due to errors - objective value 0
Cgl0000I Cut generators found to be infeasible!
 
The error message occurs where "model" is defined (model is the object with which I can define the branching method and node comparison and add cuts:
 
solver1=getModelForILP();
// Use Preprocessing of Coin
solver1.initialSolve();
solver2=&solver1;
solver2=PreProcess.preProcess(solver1,true,5);
model = new CbcModel(*solver2); <-- HERE IS THE ERROR
 
Does that mean that I cannot use the CoinOR cuts here, or is already something wrong with using the preprocessing?
 
I think it is about the preprocessing, because when I include
 
if(solver2 == NULL)
{
    cout << "Preprocessing did not work, node skipped\n";
    return 1;
}
 
before "model = new CbCModel(*solver2);" and hence return to main to continue without processing the node, the algorithm continues until iteration 95, but then there is again the error message about "access violation reading location..." when the program tries to access the column solution of column 423 (the variable that is branched on there). When debugging and looking until which column there are solutions I get that there are only solutions until column 218. In the beginning I had that problem already at iteration 33 and iteration 91, but that is not the case anymore and I just don't get why...
 
Greetz
Kirsten
-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 6001 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/coin-discuss/attachments/20060714/bf6c3e4e/attachment.bin>


More information about the Coin-discuss mailing list