Oops, sorry... Gmail changed it for no good reason and without the slightest warning ;-)<br><br>I&#39;ll be writing to the Cbc list then ! <br><br>Thank you ! ;-)<br><br>Nathann<br><br><div class="gmail_quote">2009/8/2 Matthew Saltzman <span dir="ltr">&lt;<a href="mailto:mjs@clemson.edu">mjs@clemson.edu</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">On Sun, 2009-08-02 at 13:24 +0200, Nathann Cohen wrote:<br>
&gt; I was indeed interested by enumerating all the *optimal* solutions to<br>
&gt; a problem.. But is there a &quot;clean&quot; way to change the large inequality<br>
&gt; tp a strict inequality, perhaps by changing a parameter of the model<br>
&gt; object ( I&#39;m afraid I may be dreaming ;-) ), or am I bound to modify<br>
&gt; CBC&#39;s original source code ?<br>
<br>
</div>I&#39;m not sure (not familiar with CBC internals), but I suspect you&#39;ll<br>
need to touch the code.  I don&#39;t think it should be hard, though.<br>
<div class="im"><br>
<br>
&gt;<br>
&gt; It does not seem too complicated for someone knowing beforehand how<br>
&gt; CBC works, perhaps my best bet is to ask for a new feature in CBC --<br>
&gt; namely the enumeration of all the integer solution.. ;-)<br>
<br>
</div>You&#39;ll want to raise that issue on the Cbc list.<br>
<br>
BTW, you sent your message from an account that wasn&#39;t subscribed to the<br>
list, so it bounced.  Your subscription address is your inrea one.<br>
<div><div></div><div class="h5"><br>
&gt;<br>
&gt; Thank you again !<br>
&gt;<br>
&gt; Nathann<br>
&gt;<br>
&gt; 2009/8/2 Matthew Saltzman &lt;<a href="mailto:mjs@clemson.edu">mjs@clemson.edu</a>&gt;<br>
&gt;<br>
&gt;         On Fri, 2009-07-31 at 21:16 +0200, Stefan Vigerske wrote:<br>
&gt;         &gt; Hi,<br>
&gt;         &gt;<br>
&gt;         &gt; Craig Schmidt wrote:<br>
&gt;         &gt; &gt; On Jul 31, 2009, at 1:46 PM, Nathann Cohen wrote:<br>
&gt;         &gt; &gt;<br>
&gt;         &gt; &gt;&gt; Don&#39;t you think there may be some special way to do it<br>
&gt;         with Cbc,<br>
&gt;         &gt; &gt;&gt; though ? It seems a huge waste to begin again the<br>
&gt;         computations from<br>
&gt;         &gt; &gt;&gt; scratch, or just to modify the problem when all the<br>
&gt;         necessary<br>
&gt;         &gt; &gt;&gt; informations to enumerate the solutions seems to be<br>
&gt;         available to the<br>
&gt;         &gt; &gt;&gt; solver :-/<br>
&gt;         &gt; &gt;&gt;<br>
&gt;         &gt; &gt;&gt; Thanks for you help, though ! ;-)<br>
&gt;         &gt; &gt;&gt;<br>
&gt;         &gt; &gt;&gt; Nathann<br>
&gt;         &gt; &gt;<br>
&gt;         &gt; &gt; Nathann,<br>
&gt;         &gt; &gt;<br>
&gt;         &gt; &gt; Integer cuts are the only way to go.<br>
&gt;         &gt; &gt;<br>
&gt;         &gt; &gt; Unfortunately, any branch and bound based solver doesn&#39;t<br>
&gt;         have the<br>
&gt;         &gt; &gt; necessary information to find next-best solutions.  If you<br>
&gt;         think about<br>
&gt;         &gt; &gt; how the &quot;bound&quot; part of the algorithm works, so can see<br>
&gt;         why.  Once an<br>
&gt;         &gt; &gt; integer feasible solution is found, it uses that as a<br>
&gt;         bound to exclude<br>
&gt;         &gt; &gt; subproblems which cannot contain the optimal solution.<br>
&gt;          The second<br>
&gt;         &gt; &gt; best solution could be contained in any of the excluded<br>
&gt;         parts of the<br>
&gt;         &gt; &gt; search tree, which it never examined.<br>
&gt;         &gt;<br>
&gt;         &gt; Thus, one way could be to let the solver explore the search<br>
&gt;         tree further<br>
&gt;         &gt; down even when it found a integer feasible solution. Thus<br>
&gt;         pruning using<br>
&gt;         &gt; such a solution would have to be disabled, maybe just by<br>
&gt;         declaring an<br>
&gt;         &gt; integer feasible solutions as infeasible if not all integers<br>
&gt;         are fixed.<br>
&gt;         &gt; I&#39;m not sure, but shouldn&#39;t it be possible to implement this<br>
&gt;         using<br>
&gt;         &gt; CbcObject&#39;s?<br>
&gt;<br>
&gt;<br>
&gt;         If you just want all *optimal* integer solutions, you can<br>
&gt;         modify the<br>
&gt;         bounding procedure in CBC to require that a lower bound<br>
&gt;         strictly exceed<br>
&gt;         the incumbent value, rather than just matching it (assuming<br>
&gt;         minimization) before the node is fathomed.  Then the search<br>
&gt;         would<br>
&gt;         continue for subtrees that could contain a solution with value<br>
&gt;         equal to<br>
&gt;         the incumbent.<br>
&gt;<br>
&gt;         I suppose the bound could be adjusted to find all integer<br>
&gt;         solutions<br>
&gt;         within some delta from the incumbent value, but that would<br>
&gt;         require<br>
&gt;         managing the list of incumbents found so far, and it doesn&#39;t<br>
&gt;         guarantee<br>
&gt;         any particular number of solutions or whether they are<br>
&gt;         generated in<br>
&gt;         order by objective value.<br>
&gt;<br>
&gt;         Generating the K best solutions in order by value could be<br>
&gt;         done with a<br>
&gt;         &quot;meta&quot; branch and bound procedure that branches on cuts like<br>
&gt;         those<br>
&gt;         described in earlier replies, but that&#39;s not in CBC at this<br>
&gt;         point, and<br>
&gt;         would require some serious work.<br>
&gt;<br>
&gt;         &gt;<br>
&gt;         &gt; CPLEX offers such a feature under the name solution pool.<br>
&gt;         &gt; And for the sake of citing the gams modlib again:<br>
&gt;         &gt; <a href="http://www.gams.com/modlib/libhtml/solnpool.htm" target="_blank">http://www.gams.com/modlib/libhtml/solnpool.htm</a><br>
&gt;         &gt; Also SCIP has such a feature<br>
&gt;         (<a href="http://opus.kobv.de/zib/volltexte/2008/1092" target="_blank">http://opus.kobv.de/zib/volltexte/2008/1092</a>).<br>
&gt;         &gt;<br>
&gt;         &gt; Best,<br>
&gt;         &gt; Stefan<br>
&gt;         &gt;<br>
&gt;         --<br>
&gt;<br>
&gt;                        Matthew Saltzman<br>
&gt;<br>
&gt;         Clemson University Math Sciences<br>
&gt;         mjs AT clemson DOT edu<br>
&gt;         <a href="http://www.math.clemson.edu/%7Emjs" target="_blank">http://www.math.clemson.edu/~mjs</a><br>
&gt;<br>
&gt;<br>
&gt;         _______________________________________________<br>
&gt;         Osi mailing list<br>
&gt;         <a href="mailto:Osi@list.coin-or.org">Osi@list.coin-or.org</a><br>
&gt;         <a href="http://list.coin-or.org/mailman/listinfo/osi" target="_blank">http://list.coin-or.org/mailman/listinfo/osi</a><br>
&gt;<br>
&gt;<br>
</div></div>--<br>
<div><div></div><div class="h5">                Matthew Saltzman<br>
<br>
Clemson University Math Sciences<br>
mjs AT clemson DOT edu<br>
<a href="http://www.math.clemson.edu/%7Emjs" target="_blank">http://www.math.clemson.edu/~mjs</a><br>
</div></div></blockquote></div><br>