<div dir="ltr">Thanks, if you have a block matrix X = [H A; A' 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' A; A' I] = [H A; A' I] + WW' 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'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"><<a href="mailto:washinid@mcmaster.ca" target="_blank">washinid@mcmaster.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'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's book on nonlinear programming --><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>
> The quasi-newton method in IPOPT is not described in any publication as far<br>
> as I can tell. I am trying to understand its specifics, especially how it<br>
> exploits the low rank of the Hessian to solve system (13) in<br>
> <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>
><br>
> The best starting point to gain insight is by looking at the changes in the<br>
> code when the quasi-newton method was added:<br>
> <a href="https://projects.coin-or.org/Ipopt/changeset?old=607&old_path=&new=608&new_path=" target="_blank">https://projects.coin-or.org/Ipopt/changeset?old=607&old_path=&new=608&new_path=</a><br>
><br>
> I think the main logic is in these two files:<br>
> <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>
> <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>
><br>
> In the latter file, it seems as the Sherman-Morrison formula is used (line<br>
> 152), but I don't see where. I also don't see how the inverse of W_k could<br>
> make solving (13) easier. Why is the inverse of the Hessian used (I<br>
> remember reading that a cholesky factorization is numerically superior<br>
> while SNOPT uses LU factorization)? I'm not looking for a full explanation,<br>
> but a few hints would be greatly appreciated, thanks.<br>
><br>
><br>
><br>
</div></div>> _______________________________________________<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>
><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>