[Ipopt] Size of double precision work space too small

Andreas Waechter andreasw at watson.ibm.com
Mon Apr 28 21:02:18 EDT 2008


Hi Xiaoming,

The Fortran version of Ipopt is no longer maintained.  I suggest you 
switch to the newer C++ version, which also has a Fortran interface if you 
prefer that.  With that, memory management is completely different and 
transparent to the user.

Regards,

Andreas

On Mon, 14 Apr 2008, Xiaoming Yu wrote:

> Hi Dr. Wachter :
>
> 1) I am using IPOPT version 2.2.1e (FORTRAN).
>
> estimated double precision work space requirement =       617084
> estimated integer work space requirement          =      1168269
>
> I gave
>      LIW  =     50000000
>      LRW =     100000000
>
> As you can see LIW >> LIWe and LRW >>LRWe. However, I still have
>
>
> An error occoured after            0  Iterations.
> The error code is           98
>
> EXIT: Size of double precision work space too small
>
> I defined :
>
>      NARGS = 6
>      ARGS(1) = 1.d-3
>      CARGS(1) = 'dtol'
>      ARGS(2) = 10
>      CARGS(2) = 'iprint'
>      ARGS(3) = 1
>      CARGS(3) = 'ifile'
>      ARGS(4) = 6
>      CARGS(4) = 'IQUASI'
>      ARGS(5) = 50
>      CARGS(5) = 'IMAXITER'
>      ARGS(6) = 1.1D0
>      CARGS(6) = 'DFILLINFACT'
>
> The problem size is ( 153 design variables with lower and upper bounds,
> and 469 inequality constraints) :
> Number of variables           :      622
>   of which are fixed         :        0
> Number of constraints         :      469
> Number of lower bounds        :      153
> Number of upper bounds        :      622
> init_mem: After CONSTR LRS_END =       583436 LIS_END =       583436
> Number of nonzeros in Jacobian:   291718 (full dense)
> init_mem: After MAINLOOP LRS_END =       609161 LIS_END =       583436
> init_mem: After FILTER LRS_END =       617194 LIS_END =       583436
> init_mem: After RESTO_FILTER LRS_END =       647739 LIS_END =
> 583436
> init_mem: After RESTO_TRON LRS_END =       647739 LIS_END =
> 583436
> init_mem: After GET_STEP_FULL LRS_END =       647739 LIS_END =
> 1172327
> init_mem: After OPTERROR LRS_END =       647739 LIS_END =      1172327
> init_mem: After GET_HV =       647739 LIS_END =      1172327
> |grad F|_max = 0.11D+02
> get_scale: |g|_inf =    10.7422475814819
> get_scale: QFSCALE =    1.00000000000000
> get_scale: smallest CSCALE =   0.243789316867635
>
> My question is : (1) Why is the estimated space too small? (2) MAT27 (or
> linear system solver) is the key for the memory requirement? (3) The C++
> version IPOPT requires less memory than the FORTRAN version?
>
> Thanks,
>
> Xiaoming
>
>
>
>
> -----Original Message-----
> From: ipopt-bounces at list.coin-or.org
> [mailto:ipopt-bounces at list.coin-or.org] On Behalf Of Sebastian Nowozin
> Sent: Sunday, April 13, 2008 4:42 AM
> To: Stefan Vigerske
> Cc: ipopt at list.coin-or.org
> Subject: Re: [Ipopt] Best and free way of interacting with IPOPT on
> Linux
>
> On Sun, Apr 13, 2008 at 12:42 PM, Stefan Vigerske <stefan at vigerske.de>
> wrote:
>
>>  As far as I know, there are several interfaces available:
>>  - C, C++, Fortran
>>  - Java
>>  - Matlab
>>  - AMPL, GAMS
>
>> [...]
>>  Also the Java and Matlab interfaces I have never tried, but they also
>>  require you to implement derivative evaluation methods. It might also
> be
>>  that the communication between the Java or Matlab world on the one
> side
>>  and the C++ world on the Ipopt side has an impact on the efficiency.
>>  With the AMPL and GAMS interfaces specification of the model is more
>>  convenient, but they might not fit into the "free" category. Even
> though
>>  the interfaces are for free, the compiler for the algebraic model to
> an
>>  instance that the interface can understand is not free for larger
>>  models. Note that Ipopt is also included the GAMS distribution.
>
> The Matlab interface is great and works like a charm (thanks to
> Peter), I have used it often in the last few months.  However, usually
> it is not the most efficient because all the different computations
> are split up across functions (computeObjective, computeGradient,
> computeJacobian, computeHessian).  For most problems I have worked
> with you could do this calculation more efficiently if you could
> calculate them together.  As Matlab's function interface is strictly
> functional (i.e. no side effects), this is not possible with the
> current interface, except by using hacks such as global variables and
> checking if recomputation is necessary.
>
> Sebastian
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>


More information about the Ipopt mailing list