<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Matthew,<br>
<br>
I get identical results using driver4.cpp and cbc executable - if
you don't then maybe I can track it down.<br>
<br>
In your example it would be OsiClpSolverInterface iface and maybe
there is some subtle difference between reading an mps file and
ConstructModel.<br>
<br>
John Forrest<br>
On 28/07/14 18:43, Matthew Gidden wrote:<br>
</div>
<blockquote
cite="mid:CAHRdPFycuK5h8BR=T_KxovneMw=pKZAWb6zQYaagOaDwMzrjZA@mail.gmail.com"
type="cite">
<div dir="ltr">Hi all,
<div><br>
</div>
<div>I just wanted to report back. I've been hunting for the
actual main function used by the CLI, and as best I can tell
it's in CoinSolve.cpp. It doesn't appear that there's anything
extra going on between CbcMain0 and CbcMain1. Accordingly,
it's unclear to me why a call to `cbc` from the command line
returns a solution consistently faster than using the API by a
factor of ~2-3 for smallish problems. To be clear, I do the
following:</div>
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">OsiCbcSolverInterface
iface;<br>
ConstructModel(iface);</blockquote>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">int
argc = 3;<br>
const char *argv[] = {"exchange","-solve","-quit"}; </blockquote>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">CbcMain0(*iface->getModelPtr());<br>
CbcMain1(argc, argv, *iface->getModelPtr(), callBack);</blockquote>
<div><br>
</div>
<div>I'm going to leave this for now (unless someone has a clear
idea as to what the difference may be). Using CbcMain0/1
provides me a substantial speed up (3 orders of magnitude)
over naively calling branchAndBound, as one might expect. </div>
<div><br>
</div>
<div>I would still be very interested in any documentation
regarding the heuristics, cuts, branching strategies, etc.
used in CbcMain1 (again, 8k+ lines of code is burdensome to
investigate). I would also be very interested if anyone has
any open source drivers that do something like CbcMain1 (i.e.,
apply 'generally good' heuristics, cuts, etc.) but maintains
the unsolved model in order to provide user-specified,
additional options.</div>
<div><br>
</div>
<div>Again, I apologize if this is old hat for the community;
I'd also like to specifically thank John and Rolf for
assisting.</div>
<div><br>
</div>
<div>Cheers, </div>
<div><br>
</div>
</div>
<div class="gmail_extra">
<br>
<br>
<div class="gmail_quote">On Sun, Jul 27, 2014 at 10:02 AM,
Matthew Gidden <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:gidden@wisc.edu" target="_blank">gidden@wisc.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hi John,
<div><br>
</div>
<div><br>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">
<div class="">On Sat, Jul 26, 2014 at 1:45 PM, John
Forrest <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:john.forrest@fastercoin.com"
target="_blank">john.forrest@fastercoin.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Matthew,<br>
<br>
Look at driver4.cpp in Cbc/examples. </div>
</div>
</blockquote>
</div>
<div>I'm playing around with this right now. Just
using CbcMain0 and CbcMain1 get's within an order of
magnitude of the CLI execution. I'll keep at it.
Thanks for the input! </div>
<div>
<div class="h5">
<blockquote class="gmail_quote" style="margin:0 0
0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>You could easily turn some of that into
your SolveModelLikeCli (with optional string
of parameters).<span><font color="#888888"><br>
<br>
John Forrest</font></span>
<div>
<div><br>
<br>
On 26/07/14 00:06, Matthew Gidden wrote:<br>
</div>
</div>
</div>
<blockquote type="cite">
<div>
<div>
<div dir="ltr">Hi all,
<div><br>
</div>
<div>I've discovered that the cbc CLI
does a pretty good job at solving my
class of problems. In short, I'm
curious if there's a way to get that
rich functionality at the API level.
Ideally, I'd like to do something
like the following:</div>
<div><br>
</div>
<blockquote class="gmail_quote">model
= ConstructModel();<br>
SolveModelLikeCLI(model); </blockquote>
<div><br>
</div>
<div>It looks like the implementation
is one long function (cbcMain1 is
8k+ lines) and would be incredibly
difficult to cherry-pick
implementation from it. I've scoured
the API docs and haven't found
anything that looks promising.
Alternatively, is there a listing of
all the heuristics, cuts, branching
strategies, etc., used by the
default CLI?<br>
<div><br>
</div>
<div>Sorry if this is an obvious
question; I was hoping to leverage
the features already implemented
before reimplementing something
myself.</div>
<div><br>
</div>
-- <br>
<div dir="ltr">Matthew Gidden<br>
Ph.D. Candidate, Nuclear
Engineering
<div> The University of Wisconsin
-- Madison<br>
Ph. <a moz-do-not-send="true"
href="tel:225.892.3192"
value="+12258923192"
target="_blank">225.892.3192</a><br>
</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div>
</div>
<div>
<pre>_______________________________________________
Cbc mailing list
<a moz-do-not-send="true" href="mailto:Cbc@list.coin-or.org" target="_blank">Cbc@list.coin-or.org</a>
<a moz-do-not-send="true" href="http://list.coin-or.org/mailman/listinfo/cbc" target="_blank">http://list.coin-or.org/mailman/listinfo/cbc</a>
</pre>
</div>
</blockquote>
<br>
</div>
<br>
_______________________________________________<br>
Cbc mailing list<br>
<a moz-do-not-send="true"
href="mailto:Cbc@list.coin-or.org"
target="_blank">Cbc@list.coin-or.org</a><br>
<a moz-do-not-send="true"
href="http://list.coin-or.org/mailman/listinfo/cbc"
target="_blank">http://list.coin-or.org/mailman/listinfo/cbc</a><br>
<br>
</blockquote>
</div>
</div>
</div>
<div>
<div class="h5"><br>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">Matthew Gidden<br>
Ph.D. Candidate, Nuclear Engineering
<div>The University of Wisconsin -- Madison<br>
Ph. <a moz-do-not-send="true"
href="tel:225.892.3192" value="+12258923192"
target="_blank">225.892.3192</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">Matthew Gidden<br>
Ph.D. Candidate, Nuclear Engineering
<div>The University of Wisconsin -- Madison<br>
Ph. 225.892.3192<br>
</div>
</div>
</div>
</blockquote>
<br>
</body>
</html>