<br><font size=2 face="sans-serif">Tobias,</font>
<br>
<br><font size=2 face="sans-serif">I agree with you but I am not sure this
is a common enough requirement so I was just proposing minimal work solution.</font>
<br>
<br><font size=2 face="sans-serif">What do people think?</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Tobias Achterberg &lt;achterberg@zib.de&gt;</b>
</font>
<br><font size=1 face="sans-serif">Sent by: coin-discuss-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">08/24/2005 08:19 AM</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
Discussions about open source software for Operations Research &nbsp; &nbsp;
&nbsp; &nbsp;</font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td valign=top><font size=1 face="sans-serif">Discussions about open source
software for Operations Research &lt;coin-discuss@list.coin-or.org&gt;</font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td valign=top>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td valign=top><font size=1 face="sans-serif">Re: [Coin-discuss] How to
cut off &quot;optimal&quot; solution in CBC</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>Hi John,<br>
<br>
you propose to check the feasibility of a solution candidate by calling
the cut generators. I think,<br>
this is conceptually wrong - I view a cut generator as a method, that may
separate cuts, but that<br>
may also decide to not search for cuts. A cut generator should be allowed
to miss certain cuts.<br>
The feasibility test is something different: here, the user has to be called
in order to decide<br>
whether a given solution is feasible or not. This sometimes can be answered
much more efficiently<br>
than by searching cuts (and being forced to find one if a violated cut
exists). You should add<br>
another callback &quot;checkFeasibility()&quot;. Here, the user either
says &quot;FEASIBLE&quot; or &quot;INFEASIBLE&quot;, and if<br>
he answers &quot;INFEASIBLE&quot;, he might (but should not be forced to)
add a cut that cuts off the given<br>
solution candidate.<br>
<br>
Cheers, Tobi<br>
<br>
John J Forrest wrote:<br>
&gt; <br>
&gt; Jim,<br>
&gt; <br>
&gt; Good point. &nbsp;setBestSolution cleans up and checks solution so
I think it<br>
&gt; should run before cut generators which are going to use the solution.
&nbsp;I<br>
&gt; expect the generators to generate cuts which may cut off this solution
-<br>
&gt; but in your case you also want to reject that solution.<br>
&gt; <br>
&gt; What I could do is save old solution and cutoff and then if any cut<br>
&gt; generator returns a cut which is &quot;infeasible&quot; (as defined
in OsiCut.hpp<br>
&gt; then that says restore old solution (and the infeasible cut is obviously<br>
&gt; discarded). &nbsp;At the same time you could generate the global cut
you<br>
&gt; wanted and that would be added.<br>
&gt; <br>
&gt; Or some variant e.g. use &quot;effectiveness&quot;. &nbsp;<br>
&gt; <br>
&gt; Shall I implement and what method of flagging this situation do you<br>
&gt; think is best?<br>
&gt; <br>
&gt; John Forrest<br>
&gt; <br>
&gt; So what if I saved old solution<br>
&gt; <br>
&gt; <br>
&gt; *&quot;Jim Hurd&quot; &lt;jimh@datagrove.com&gt;*<br>
&gt; Sent by: coin-discuss-bounces@list.coin-or.org<br>
&gt; <br>
&gt; 08/23/2005 01:47 PM<br>
&gt; Please respond to<br>
&gt; Discussions about open source software for Operations Research &nbsp;
&nbsp; &nbsp; &nbsp;<br>
&gt; <br>
&gt; <br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
&gt; To<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;coin-discuss@list.coin-or.org&gt;<br>
&gt; cc<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
&gt; Subject<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[Coin-discuss]
How to cut off &quot;optimal&quot; solution in CBC<br>
&gt; <br>
&gt; <br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; I have a cut generator that may cut off a found integer/optimal solution<br>
&gt; when it runs. I have it set to run atSolution, which works, but looking<br>
&gt; at the code for &nbsp;CbcModel::setBestSolution it seems that the
solution is<br>
&gt; installed prior to running the cuts. When I run my Cbc based solver<br>
&gt; branchAndBound terminates with a solution that should be cut off.
How do<br>
&gt; I get Cbc to respect these global cuts? There are too many to just
put<br>
&gt; them all in the model at the beginning.<br>
&gt; &nbsp;<br>
&gt; Thanks,<br>
&gt; &nbsp;<br>
&gt; Jim Hurd<br>
&gt; &nbsp;_______________________________________________<br>
&gt; Coin-discuss mailing list<br>
&gt; Coin-discuss@list.coin-or.org<br>
&gt; http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
&gt; <br>
&gt; <br>
&gt; ------------------------------------------------------------------------<br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; Coin-discuss mailing list<br>
&gt; Coin-discuss@list.coin-or.org<br>
&gt; http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
<br>
-- <br>
Tobias Achterberg &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Konrad-Zuse-Zentrum
fuer<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; Informationstechnik Berlin<br>
Tel: +49 (0)30 84185-301 &nbsp; Takustr. 7<br>
Email: achterberg@zib.de &nbsp; D-14195 Berlin, Germany<br>
_______________________________________________<br>
Coin-discuss mailing list<br>
Coin-discuss@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
</tt></font>
<br>