[Osi] OsiCbc, CbcMain

Stefan Vigerske stefan at math.hu-berlin.de
Tue Feb 22 05:08:25 EST 2011


> It seems that the best way to solve IPs from OSI with CBC is to use:
>     CbcModel cbc(*m_osi);
>     CbcMain0(cbc);
>     CbcMain1(argc, argv, cbc);
> This has been discussed many times, since OsiCbc/Clp.branchAndBound( )
> doesn't do all the tricks and performs poorly.
> But, I just noticed today, that CbcModel cbc(*m_osi) works only with OsiClp
> and not with OsiCbc. That seems very odd to me - since Osi is suppose to be
> the container with which you would hold an IP and you would only drop to
> Cbc* when something in Osi does not work properly (similar to dropping out
> of OsiCpx to CPX* when something in OsiCpx is missing).
> Shouldn't CbcModel/Main work with OsiCbc?

I think the idea is that you pass an LP incl. solver (interface) to 
CbcModel, which then reads the information on integer variables from 
that LP (I know it sounds strange ;-)) and solves this MIP using the 
provided LP solver interface. A cleaner way may be to strictly allow 
only LPs to CbcModel and to set additional MIP information afterwards in 
the CbcModel.

Setting up a OsiCbc, then getting the CbcModel from that OsiCbc, and 
given that to CbcMain{0,1} to solve it (I know it sounds strange too 
;-)) should also work.
(Personally I think OsiCbc should not be released as long as it does not 
work properly.)


> Matt
> _______________________________________________
> Osi mailing list
> Osi at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/osi

More information about the Osi mailing list