<div dir="ltr">Thanks, if you have a block matrix X = [H A; A&#39; I], then theĀ <span style="font-family:arial,sans-serif;font-size:13px">Sherman-Morrison formula can be used for rank-1 updates to H: [H+VV&#39; A; A&#39; I] = [H A; A&#39; I] + WW&#39; with W=[V;0].</span><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">I still wonder why IPOPT uses matrix inversion instead of cholesky or LU factorization. I have read that the cholesky factorization is numerically better, but can&#39;t find where anymore.</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 12, 2014 at 2:41 PM, Ian Washington <span dir="ltr">&lt;<a href="mailto:washinid@mcmaster.ca" target="_blank">washinid@mcmaster.ca</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I&#39;m no expert on the implementation/logic details, but the there seems<br>
to be some description of the details on pgs 102 to 109 from Larry<br>
Biegler&#39;s book on nonlinear programming --&gt;<br>
<a href="http://epubs.siam.org/doi/book/10.1137/1.9780898719383" target="_blank">http://epubs.siam.org/doi/book/10.1137/1.9780898719383</a><br>
<br>
Ian.<br>
<div><div class="h5"><br>
On 11/12/2014 02:10 PM, Ipopt User wrote:<br>
&gt; The quasi-newton method in IPOPT is not described in any publication as far<br>
&gt; as I can tell. I am trying to understand its specifics, especially how it<br>
&gt; exploits the low rank of the Hessian to solve system (13) in<br>
&gt; <a href="http://www.optimization-online.org/DB_FILE/2004/03/836.pdf" target="_blank">http://www.optimization-online.org/DB_FILE/2004/03/836.pdf</a><br>
&gt;<br>
&gt; The best starting point to gain insight is by looking at the changes in the<br>
&gt; code when the quasi-newton method was added:<br>
&gt; <a href="https://projects.coin-or.org/Ipopt/changeset?old=607&amp;old_path=&amp;new=608&amp;new_path=" target="_blank">https://projects.coin-or.org/Ipopt/changeset?old=607&amp;old_path=&amp;new=608&amp;new_path=</a><br>
&gt;<br>
&gt; I think the main logic is in these two files:<br>
&gt; <a href="https://projects.coin-or.org/Ipopt/browser/branches/dev/LinAlg/IpLowRankUpdateSymMatrix.cpp?rev=608" target="_blank">https://projects.coin-or.org/Ipopt/browser/branches/dev/LinAlg/IpLowRankUpdateSymMatrix.cpp?rev=608</a><br>
&gt; <a href="https://projects.coin-or.org/Ipopt/browser/branches/dev/Algorithm/IpLowRankAugSystemSolver.cpp?rev=608" target="_blank">https://projects.coin-or.org/Ipopt/browser/branches/dev/Algorithm/IpLowRankAugSystemSolver.cpp?rev=608</a><br>
&gt;<br>
&gt; In the latter file, it seems as the Sherman-Morrison formula is used (line<br>
&gt; 152), but I don&#39;t see where. I also don&#39;t see how the inverse of W_k could<br>
&gt; make solving (13) easier. Why is the inverse of the Hessian used (I<br>
&gt; remember reading that a cholesky factorization is numerically superior<br>
&gt; while SNOPT uses LU factorization)? I&#39;m not looking for a full explanation,<br>
&gt; but a few hints would be greatly appreciated, thanks.<br>
&gt;<br>
&gt;<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; Ipopt mailing list<br>
&gt; <a href="mailto:Ipopt@list.coin-or.org">Ipopt@list.coin-or.org</a><br>
&gt; <a href="http://list.coin-or.org/mailman/listinfo/ipopt" target="_blank">http://list.coin-or.org/mailman/listinfo/ipopt</a><br>
&gt;<br>
<br>
_______________________________________________<br>
Ipopt mailing list<br>
<a href="mailto:Ipopt@list.coin-or.org">Ipopt@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/ipopt" target="_blank">http://list.coin-or.org/mailman/listinfo/ipopt</a><br>
</blockquote></div><br></div>