<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">David,<br>
<br>
On 13/03/14 03:59, David Einstein wrote:<br>
</div>
<blockquote
cite="mid:CAHr4SdZ487h2+O95D0=n1OWxnQwGZNaBOFvLN2=Ng1n5FA-NEg@mail.gmail.com"
type="cite">
<meta http-equiv="Context-Type" content="text/html;
charset=ISO-8859-1">
<div dir="ltr">Thanks. I was doing the moral equivalent of button
mashing, having only the faintest memory of how Dantzig-Wolfe
worked, and no idea of its applicability. (also apologies for
posting this to Cbc instead of Clp)
<div>
<br>
</div>
<div>Running</div>
<div><br>
</div>
<div><span>clp KCMO.mps.bz2 -idiot 500 -primals</span><br>
</div>
<div><span><br>
</span></div>
<div><span>takes 44 minutes on my machine, about three times as
fast as the default (dual) computation.</span></div>
<div><span><br>
</span></div>
<div><span>If I want to do this with an instance of ClpSimplex,
the cpp dump says</span></div>
<div><span><br>
</span></div>
<div>
<p class=""> clpModel->setPerturbation(50);</p>
</div>
</div>
</blockquote>
You may need to set perturbation on <br>
<blockquote
cite="mid:CAHr4SdZ487h2+O95D0=n1OWxnQwGZNaBOFvLN2=Ng1n5FA-NEg@mail.gmail.com"
type="cite">
<div dir="ltr"><br>
<div>The options and extra info are mysterious.</div>
</div>
</blockquote>
ClpSolve.hpp gives hints - so setting options[1] says use idiot
with the associated extraInfo of 500<br>
<blockquote
cite="mid:CAHr4SdZ487h2+O95D0=n1OWxnQwGZNaBOFvLN2=Ng1n5FA-NEg@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><br>
</div>
<div>Would the following accomplish about the same thing?</div>
<div><br>
</div>
<div> ClpSolve clpSolve;</div>
<div> clpSolve.setPresolveType(ClpSolve::presolveOn, 5);</div>
<div> clpSolve.setSolveType(ClpSolve::usePrimalorSprint);</div>
<div> clpSolve.setSpecialOption(1,2,500);</div>
<div> clpModel->initialSolve(clpSolve);</div>
<div><br>
</div>
</div>
</blockquote>
Should be OK<br>
<blockquote
cite="mid:CAHr4SdZ487h2+O95D0=n1OWxnQwGZNaBOFvLN2=Ng1n5FA-NEg@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>That I can almost understand. I think.</div>
<div><br>
</div>
<div>Why is starting out with the barrier method entitled
'idiot'? I assume that 'idiot 500' does 500 interior point
steps before passing to the primal simplex.</div>
<div><br>
</div>
<div>Thank you again.</div>
</div>
<div class="gmail_extra"><br>
<br>
</div>
</blockquote>
"idiot" is not the barrier method but a cheap imitation - so bad
that I called it the Idiot algorithm and gave a bad talk on it years
ago - any bad heuristic followed by an algorithm is an algorithm.
The simplified basic idea is that you minimize mu*objective + sum of
squared primal infeasibilities. This is done on a very local basis
i.e. column by column where you just solve a quadratic to get new
value. Periodically you reduce mu. For many problems you finish
with a small sum of infeasibilities and an objective a bit higher
than the optimal one. You then finish with primal.<br>
<br>
John<br>
<br>
</body>
</html>