[Coin-ipopt] RE: partition of variables

Andreas Waechter andreasw at watson.ibm.com
Tue Dec 10 01:58:26 EST 2002

Hi Samuli,

> I was happy to notice in the mailing list that a version of IPOPT with
> limited memory BFGS is now available. I downloaded it and tried to
> familiarize myself with the new option by solving a relatively small
> problem. However, there were some difficulties.
> In the beginning of update_b_lm, you write that the required total length
> for B is 2+2*N+NLMMAX*(1+4*N+2*NLMMAX). However, in subroutines
> solve_barrier and get_step_full the length of B is (NIND*(NIND+1))/2. In
> get_step_full, when LMBACKSOLVE is called there is parameter B(pb_vk+1).
> This index pb_vk+1 seems to exceed (NIND*(NIND+1))/2.

Thanks for letting me know about this point.  It is not really a problem,
since in both get_step_full and solve_barrier, the length of the array B
is not determined in that declaration (since B is an argument), but
instead its real length is determined in mainloop (where the correct
amount of memory is reserved in the real work space).  I assume you ran
into a problem when you were using the array boundary checking option of
your compiler, which uses those array length in get_step_full etc. to
check if the array boundaries are exceeded inside the subroutine.

I changed the length of the array B in those routines to '*', so it should
work for you now, also with the array boundary checking option.  The new
version is available now in the CVS repository, and will be in tomorrow's

By the way, I also implemented the warm start option for L-BFGS
(remembering that you asked me about it for the other quasi-Newton

> By the way, could you tell me if there is a rule of thumb when to use
> reduced space and when full space approach?

At this point I would think, that in most cases the full space approach
will probably work the best, particularly if you have exact second
derivatives, and now also even if you only have first derivatives (using
L-BFGS).  One thing that you don't have to worry about in the full-space
version is the basis selection, which can be a tricky issue...

If you have different experiences, I would be very interested to hear
about it!

I hope this helps,


More information about the Coin-ipopt mailing list