[Coin-ipopt] reducing memory requirement (IERR=96)

Andreas Waechter andreasw at watson.ibm.com
Fri May 21 15:13:43 EDT 2004


Hi Jeff,

Thanks for your question!  I'm glad to hear you are actually USING Ipopt
:)

I'm cc-ing my response to the coin-ipopt mailing list, since others might
face the same question regarding running out of memory using Ipopt.

> The short version:
>
> Is there an AMPL option that may reduce the necessary memory usage for
> IPOPT?
>
> The long version:
>
> I am running a (fairly big) NLP using IPOPT/AMPL.
> I get the following output:
>
> ipopt 2.2.1a:
> ******************************************************************************
> This program contains IPOPT, a program for large-scale nonlinear
> optimization.
>    IPOPT is released as open source under the Common Public License
> (CPL).
>                For more information visit www.coin-or.org/Ipopt
> ******************************************************************************
>
> Number of variables           :   294653
>    of which are fixed         :        0
> Number of constraints         :   195223
> Number of lower bounds        :   201759
> Number of upper bounds        :    67074
> Number of nonzeros in Jacobian:  1000101
> Number of nonzeros in Hessian :    59160
>
> ITER     ERR       MU      ||C||    ||D||   ALFA(X) #LS        F
> Regu
>     0 .524E+08c .100E+00 .347E+03 .000E+00 .000E+00   0 0.10133994E+00
> .000E+00
>  get_step_full: IP_MALLOC returned  -1 for KKT
>  solve_barrier: get_step_full returns IERR =  96
>  mainloop: Error: solve_barrier ends with IERR =  96
>
> Number of iterations taken .............                      0
> Final value of objective function is.... 0.1013399369560513E+00
>
> Errors at final point                      (scaled)       (unscaled)
> Final maximal constraint violation is... 0.690987E+02    0.170000E+03
> Final value for dual infeasibility is... 0.999990E+00    0.999990E+00
> Final value of complementarity error is. 0.524332E+08    0.524332E+08
>
> The objective function was evaluated      1 times.
> The constraints were evaluated            1 times.
>
> EXIT: Error during dynamic memory allocation
>
> CPU seconds spent in IPOPT and function evaluations =        289.9900
>
> IPOPT variables                       = 294653
> IPOPT constraints                     = 195223
> Exit code                             = 96
> ipopt 2.2.1a: Exit code 96. Check IPOPT output for details.

There is an option is IPOPT that you might want to try.  The name of the
option is 'dfillinfact', and it is used by IPOPT to estimate how much
memory the linear solver (MA27 in your case) will need.  MA27 actually
returns such an estimate, but that estimate is often too small, so that
IPOPT lateron has to try larger values (and do another trial factorization
every time!), which can be very time consuming.

By default, the value of dfillinfact is 5, but you can try smaller values
(such as 1 or 1.2 or 2 or so...).  dfillinfact has to be at least 1.

I just made a change to IPOPT and released version 2.2.1b, which allows
you to set this option from AMPL - this was not possible before.  (Until
now, one had to use the PARAMS.DAT file...)

The new version will be in tomorrow's tarball, and it is already available
via CVS.  Your local copy is already updated.

I hope this helps,

Andreas




More information about the Coin-ipopt mailing list