<div dir="ltr">For some problems BFGS performs much better than L-BFGS when the iteration count is large. I can put IPOPT in BFGS mode by setting limited_memory_max_history equal to max_iter. At some point, the iterations take excessively long (over two minutes for 40.000 variables). I think the culprit is the rank-1 updating of some decomposition of the system (13) in <a href="http://www.optimization-online.org/DB_FILE/2004/03/836.pdf">http://www.optimization-online.org/DB_FILE/2004/03/836.pdf</a><div><br></div><div>I wonder if there is a way to speed this up. Here are some considerations:</div><div><br></div><div>The decomposition has to be done from scratch each iteration, since the dual variables change. There could be some speed-up from storing the decomposition for the objective. For k constraints this saves at most 100/(k+1)% of the time.<br></div><div><br></div><div><div>A different approach is to store the Hessian approximation in dense format for each of the constraints and for the objective. This takes a significant amount of memory (12.5 GB per matrix of 40.000x40.000). The work per iteration is a rank 1 update and a scaled sum of those large matrices, followed by solving the system (13). The most efficient way to solve (13) is to first eliminate the second block row, after which a positive semidefinite system remains. Solving that system takes time of the order of two minutes, so there is not much benefit.</div></div><div><br></div><div>Does anyone have other ideas?</div></div>