<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 style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12.666666984558105px">clp KCMO.mps.bz2 -idiot 500 -primals</span><br></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12.666666984558105px"><br>
</span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12.666666984558105px">takes 44 minutes on my machine, about three times as fast as the default (dual) computation.</span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12.666666984558105px"><br>
</span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12.666666984558105px">If I want to do this with an instance of ClpSimplex, the cpp dump says</span></div><div><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12.666666984558105px"><br>
</span></div><div>
<p class=""> clpModel->setPerturbation(50);</p>
<p class=""> ClpSolve::SolveType method = ClpSolve::usePrimalorSprint;</p>
<p class=""> ClpSolve::PresolveType presolveType = ClpSolve::presolveOn;</p>
<p class=""> int numberPasses = 5;</p>
<p class=""> int options[] = {0,2,0,1,0,0};</p>
<p class=""> int extraInfo[] = {-1,500,-1,-1,-1,-1};</p>
<p class=""> int independentOptions[] = {0,0,3};</p>
<p class=""> ClpSolve clpSolve(method,presolveType,numberPasses,</p>
<p class=""> options,extraInfo,independentOptions);</p></div><div>
<p class=""> clpModel->initialSolve(clpSolve);</p></div><div>The options and extra info are mysterious.</div><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>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 class="gmail_quote">On Wed, Mar 12, 2014 at 5:27 PM, John Forrest <span dir="ltr"><<a 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 text="#000000" bgcolor="#FFFFFF">
<div>David,<br>
<br>
With my trunk, I get further. I will use problem to try and make
DW more stable.<br>
<br>
However there are probably too many rows in master for DW to be
fastest algorithm.<br>
<br>
Straightforward Dual and Primal are both slow.<br>
<br>
Using barrier took 28 minutes elapsed (4-way) - could be faster if
I had used a different Cholesky.<br>
<br>
If you can bring yourself to type it in- try<br>
<br>
clp KCMO.mps.bz2 -idiot 500 -primals<br>
<br>
Took 20 minutes.<br>
<br>
John<div><div class="h5"><br>
<br>
<br>
On 11/03/14 23:35, David Einstein wrote:<br>
</div></div></div>
<blockquote type="cite"><div><div class="h5">
<div dir="ltr">
<div>I have a somewhat large model </div>
<div><br>
</div>
<div>Coin0002I Problem BLANK has 157974 rows, 667812 columns and
10181088 elements<br>
</div>
<div><br>
</div>
<div>available for the nonce at <a href="http://www.sdcorp.net/deinst/KCMO.mps.bz2" target="_blank">http://www.sdcorp.net/deinst/KCMO.mps.bz2</a></div>
<div><br>
</div>
<div>In an effort to get it solving faster with little to no
work on my part, I tried the Dantzig-Wolfe decomposition using
CoinStructuredModel (I fed the mps to the decomp2 example.)</div>
<div><br>
</div>
<div>
Kablooey.</div>
<div><br>
</div>
<div><br>
</div>
<div>#0 0x00000000006501d7 in CoinPackedMatrix::timesMinor
(this=0x4155200, x=0x0, </div>
<div> y=0x3d2dfa0) at
../../../coin-Cbc/CoinUtils/src/CoinPackedMatrix.cpp:1859</div>
<div>#1 0x000000000064cf27 in CoinPackedMatrix::transposeTimes
(this=0x4155200, </div>
<div> x=0x0, y=0x3d2dfa0)</div>
<div> at
../../../coin-Cbc/CoinUtils/src/CoinPackedMatrix.cpp:1156</div>
<div>#2 0x00000000004be126 in ClpSimplex::solveDW
(this=0x7fff89a70fc0, model=</div>
<div> 0x7fff89a70f20) at
../../../coin-Cbc/Clp/src/ClpSolve.cpp:4747</div>
<div>#3 0x00000000004ba07c in ClpSimplex::solve
(this=0x7fff89a70fc0, </div>
<div> model=0x7fff89a70f20) at
../../../coin-Cbc/Clp/src/ClpSolve.cpp:4034</div>
<div>#4 0x000000000040331c in main (argc=2,
argv=0x7fff89a71768)</div>
<div> at ../../../coin-Cbc/Clp/examples/decomp2.cpp:33</div>
<div><br>
</div>
<div><br>
</div>
<div>(If this code is not ready, ignore me).<br>
</div>
<div>
<br>
</div>
<div>Thanks,</div>
<div>Deinst</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
Cbc mailing list
<a href="mailto:Cbc@list.coin-or.org" target="_blank">Cbc@list.coin-or.org</a>
<a href="http://list.coin-or.org/mailman/listinfo/cbc" target="_blank">http://list.coin-or.org/mailman/listinfo/cbc</a>
</pre>
</blockquote>
<br>
</div>
<br>_______________________________________________<br>
Cbc mailing list<br>
<a href="mailto:Cbc@list.coin-or.org">Cbc@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/cbc" target="_blank">http://list.coin-or.org/mailman/listinfo/cbc</a><br>
<br></blockquote></div><br></div>