<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        color:black;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";
        color:black;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1460952290;
        mso-list-type:hybrid;
        mso-list-template-ids:2119571336 336134161 336134169 336134171 336134159 336134169 336134171 336134159 336134169 336134171;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi John, thanks for the speedy reply and answers below.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Still playing with Mumps and I think I have found a bug in the Cholesky code. I have attached my source code (nice and brief) and a linear mps model from netlib, with screenshot below:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><img width=912 height=776 id="Picture_x0020_1" src="cid:image001.png@01CE45AF.CA39C4E0"></span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Basically when deleting the array permuteInverse_ (after solving) it is causing an error in free (from Microsoft’s CRT), as it appears permuteInverse_ has an address of NULL. This only happens when using Mumps as the Cholesky code and only some models (but it is significantly faster than the default ClpCholeskyBase code – so it would be nice to use!).<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Also, a couple more questions to throw in the mix:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>When using the Simplex solver you can set the factorization frequency and whether or not to use a sparse factorization. Is the factorization mentioned in these options using the same Cholesky code / interface as the interior point solver? If so, is it possible to set the Cholesky to use Mumps? I can only find the required method in ClpInterior.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>2)<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I have been unable to get the event handler to work for ClpInterior. In the attached code I would expect it to quit solving as soon as the first event is hit (i.e. straight away?), as this is the behaviour in the ClpSimplex solver. However it seems to ignore my return 5… is a different status code required for the interior solver?<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>3)<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Is it possible to set an initial guess of the primal decision variables (x0 – or maybe even dual variables too?) for either the Simplex or Interior solvers?<o:p></o:p></span></p><p class=MsoListParagraph><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>4)<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I see when I use the barrier solver via the Clp executable (ClpMain.cpp) on a QP it performs a presolve, however in examples/testBarrier.cpp it says ‘note this does not have a presolve’. Can you point me to an example on how to use the presolver using the ClpInterior object? <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Thanks again!<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Jonathan<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>p.s. I am using Clp 1.15.0 and Mumps 4.10.0, both 32 bit builds using VC++ 2012 and Intel Fortran XE 2013, and the Mumps build is a sequential build linked against Intel MKL.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> clp-bounces@list.coin-or.org [mailto:clp-bounces@list.coin-or.org] <b>On Behalf Of </b>John Forrest<br><b>Sent:</b> Tuesday, 30 April 2013 12:53 a.m.<br><b>To:</b> clp@list.coin-or.org<br><b>Subject:</b> Re: [Clp] Cholesky with Mumps and QPs + ABC<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Jonathan,<br><br>A "Few" questions -:) - answers not so simple<br><br>On 29/04/13 10:41, Jonathan Currie wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Hi,<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I have been updating my MATLAB interface (<a href="http://www.i2c2.aut.ac.nz/Wiki/OPTI/">http://www.i2c2.aut.ac.nz/Wiki/OPTI/</a>) to Clp to support most of the options, together with experimenting with the interior point solver and various Cholesky options for Window’s users.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I had a few questions I can’t seem to find answers for in the code (or in the user’s guide) if anyone could help!<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoListParagraph>1) If I create a ClpSimplex object (simplex), load an LP into it using loadProblem(..), then do the following, what algorithm is being called? I presume it is the interior point…<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>ClpSolve options;<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>options.setSolveType(ClpSolve::useBarrier);<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>simplex.initialSolve(options);<o:p></o:p></p></div></blockquote><p class=MsoNormal>Yes Interior point using home-grown cholesky<br><br><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoListParagraph>2) How does the ClpSolve::automatic mode work (using similar code as the above)?<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><p class=MsoNormal>automatic is only choosing between dual and various forms of crash+primal. It will never choose interior point.<br><br><o:p></o:p></p><div><p class=MsoListParagraph>3) If I create a ClpInterior object (interior), load a QP into it using loadProblem(..) and loadQuadraticObjective(..), then call interior.primalDual(), which Cholesky factorization code is being used? I.e. I have not specified it anywhere, I have not added any COIN_HAS_MUMPS etc defines, and my problem is typically large and sparse.<o:p></o:p></p><p class=MsoListParagraph> <o:p></o:p></p></div><p class=MsoNormal>If you just do that you will get<br>Clp6005E Quadratic barrier needs a KKT factorization<br><br> ClpCholeskyBase * cholesky = new ClpCholeskyBase();<br> cholesky->setKKT(true);<br> interior.setCholesky(cholesky);<br><br>will work using home-grown cholesky.<br><br><o:p></o:p></p><div><p class=MsoListParagraph>4) I have access to the Mumps solver (sequential version) on Windows, and would like to use it with Clp. However when I try and use it with the interior point solver and a QP I get the message “Quadratic Barrier needs a KKT factorization”. My first guess was to do the following:<o:p></o:p></p><p class=MsoListParagraph> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>ClpCholeskyMumps clpMumps;<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>clpMumps.setKKT(true);<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>interior.setCholesky(&clpMumps);<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>However using my MATLAB interface it promptly crashes when trying to solve the model. I see in the source files only Wssmp has a KKT suffix header file, is this the only Cholesky code setup to solve the KKT system of a QP with the barrier (interior) solver?<o:p></o:p></p></div><p class=MsoNormal>Have not used Mumps for a long time - will get back to you<br><br><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoListParagraph>5) If I solve LPs using the barrier solver and sequential Mumps, will I still expect (in general – for sparse problems) to see a speedup over the CholeskyBase / CholeskyDense implementations supplied with Clp?<o:p></o:p></p></div><p class=MsoNormal>Without Cilk home-grown cholesky is sequential so yes. With cilk the dense part goes parallel (as it is a nice easy case for cilk)<br><br><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoListParagraph>6) I have bought Intel Parallel Studio XE and therefore have access to the Cilk libraries and would like to try using ABC for solving LPs (and QPs?) in parallel. However I cannot find any examples…. Is it as simple as replacing ClpSimplex with AbcSimplex, or is there a bit more to it? I have not managed to compile the Abc part of Clp yet, so not quite at a point to jump in and experiment.<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><p class=MsoNormal>In configure add --enable-aboca=4<br><br>Abc is only simplex (but you do get the cilk bit of cholesky as mentioned above) - no QP at present.<br><br>If using initialSolve then add <br>simplex.setAbcState(4) or (8) to partition work into 4/8 chunks. Cilk will use it's default number of workers - unless you override. On my laptop that is 4 as I have hyperthreading turned off.<br><br>Will get back to you on Mumps.<br><br>John Forrest<br><br><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Thanks for any help!<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US>JONATHAN CURRIE </span>[BE Hons]<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>LECTURER<br>ELECTRICAL & ELECTRONIC ENGINEERING<br>AUT UNIVERSITY<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><br>ph: (+64) 09 921 9999 x6608 <span lang=EN-US>|</span> mob: (+64) 021 550 483 <span lang=EN-US>|</span> web: <a href="http://www.i2c2.aut.ac.nz/">www.i2c2.aut.ac.nz</a><br>INDUSTRIAL INFORMATION & CONTROL CENTRE <span lang=EN-US>| AUCKLAND | NEW ZEALAND</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><p class=MsoNormal><br><br><br><o:p></o:p></p><pre>_______________________________________________<o:p></o:p></pre><pre>Clp mailing list<o:p></o:p></pre><pre><a href="mailto:Clp@list.coin-or.org">Clp@list.coin-or.org</a><o:p></o:p></pre><pre><a href="http://list.coin-or.org/mailman/listinfo/clp">http://list.coin-or.org/mailman/listinfo/clp</a><o:p></o:p></pre><p class=MsoNormal><o:p> </o:p></p></div></body></html>