<br><font size=2 face="sans-serif">Stefano,</font>
<br>
<br><font size=2 face="sans-serif">There does seem to be a problem with
FPump in Cbc/stable. &nbsp;It is not there in Cbc/trunk so I will try and
move some code to stable. &nbsp;There are significant improvements to FPump
in trunk, but not all will get moved. &nbsp;I will fix it in stable/1.2
as I have that checked out. &nbsp;Do you need it fixed in stable/1.1?</font>
<br>
<br><font size=2 face="sans-serif">John</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Stefano Gliozzi/Italy/IBM@IBMIT</b>
</font>
<p><font size=1 face="sans-serif">09/21/2007 08:35 AM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">cbc@list.coin-or.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">John J Forrest/Watson/IBM@IBMUS, Fabio
Bresciani/Italy/IBM, Mauro Scarioni</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Problem with Cbc after &nbsp;FPump Heuristic</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br><font size=2 face="sans-serif">Hi, </font>
<br>
<br><font size=2 face="sans-serif">I'm having some problems, possibly connected
with the FPump. I'm using Cbc 1.1.1 under Windows XP. The attached mps
file solves in few seconds using the attached cpp program (which optimizes
the mpsfile and generates the case); however, the Cbc claims that the (Optimal)
solution found has a value of 5, but checking with the variables (i.e.performing
a loop &nbsp;summing up the product of the activities times their Objective
function entry, as they are i n the Cbc arrays) the actual result is 27.
</font>
<br>
<br><font size=2 face="sans-serif">To perform the check I use this code
fragment: at the very end of the driver:</font>
<br>
<br><font size=2>&nbsp;</font><font size=2 color=#008000>// Plain : Check
the solution value multiplying each column by its entry in OBJ</font>
<br><font size=2 color=#008000>// &nbsp; &nbsp; &nbsp; &nbsp; and sum &nbsp;up
them</font>
<br>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=blue>long</font><font size=2>
ncol=thisModel.getNumCols();</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=blue>const</font><font size=2>
</font><font size=2 color=blue>double</font><font size=2> *colAct=thisModel.bestSolution();
&nbsp;</font><font size=2 color=#008000>// pick up best solution activities</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=blue>const</font><font size=2>
</font><font size=2 color=blue>double</font><font size=2> *colObj=thisModel.getObjCoefficients();</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=blue>double</font><font size=2>
computedValue=0.0;</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font>
<br>
<br>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=blue>for</font><font size=2>
(</font><font size=2 color=blue>int</font><font size=2> i=0; i&lt;ncol;
i++) {</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </font><font size=2 color=blue>if</font><font size=2> (fabs(colAct[i])&gt;1.0e-5)
{</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=blue>if</font><font size=2>
((colObj[i]) != 0.0) {</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; computedValue+=colObj[i]*colAct[i];</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; std::cout &lt;&lt; </font><font size=2 color=#800000>&quot;
Column&quot;</font><font size=2> &lt;&lt; i &lt;&lt; </font><font size=2 color=#800000>&quot;
Activity=&quot;</font><font size=2> &lt;&lt; colAct[i] &lt;&lt; </font><font size=2 color=#800000>&quot;
Obj Coeff.=&quot;</font><font size=2> &lt;&lt; colObj[i] &lt;&lt; </font><font size=2 color=#800000>&quot;\n&quot;</font><font size=2>;</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; }</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt;
</font><font size=2 color=#800000>&quot; Objective Value computed by Cbc
= &quot;</font><font size=2> &lt;&lt; thisModel.getObjValue() &lt;&lt;
</font><font size=2 color=#800000>&quot;\n&quot;</font><font size=2>;</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; std::cout &lt;&lt;
</font><font size=2 color=#800000>&quot; Objective Value computed by this
program = &quot;</font><font size=2> &lt;&lt; computedValue &lt;&lt; </font><font size=2 color=#800000>&quot;\n&quot;</font><font size=2>;</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=2 color=blue>if</font><font size=2>
(fabs(computedValue-thisModel.getObjValue())&gt;1.0e-6) {</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; std::cout &lt;&lt; </font><font size=2 color=#800000>&quot;\n
SOMETHING WRONG HERE ? : THE TWO DON'T MATCH \n&quot;</font><font size=2>;</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; } </font><font size=2 color=blue>else</font><font size=2>
{</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; std::cout &lt;&lt; </font><font size=2 color=#800000>&quot;1n
It is all ok: the two values match \n&quot;</font><font size=2>;</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; }</font>
<br><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt;
</font><font size=2 color=#800000>&quot; \n \n --------ENDING SOLUTION
CHECK--------------------\n&quot;</font><font size=2>;</font>
<br>
<br>
<br><font size=2 color=#008000>&nbsp; </font>
<br><font size=2 face="sans-serif">If I just flag the FPump heuristic in
the driver, I obtain a correct result (i.e. the value is 5 and it passes
the test above).</font>
<br><font size=2 face="sans-serif">Could you please help me ? &nbsp;Is
it something I misunderstood in the usage of FPump ? </font>
<br>
<br><font size=2 face="sans-serif">[attachment &quot;pippo.mps&quot; deleted
by John J Forrest/Watson/IBM] [attachment &quot;CbcBugCase.hpp&quot; deleted
by John J Forrest/Watson/IBM] [attachment &quot;CbcBugCase.cpp&quot; deleted
by John J Forrest/Watson/IBM] </font>
<br>
<br><font size=2 face="sans-serif">Best regards / ciao</font>
<br>
<br><font size=2 face="sans-serif">Stefano</font>
<br><font size=2 face="sans-serif">&nbsp;</font>
<br><font size=2 face="sans-serif">Senior Managing Consultant <br>
CMC-Certified Management Consultant<br>
IBM Global Business Services<br>
Ph. &nbsp; +39-06-596-65477, &nbsp; Mobile +39-335-7389709<br>
Fax. +39-06-596-65477<br>
e-mail: stefano_gliozzi @ it.ibm.com<br>
mail: Via Sciangai, 53 - 00144 Roma - ITALY</font>
<br>