[Cbc] Cbc returns fractional solutions

Lou Hafer lou at cs.sfu.ca
Fri May 11 13:06:36 EDT 2007


Vishy,

	Perhaps you're expecting too much from minimum.cpp.  It's exactly what
it says, an absolute minimal driver.  In particular, it doesn't analyse the
status at the end of branch-and-cut, it simply asks for a solution.  Looking at
the output, I see:

<snip>	
Coin0002I Problem BLANK has 858 rows, 196 columns and 2851 elements
Coin0008I BLANK read with 0 errors
Clp0006I 0  Obj 20000 Primal inf 140114 (68)
Clp0006I 184  Obj 1.54172e+06
Clp0000I Optimal - objective value 1.54172e+06
Clp0000I Optimal - objective value 1.54172e+06
Clp0006I 0  Obj 1.54172e+06 Primal inf 27.3355 (2)
Clp0006I 29  Obj 1.56244e+06
Clp0000I Optimal - objective value 1.56244e+06
Cbc0001I Search completed - best objective 1e+50, took 0 iterations and 0 nodes 
(0.33 seconds)
Cbc0032I Strong branching done 12 times (246 iterations), fathomed 1 nodes and 
fixed 2 variables
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
Clp0006I 0  Obj 1.56244e+06 Primal inf 17 (30) Dual inf 3.99999e+10 (4)
Clp0006I 7  Obj 1.56244e+06 Primal inf 17 (30)
Clp0001I Primal infeasible - objective value 1.56244e+06
0 has value 1
1 has value 1
6 has value 0.548986
7 has value 0.451014
9 has value 0.513514
10 has value 0.486486
12 has value 0.548986
13 has value 0.451014
15 has value 0.513514
16 has value 0.486486
18 has value 0.742278
<snip>

You'll notice that Cbc reports branch-and-cut search completed with an objective
of 1e+50 --- this is the condition for `no solution'.  If you add a call to
model.isProvenInfeasible(), it will report true.  The `solution' you're seeing
is simply the result of clp trying to comply with a request for a solution that
doesn't exist.  The values reported are the primal variables at the point where
clp declared infeasibility.

	The cbc executable does the necessary checks and properly reports this
problem as infeasible.

							Lou



More information about the Cbc mailing list