<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 <achterberg@zib.de></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
</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 <coin-discuss@list.coin-or.org></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 "optimal" 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 "checkFeasibility()". Here, the user either
says "FEASIBLE" or "INFEASIBLE", and if<br>
he answers "INFEASIBLE", 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>
> <br>
> Jim,<br>
> <br>
> Good point. setBestSolution cleans up and checks solution so
I think it<br>
> should run before cut generators which are going to use the solution.
I<br>
> expect the generators to generate cuts which may cut off this solution
-<br>
> but in your case you also want to reject that solution.<br>
> <br>
> What I could do is save old solution and cutoff and then if any cut<br>
> generator returns a cut which is "infeasible" (as defined
in OsiCut.hpp<br>
> then that says restore old solution (and the infeasible cut is obviously<br>
> discarded). At the same time you could generate the global cut
you<br>
> wanted and that would be added.<br>
> <br>
> Or some variant e.g. use "effectiveness". <br>
> <br>
> Shall I implement and what method of flagging this situation do you<br>
> think is best?<br>
> <br>
> John Forrest<br>
> <br>
> So what if I saved old solution<br>
> <br>
> <br>
> *"Jim Hurd" <jimh@datagrove.com>*<br>
> Sent by: coin-discuss-bounces@list.coin-or.org<br>
> <br>
> 08/23/2005 01:47 PM<br>
> Please respond to<br>
> Discussions about open source software for Operations Research
<br>
> <br>
> <br>
> <br>
> To<br>
> <coin-discuss@list.coin-or.org><br>
> cc<br>
> <br>
> Subject<br>
> [Coin-discuss]
How to cut off "optimal" solution in CBC<br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> I have a cut generator that may cut off a found integer/optimal solution<br>
> when it runs. I have it set to run atSolution, which works, but looking<br>
> at the code for CbcModel::setBestSolution it seems that the
solution is<br>
> installed prior to running the cuts. When I run my Cbc based solver<br>
> branchAndBound terminates with a solution that should be cut off.
How do<br>
> I get Cbc to respect these global cuts? There are too many to just
put<br>
> them all in the model at the beginning.<br>
> <br>
> Thanks,<br>
> <br>
> Jim Hurd<br>
> _______________________________________________<br>
> Coin-discuss mailing list<br>
> Coin-discuss@list.coin-or.org<br>
> http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
> <br>
> <br>
> ------------------------------------------------------------------------<br>
> <br>
> _______________________________________________<br>
> Coin-discuss mailing list<br>
> Coin-discuss@list.coin-or.org<br>
> http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
<br>
-- <br>
Tobias Achterberg Konrad-Zuse-Zentrum
fuer<br>
Informationstechnik Berlin<br>
Tel: +49 (0)30 84185-301 Takustr. 7<br>
Email: achterberg@zib.de 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>