[Coin-discuss] some information about Cbc

Benoît MERLET benoit.merlet at orange-ft.com
Mon Aug 7 07:28:42 EDT 2006


Hello,

> Your approach adds all possible cuts before going on to allow Cbc to
> branch.  Are you sure you need to do that?  The main thing is to add cuts
> while you have what looks like an integral solution but which is invalid
> because of possible cuts.  You also want to add cuts to improve bound but
> it is the first that is important.  You can force Cbc to keep going round
> adding cuts until you tell it to stop and there are various other switches
> you can set to avoid fake solutions e.g. in strong branching.  You can find
> an example in examples/qmip2.cpp.  It is still a bit experimental.

I think I need to explain the history of the method I implemented.

In fact, another exact method exists to solve the same problem : a 
Benders-like constraint generation. The MIP is solved, and with its 
solution, a violated constraint is generated and added to the MIP. This 
sequence is iterated until no more violated constraints can be found. It 
is important to note that the generated constraints are feasability 
constraints, so when one can't generate one, the current solution is the 
solution.

But with this method, at each iteration, a MIP is solved, which takes 
time. We decided then to integrate directly the constraint generation 
process during the search progress of the branch-and-bound : here comes 
our branch-and-cut. And you can see we have to add all possible cuts 
before branching because at each node we want to evaluate a feasible 
solution for our problem (even if this solution is not integral).

> It might also be useful to use -pg to profile your code to see where time
> is being spent.

Yes, the executable is compiled and linked with this option. I will take 
time to see what's happenning.

Thanks a lot for your answers,
Benoît.





More information about the Coin-discuss mailing list