<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. &nbsp;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="">&nbsp;&nbsp;clpModel-&gt;setPerturbation(50);</p>
        </div>
      </div>
    </blockquote>
    &nbsp; &nbsp;&nbsp; You may need to set perturbation on&nbsp; &nbsp; <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>
    &nbsp;&nbsp;&nbsp; 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>&nbsp; ClpSolve clpSolve;</div>
        <div>&nbsp; clpSolve.setPresolveType(ClpSolve::presolveOn, 5);</div>
        <div>&nbsp; clpSolve.setSolveType(ClpSolve::usePrimalorSprint);</div>
        <div>&nbsp; clpSolve.setSpecialOption(1,2,500);</div>
        <div>&nbsp; clpModel-&gt;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'? &nbsp;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.&nbsp;
    The simplified basic idea is that you minimize mu*objective + sum of
    squared primal infeasibilities.&nbsp; This is done on a very local basis
    i.e. column by column where you just solve a quadratic to get new
    value.&nbsp; Periodically you reduce mu.&nbsp; For many problems you finish
    with a small sum of infeasibilities and an objective a bit higher
    than the optimal one.&nbsp; You then finish with primal.<br>
    <br>
    John<br>
    <br>
  </body>
</html>